Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: cobein en 1 Septiembre 2008, 21:17 pm



Título: Detectar Debugger (SRC)
Publicado por: cobein en 1 Septiembre 2008, 21:17 pm
Código:
Private Declare Function OutputDebugStringA Lib "kernel32" (ByVal lpString As String) As Long

Private Sub Form_Load()
    If IsDebuggerActive Then
        MsgBox "Debugger Present"
    End If
End Sub

Private Function IsDebuggerActive() As Boolean
    IsDebuggerActive = Not (OutputDebugStringA("=)") = 1)
End Function


Título: Re: Detectar Debugger (SRC)
Publicado por: Mad Antrax en 1 Septiembre 2008, 22:13 pm
Ummm, hay una forma más graciosa para implementar esta API, prueba esto:

Código:
Private Declare Function OutputDebugStringA Lib "kernel32" (ByVal lpString As String) As Long

Private Sub Form_Load()
    Dim AA As String
    Dim i As Integer
   
    For i = 1 To 200
        AA = AA & "%s"
    Next i
   
    MsgBox OutputDebugStringA(AA)
End Sub

Es el mismo ejemplo que el tuyo, pero en este caso creamos una variable con el valor "%s" repetido 200 veces: "%s%s%s%s%s%s%s...". Cuando OllyDbg intenta ejecutar éste código, se produce un overflow y el Olly se entra en DeadLock

Tendremos que Debuggear al Debugger para solucionar esto? jijijij

Con esta sencilla instrucción detectas si hay Debugger y en caso de ser OllyDbg, lo "matas".

PD. No es una técnica 100% anti-debugg, pero pone el nivel más dificil al cracker.


Título: Re: Detectar Debugger (SRC)
Publicado por: cobein en 1 Septiembre 2008, 22:44 pm
Es verdad, hoy lo vi casualmente mientras leia un articulo.


Título: Re: Detectar Debugger (SRC)
Publicado por: ssccaann43 © en 1 Septiembre 2008, 22:46 pm
Esta bueno el ejemplo. Saludos


Título: Re: Detectar Debugger (SRC)
Publicado por: krackwar en 1 Septiembre 2008, 22:58 pm
Ummm, hay una forma más graciosa para implementar esta API, prueba esto:

Código:
Private Declare Function OutputDebugStringA Lib "kernel32" (ByVal lpString As String) As Long

Private Sub Form_Load()
    Dim AA As String
    Dim i As Integer
   
    For i = 1 To 200
        AA = AA & "%s"
    Next i
   
    MsgBox OutputDebugStringA(AA)
End Sub

Es el mismo ejemplo que el tuyo, pero en este caso creamos una variable con el valor "%s" repetido 200 veces: "%s%s%s%s%s%s%s...". Cuando OllyDbg intenta ejecutar éste código, se produce un overflow y el Olly se entra en DeadLock

Tendremos que Debuggear al Debugger para solucionar esto? jijijij

Con esta sencilla instrucción detectas si hay Debugger y en caso de ser OllyDbg, lo "matas".

PD. No es una técnica 100% anti-debugg, pero pone el nivel más dificil al cracker.
Te me adelantaaste  :P yo ya hiba a publicar el codigo para causar el error en el olly del cual obtuve informacionde como hacerlo en hackhound que esta un cod haci en asm pero no ocupa api-s.


Título: Re: Detectar Debugger (SRC)
Publicado por: cobein en 2 Septiembre 2008, 02:12 am
@ ||MadAntrax||

Tengo el Olly 2.0 Alpha 6 y no pasa nada, supongo que esta parchado para evitar el overflow.


Título: Re: Detectar Debugger (SRC)
Publicado por: krackwar en 2 Septiembre 2008, 04:56 am
@ ||MadAntrax||

Tengo el Olly 2.0 Alpha 6 y no pasa nada, supongo que esta parchado para evitar el overflow.
Esto por lo que se es un bug de la 1.10.