elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Ayuda[Loadlibrary] Cargar apis sin declararlas.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda[Loadlibrary] Cargar apis sin declararlas.  (Leído 5,254 veces)
The Swash

Desconectado Desconectado

Mensajes: 194


Programmer


Ver Perfil WWW
Ayuda[Loadlibrary] Cargar apis sin declararlas.
« en: 29 Enero 2010, 17:40 pm »

Bueno amigos, sin mas remedio creo que tengo que acudir a su ayuda resulta que de casualidad busque y me tope con esta api que puede cargar junto a otras 2 apis una api sin declararla. Cual es mi problema? mi problema es que no sabria como cargar una api que tenga mas parametros que los de callwindowProc.

Este es un ejemplo funcionando
Código:
Option Explicit
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Any, ByVal wParam As Any, ByVal lParam As Any) As Long
 Const MB_ICONEXCLAMATION = &H30&
Private Sub Form_load()
 Dim hRet As Long
  hRet = GetProcAddress(LoadLibrary("user32"), "MessageBoxW")
   If hRet > 0 Then
    CallWindowProc hRet, Me.hWnd, ByVal StrPtr("xD"), StrPtr(App.Title), MB_ICONEXCLAMATION
   End If
End Sub

Ahora por ejemplo quisiera trabajar con URLDownloadToFile pero explota la APP, quien tenga idea le agradezco..


En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Ayuda[Loadlibrary] Cargar apis sin declararlas.
« Respuesta #1 en: 29 Enero 2010, 17:50 pm »

El problema que tienes es que URLDownloadToFile requiere 5 parametros y solo le pasas, 4, cuando intente leer el 5º hay muchas posibilidades de que falle...

Fijate en algun CallAPIByName y veras lo que hacen :P Usan codigo en ASM para pushear tantos parametros como sea necesario...

Podrias meter el codigo en ASM que pusheara los parametros necesarios en un bytearray y luego cargarlo con CallWindowProc...

Ahora luego pongo un ejemplo ;)


En línea

The Swash

Desconectado Desconectado

Mensajes: 194


Programmer


Ver Perfil WWW
Re: Ayuda[Loadlibrary] Cargar apis sin declararlas.
« Respuesta #2 en: 1 Febrero 2010, 16:13 pm »

Gracias por su respuesta Dr. Karcrack, de acuerdo a lo que dice tiene compelta razon, usan Asm para parchar los parametros adicionales o faltantes.

Googleando encontre un source que ya tenia mi idea xP me ganaron hace un par de años

Aqui se los dejo y espero les sirve, creditos no son mios OpenSC
Código:
http://www.sendspace.com/file/he7h1z
En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Ayuda[Loadlibrary] Cargar apis sin declararlas.
« Respuesta #3 en: 1 Febrero 2010, 17:31 pm »

Este es el ejemplo que te dije :xD
Código
  1. Option Explicit
  2. 'KERNEL32
  3. Private Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
  4. 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
  5.  
  6. Public Function Invoke(ByVal lpCode As Long, ParamArray vParams() As Variant) As Long
  7.    Dim i           As Long
  8.    Dim lPtr        As Long
  9.    Dim bvASM(&HFF) As Long
  10.  
  11.    lPtr = VarPtr(bvASM(&H0))
  12.  
  13.    Call AddByte(&H58, lPtr)                    '//POP EAX
  14.    Call AddLong(&H59595959, lPtr)              '//POP ECX (x4)
  15.    Call AddByte(&H50, lPtr)                    '//PUSH EAX
  16.  
  17.    For i = UBound(vParams) To LBound(vParams) Step -1
  18.        Call AddByte(&H68, lPtr)                '//PUSH ________
  19.        Call AddLong(CLng(vParams(i)), lPtr)    '//____ XXXXXXXX
  20.    Next i
  21.  
  22.    Call AddCall(lpCode, lPtr)                  '//CALL lpCode
  23.    Call AddByte(&HC3, lPtr)                    '//RET
  24.    Invoke = CallWindowProc(VarPtr(bvASM(&H0)), ByVal 0&, ByVal 0&, ByVal 0&, ByVal 0&)
  25. End Function
  26.  
  27. Private Sub AddCall(ByVal lpPtrCall As Long, ByRef lPtr As Long)
  28.    Call AddByte(&HE8, lPtr)                    '//CALL ________
  29.    Call AddLong(lpPtrCall - lPtr - 4, lPtr)    '//____ XXXXXXXX
  30. End Sub
  31.  
  32. Private Sub AddLong(ByVal lLong As Long, ByRef lPtr As Long)
  33.    Call CopyMemory(ByVal lPtr&, lLong, &H4)
  34.    lPtr = lPtr + &H4
  35. End Sub
  36.  
  37. Private Sub AddByte(ByVal bByte As Byte, ByRef lPtr As Long)
  38.    Call CopyMemory(ByVal lPtr&, bByte, &H1)
  39.    lPtr = lPtr + &H1
  40. End Sub

Ejemplo de uso:
Código
  1. Private Declare Function LoadLibrary Lib "kernel32.dll" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
  2. Private Declare Function GetProcAddress Lib "kernel32.dll" (ByVal hModule As Long, ByVal lpProcName As String) As Long
  3.  
  4. Private Sub Form_Load()
  5.    Dim hMod    As Long
  6.  
  7.    hMod = GetProcAddress(LoadLibrary("KERNEL32"), "Beep")
  8.    Call Invoke(hMod, 200, 500)
  9. End Sub
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[ASM+VB6][INVOKE] Llamas APIs sin declararlas - kInvoke.bas « 1 2 3 »
Programación Visual Basic
Karcrack 26 21,206 Último mensaje 2 Noviembre 2011, 20:03 pm
por Karcrack
[VB6-SRC] mZombieInvoke - Llama APIs sin declararlas « 1 2 »
Programación Visual Basic
Karcrack 11 8,702 Último mensaje 14 Agosto 2010, 21:14 pm
por wh0!
No me carga la DLL LoadLibrary
Programación C/C++
Riki_89D 4 4,026 Último mensaje 17 Septiembre 2011, 17:58 pm
por Riki_89D
El programa rompe al llegar a LoadLibrary
Análisis y Diseño de Malware
nts94 2 2,994 Último mensaje 14 Marzo 2012, 01:58 am
por nts94
Error 126: LoadLibrary falla C++
Programación C/C++
Kaxperday 2 2,492 Último mensaje 16 Enero 2016, 13:06 pm
por Kaxperday
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines