elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 23:43  


Tema destacado: Grupo de Facebook de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  ASM en VB6 [Respuesta a Myserik]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ASM en VB6 [Respuesta a Myserik]  (Leído 1,039 veces)
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.831


I'Love...!¡.


Ver Perfil WWW
ASM en VB6 [Respuesta a Myserik]
« en: 9 Junio 2011, 09:17 »

.
el código lo pongo publico ya que a mas de a uno le interese a la larga, no soy experto en ASM pero bueno.

Código
 
Option Explicit
 
Private Declare Function LoadLibrary Lib "kernel32.dll" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32.dll" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function CallWindowProc Lib "USER32" Alias "CallWindowProcW" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
 
Private Sub form_load()
Dim bASM(0 To 27)           As Byte
Dim i                       As Integer
Dim sMsg                    As String
Dim sTitulo                 As String
 
   sMsg = "Hola Mundo"
   sTitulo = "Titulo de un msgbox"
 
   '   Cada Instruccion pesa {1 Bytes} y el numero de "_" son la cantidad de bytes esperados habitualmente si son 4 es que sea normalmente un puntero, pero eso depende del formato de la instruccion.
   '   Para informacion de los OpCodes:
   '   //  http://ref.x86asm.net/geek.html
   '   PUSH ____
   '   PUSH ____
   '   PUSH ____
   '   PUSH ____
   '   MOV EAX, ____
   '   CALL EAX
   '   RET
   i = 0
   bASM(i) = &H68: i = LongToByte(vbYesNoCancel, bASM(), i + 1)    ' PUSH {vbYesNoCancel}      5 bytes ( 1(&H68) + long(vbYesNoCancel) ).
   bASM(i) = &H68: i = LongToByte(StrPtr(sTitulo), bASM(), i + 1)  ' PUSH {StrPtr(sTitulo)}    5 bytes ( 1(&H68) + long(StrPtr(sTitulo)) )..
   bASM(i) = &H68: i = LongToByte(StrPtr(sMsg), bASM(), i + 1)     ' PUSH {StrPtr(sMsg)}       5 bytes ( 1(&H68) + long(StrPtr(sMsg)) )..
   bASM(i) = &H68: i = LongToByte(&H0, bASM(), i + 1)              ' PUSH {&H0}                5 bytes ( 1(&H68) + long(&H0) )..
   
   ' MOV {EAX},{LongToByte(GetProcAddress(LoadLibrary("user32.dll"), "MessageBoxW")}
   bASM(i) = &HB8: i = LongToByte(GetProcAddress(LoadLibrary("user32.dll"), "MessageBoxW"), bASM(), i + 1) ' 5 bytes
   bASM(i) = &HFF: i = i + 1 ' CALL ___    1 bytes
   bASM(i) = &HD0: i = i + 1 ' EAX         1 bytes
   bASM(i) = &HC3: i = i + 1 ' RET         1 bytes
   MsgBox CallWindowProc(ByVal VarPtr(bASM(0)), 0&, 0&, 0&, 0&)    ' Run ASM
End Sub
 
Private Function LongToByte(ByVal lLong As Long, ByRef bReturn() As Byte, Optional i As Integer = 0) As Long
   bReturn(i) = lLong And &HFF
   bReturn(i + 1) = (lLong And &HFF00&) \ &H100
   bReturn(i + 2) = (lLong And &HFF0000) \ &H10000
   bReturn(i + 3) = (lLong And &HFF000000) \ &H1000000
   LongToByte = i + 4
End Function
 
 

Dulces Lunas!¡.


« Última modificación: 9 Junio 2011, 09:58 por BlackZeroX▓▓▒▒░░ » En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.831


I'Love...!¡.


Ver Perfil WWW
Re: ASM en VB6 [Respuesta a Myserik]
« Respuesta #1 en: 9 Junio 2011, 09:58 »

.
Solo agrego lo siguiente.

Código
 
   '   Cada Instruccion pesa {1 Bytes} y el numero de "_" son la cantidad de bytes esperados habitualmente si son 4 es que sea normalmente un puntero, pero eso depende del formato de la instruccion.
   '   Para informacion de los OpCodes:
   '   //  http://ref.x86asm.net/geek.html
   '   PUSH ____
   '   PUSH ____
   '   PUSH ____
   '   PUSH ____
   '   MOV EAX, ____
   '   CALL EAX
   '   RET

 

Dulces Lunas!¡.


En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
raul338
Moderador
***
Desconectado Desconectado

Mensajes: 2.371


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: ASM en VB6 [Respuesta a Myserik]
« Respuesta #2 en: 9 Junio 2011, 14:34 »

Al menos podrias poner un link al tema de donde venia (si es que no fue para revivirlo) para asi todos podamos entender de que se trataba :P
En línea

Miseryk

Desconectado Desconectado

Mensajes: 59


Ver Perfil
Re: ASM en VB6 [Respuesta a Myserik]
« Respuesta #3 en: 11 Junio 2011, 15:25 »

:D:D:D gracias, lo había pensado así pero no agregar al array el GetProc, a veces la respuesta suele ser como uno la piensa :P. Gracias (Y)(Y)(Y)
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
respuesta
Análisis y Diseño de Malware
djed153 3 358 Último mensaje 27 Noviembre 2004, 10:25
por hIgOcHuMbO
respuesta
Bugs y Exploits
Luisrubengb 6 1,066 Último mensaje 23 Mayo 2005, 19:54
por Luisrubengb
no hay respuesta
Windows
md_surgeon 2 404 Último mensaje 16 Enero 2008, 02:07
por Novlucker
Respuesta del Año
Foro Libre
[ Alberto] 13 1,227 Último mensaje 28 Noviembre 2008, 23:14
por [ Alberto]
Una respuesta
Hardware
fran006 4 1,043 Último mensaje 7 Diciembre 2009, 21:21
por fran006
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines