Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Karcrack en 13 Septiembre 2013, 04:05 am



Título: NanoInvoke
Publicado por: Karcrack en 13 Septiembre 2013, 04:05 am
Código
  1. 'USER32
  2. Private Declare Function CallWindowProcW Lib "USER32" (ByRef first_asm As Currency, ByRef params() As Variant, ByVal lib As String, ByVal fnc As String, Optional ByVal null0 As Long = 0) As Long
  3. '---------------------------------------------------------------------------------------
  4. ' Author : Karcrack
  5. ' Date   : 12092013
  6. ' Credits: sonykuccio (http://hackhound.org/forums/topic/2790-vb6asm-%C2%B5callapi/)
  7. '---------------------------------------------------------------------------------------
  8.  
  9. Public Function NanoInvoke(ByRef sLib As String, ByRef sFnc As String, ParamArray params() As Variant) As Long
  10.    Dim asm(11)     As Currency
  11.    Dim p()         As Variant
  12.  
  13.    If UBound(params) >= 0 Then p = params
  14.  
  15.    asm(0) = -881438862054780.1504@: asm(1) = -140193315782017.312@: asm(2) = 93112413858165.2867@: asm(3) = 593189448021741.0902@
  16.    asm(4) = 843045704464075.3748@: asm(5) = -4834317066834.7356@: asm(6) = 260429944098681.7488@: asm(7) = 537140947255014.6699@
  17.    asm(8) = 7683543183094.8624@: asm(9) = 598313605633923.5838@: asm(10) = -200740417519275.4208@: asm(11) = 109.8337@
  18.  
  19.    NanoInvoke = CallWindowProcW(asm(0), p, sLib, sFnc)
  20. End Function
  21. ' ASM Code: pastebin.com/5gnLv7xn

Un pequeño reto que surgió en HackHound :P

Ejemplo de uso:
Código
  1.    Call NanoInvoke("user32", "MessageBoxW", 0, StrPtr("test"), StrPtr("karcrack"), 0)
  2.    Call NanoInvoke("kernel32", "ExitProcess", 0)


Título: Re: NanoInvoke
Publicado por: 79137913 en 13 Septiembre 2013, 15:42 pm
HOLA!!!

Magnifico :D

Funciona en x64?

GRACIAS POR LEER!!!


Título: Re: NanoInvoke
Publicado por: MCKSys Argentina en 13 Septiembre 2013, 19:35 pm
No quiero ser pesimista pues el código está genial, pero esto no crashea si hay DEP?


Título: Re: NanoInvoke
Publicado por: Karcrack en 14 Septiembre 2013, 17:24 pm
Funciona perfectamente en x64, de hecho lo he programado en Win8 x64.

Respecto al DEP, claro, si está activado no funciona. Aunque debería de estar forzado en todos los procesos y al menos por defecto no es así. De todas formas siempre puedes hacer /NXCOMPAT:NO para decirle a Windows que necesitas ejecutar código en secciones de datos ;D

Igualmente este código fallaría con un ejecutable compilado con diferente base address o tamaño de sección. Si miráis el código ASM podéis ver que el puntero a la IAT está hardcodeado.