Inyección de DLL (Basic)

Iniciado por calk9, 4 Septiembre 2011, 23:23 PM

0 Miembros y 1 Visitante están viendo este tema.

calk9

Buenas os molesto nuevamente debido a que tengo una inquietud. He creado una dll normal con el tutorial de elGuille en Basic, e intento inyectarla y ejecutar una función con Cheat Engine, a un proceso. El tema es que se inyecta correctamente pero al ejecutar una función, en este caso "Saludo()" tira un error de "Enviar - No Enviar" y el proceso inyectado se cierra.

He aquí el código de mi DLL. Cabe aclarar que el Linker fue modificado para poder generar DLL normales.

'
' ©Guillermo 'guille' Som, 2006
'------------------------------------------------------------------------------
Option Explicit

Public Const DLL_PROCESS_DETACH = 0
Public Const DLL_PROCESS_ATTACH = 1
Public Const DLL_THREAD_ATTACH = 2
Public Const DLL_THREAD_DETACH = 3

Public Function Saludo()
    MsgBox ("DLL en VB")
End Function

Public Function Suma(ByVal n1 As Double, ByVal n2 As Double) As Double
    Suma = n1 + n2
End Function


'
Public Function DllMain(hInst As Long, fdwReason As Long, lpvReserved As Long) As Boolean
   Select Case fdwReason
      Case DLL_PROCESS_DETACH
         ' No per-process cleanup needed
      Case DLL_PROCESS_ATTACH
            DllMain = True
      Case DLL_THREAD_ATTACH
'         ' No per-thread initialization needed
      Case DLL_THREAD_DETACH
'         ' No per-thread cleanup needed
   End Select
End Function


La única función que necesito es la de "Saludo()"

También he aquí el archivo .DEF de la DLL correspondiente:

NAME PruebaINY
LIBRARY PruebaINY
DESCRIPTION "Prueba de DLL creada con VB6"
EXPORTS Saludo @1
        Suma @2
        DllMain @3


Gracias, saludos.

BlackZeroX

#1
No entiendo el porque te han movido este tema de VB6 a malware cuando no se trata de ninguna manera de ello, aun asi, como la inyectas que metodo usas?.

Edito:

No uses Msgbox, usa un el api MessageBoxW/A declarada en una TLB he incluyela en el proyecto, la dll normal tengo entendido que no es propia de vb6 por ende en la modificacion del linker se quita la dependencia de vb6, seguro te crashea por el MsgBox... igual y me equivoco pero no esta de mas probar.

Dulces Lunas!¡.
The Dark Shadow is my passion.

calk9

#2
Buenas, gracias por responder. Tampoco entiendo porque me han movido esto. Pero aún así respondo a tu pregunta.

La DLL la inyecto con el Cheat Engine 6.0, selecciono el proceso > Memory View > Tools > Inject DLL. Al seleccionar la DLL me pregunta si deseo ejecutar una función de la misma. Por lo tanto le digo que si. Elijo el "Saludo()" pero sucede lo explicado anteriormente (Enviar - No Enviar). Aclaro también, que he intentado ejecutar funciones las cuales hacen un hook pero también se cierra. Fue lo primero que intenté, pero me dije "antes de empezar haciendo un hook, empiezo con algo simple como un MsgBox".

P.D: http://www.elguille.info/vb/avanzado/crear_dll_windows_con_vb6_explicado.htm

Edito: En el Visor de API solo he encontrado MessageBox, MessageBoxEx y MessageBoxIndirect.

BlackZeroX

.
usa MessageBox() ( realmente son 2 variantes Ansi y Unicole es decir A y W )... te das cuenta en el Alias... xP

Dulces Lunas!¡.
The Dark Shadow is my passion.

calk9

Hola, gracias, me ha funcionado a la perfección! Pero luego de ejecutar la función correctamente, crea el messagebox, pero unos segundos despues vuelve el mismo error de "Enviar - No Enviar". Alguna sugerencia?