Detectar Debugger (SRC)

Iniciado por cobein, 1 Septiembre 2008, 21:17 PM

0 Miembros y 1 Visitante están viendo este tema.

cobein

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

http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

Mad Antrax

Ummm, hay una forma más graciosa para implementar esta API, prueba esto:

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.
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

cobein

Es verdad, hoy lo vi casualmente mientras leia un articulo.
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

ssccaann43 ©

- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"

krackwar

Cita de: ||MadAntrax|| en  1 Septiembre 2008, 22:13 PM
Ummm, hay una forma más graciosa para implementar esta API, prueba esto:

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.
Mi blog
Bienvenido krackwar, actualmente tu puntuación es de 38 puntos y tu rango es Veteran.
El pollo número 1, es decir yo, (krackwar), adoro a Shaddy como a un dios.

cobein

@ ||MadAntrax||

Tengo el Olly 2.0 Alpha 6 y no pasa nada, supongo que esta parchado para evitar el overflow.
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

krackwar

Cita de: 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.
Esto por lo que se es un bug de la 1.10.
Mi blog
Bienvenido krackwar, actualmente tu puntuación es de 38 puntos y tu rango es Veteran.
El pollo número 1, es decir yo, (krackwar), adoro a Shaddy como a un dios.