Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Karcrack en 11 Agosto 2009, 13:54 pm



Título: [SRC]- mGetAPIPtr, sacar el puntero de un API... nuevo metodo :P
Publicado por: Karcrack en 11 Agosto 2009, 13:54 pm
Bueno, despues de estar investigando he conseguido sacar el Puntero de un API llamando a DllFunctionCall@MSVBVM60.DLL...

Como todo programador de VB6 debe saber al llamar un API externa desde VB se llama a DllFunctionCall para sacar el puntero... osea, las APIs declaradas directamente desde el codigo no se agregan a la IAT...

Y bueno, decidi aprovecharme de eso :rolleyes:

Código
  1. Option Explicit
  2. '---------------------------------------------------------------------------------------
  3. ' Module    : mGetAPIPtr
  4. ' Author    : Karcrack
  5. ' Now$      : 11/08/2009  13:07
  6. ' WebPage   : http://www.advancevb.com.ar
  7. ' Used for? : Get API Pointer withouth calling any external API
  8. ' Thanks.   :
  9. '       - Cobein: Support and Unicode-ANSI function (=
  10. '---------------------------------------------------------------------------------------
  11.  
  12. 'MSVBVM60
  13. Private Declare Function DllFunctionCall Lib "MSVBVM60" (ByRef typeAPI As tAPICall) As Long
  14.  
  15. Private Type tAPICall
  16.    ptsLIB              As Long ' Pointer to ANSI String that contains Library
  17.    ptsProc             As Long ' Pointer to ANSI String that contains Procedure
  18.    lReserved           As Long ' Just reserved...
  19.    lPointer            As Long ' Pointer to the buffer that will contain temp variables from DllFunctionCall
  20.    lpBuffer(3)         As Long ' Buffer that will contain temp variables
  21. End Type
  22.  
  23. Public Function GetAPIPtr(ByVal sLib As String, ByVal sProc As String) As Long
  24.    Dim tAPI            As tAPICall
  25.    Dim bvLib()         As Byte
  26.    Dim bvMod()         As Byte
  27.  
  28.    Call Unicode2ANSI(sLib, bvLib)
  29.    Call Unicode2ANSI(sProc, bvMod)
  30.  
  31.    With tAPI
  32.        .ptsLIB = VarPtr(bvLib(0))
  33.        .ptsProc = VarPtr(bvMod(0))
  34.        .lReserved = &H40000
  35.        .lPointer = VarPtr(.lpBuffer(0))
  36.    End With
  37.  
  38.    GetAPIPtr = DllFunctionCall(tAPI)
  39. End Function
  40.  
  41. 'COBEIN (=
  42. Private Sub Unicode2ANSI(ByVal sUNICODE As String, ByRef bvANSI() As Byte)
  43.    Dim i           As Long
  44.  
  45.    ReDim bvANSI(Len(sUNICODE))
  46.    For i = 1 To Len(sUNICODE)
  47.        bvANSI(i - 1) = Asc(Mid$(sUNICODE, i, 1))
  48.    Next i
  49. End Sub

Con esto solo no podemos llamar a las APIs, asi que he modificado el codigo de Cobein del cInvoke
para que llama al puntero que le pases... Aqui hay un ejemplo bastante claro:
Código:
http://www.box.net/shared/tbbihznz6r

Ah! Si pretendeis llamar APIs que pidan Strings recordar usar la version UNICODE de esa API (*W)

Saludos ;D


Título: Re: [SRC]- mGetAPIPtr, sacar el puntero de un API... nuevo metodo :P
Publicado por: illuminat3d en 11 Agosto 2009, 14:15 pm
Muy bueno loco, me quedé medio confuso  :huh:, pero se ve muy bueno  ;-)


Título: Re: [SRC]- mGetAPIPtr, sacar el puntero de un API... nuevo metodo :P
Publicado por: el_c0c0 en 11 Agosto 2009, 18:19 pm
que loco che, interesante

saludos y gracias


Título: Re: [SRC]- mGetAPIPtr, sacar el puntero de un API... nuevo metodo :P
Publicado por: YST en 11 Agosto 2009, 19:49 pm
Exelente :D .



Título: Re: [SRC]- mGetAPIPtr, sacar el puntero de un API... nuevo metodo :P
Publicado por: cobein en 15 Agosto 2009, 06:39 am
Karcrack, despues tengo unos datos interesantes para pasarte de esta API, me colgue un rato con el IDA y vi unas cuantas cosas.


Título: Re: [SRC]- mGetAPIPtr, sacar el puntero de un API... nuevo metodo :P
Publicado por: Karcrack en 15 Agosto 2009, 15:31 pm
Karcrack, despues tengo unos datos interesantes para pasarte de esta API, me colgue un rato con el IDA y vi unas cuantas cosas.
Perfecto :D, si no ves en el MSN enviame un MP por aqui o en HH ;)

Espero ansioso la informacion :xD

Saludos ;)


Título: Re: [SRC]- mGetAPIPtr, sacar el puntero de un API... nuevo metodo :P
Publicado por: MCKSys Argentina en 15 Agosto 2009, 20:56 pm
Muy bueno!

No conocia esa estructura...

Gracias!


Título: Re: [SRC]- mGetAPIPtr, sacar el puntero de un API... nuevo metodo :P
Publicado por: Karcrack en 15 Agosto 2009, 23:36 pm
Muy bueno!

No conocia esa estructura...

Gracias!
Claro que no :xD, la he hecho yo para imitar la llamada al API DllFunctionCall que hacen las aplicaciones del VB :xD