Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Karcrack en 5 Febrero 2009, 19:03 pm



Título: [SRC][SNIPPET] Tecnica AntiDebugging [ASM+VB #CallWindowProc#]
Publicado por: Karcrack en 5 Febrero 2009, 19:03 pm
Tenia este code guardado por ahi :xD, y bueno, aqui esta ;D

Codigo de ASM ejecutado:
Código
  1. use32
  2.    mov eax, [fs:30h]
  3.    mov eax, [eax + 68h]
  4. ret

Codigo Completo:
Código
  1. '---------------------------------------------------------------------------------------
  2. ' Module    : ImDebug_ASM
  3. ' Author    : Karcrack
  4. ' DateTime  : 23/01/2009  15:02
  5. ' Purpose   : Saber si estamos siendo debuggeados
  6. ' Thanks    : Cobein, Por sus codes de ASM inline (:
  7. '---------------------------------------------------------------------------------------
  8.  
  9. Option Explicit
  10. Private Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  11.  
  12. Public Function ImDebug_ASM() As Boolean
  13.    Dim bvASM(0 To 9)   As Byte
  14.    bvASM(0) = &H64: bvASM(1) = &HA1: bvASM(2) = &H30: bvASM(3) = &H0: bvASM(4) = &H0: bvASM(5) = &H0: bvASM(6) = &H8B: bvASM(7) = &H40: bvASM(8) = &H68: bvASM(9) = &HC3
  15.    ImDebug_ASM = CBool(CallWindowProc(VarPtr(bvASM(0)), 0&, 0&, 0&, 0&))
  16. End Function

Saludos ;D


Título: Re: [SRC][SNIPPET] Tecnica AntiDebugging [ASM+VB #CallWindowProc#]
Publicado por: <[(x)]> en 5 Febrero 2009, 19:36 pm

Muy bueno che.

 y si me saca una duda mejor: para que usas los '&' en esta parte?
Código
  1. CallWindowProc(VarPtr(bvASM(0)), 0&, 0&, 0&, 0&)
  2.  

54Ĵui)()5


Título: Re: [SRC][SNIPPET] Tecnica AntiDebugging [ASM+VB #CallWindowProc#]
Publicado por: Karcrack en 5 Febrero 2009, 19:43 pm

Muy bueno che.

 y si me saca una duda mejor: para que usas los '&' en esta parte?
Código
  1. CallWindowProc(VarPtr(bvASM(0)), 0&, 0&, 0&, 0&)
  2.  

54Ĵui)()5
Sirve para que el 0 sea Long, no cualquier otro tipo de variable (Integer o Variant...) los pongo, porque el API esta declarada con ByVal Xxxx as Long ;)

Saludos ;D