[ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger

Iniciado por Karcrack, 12 Marzo 2011, 13:45 PM

0 Miembros y 2 Visitantes están viendo este tema.

Karcrack

Código (vb) [Seleccionar]
Option Explicit
'KERNEL32
Private Declare Sub GetStartupInfoW Lib "KERNEL32" (ByRef lpStartupInfo As Any)

'---------------------------------------------------------------------------------------
' Procedure : IsOdbg
' Author    : Karcrack
' Date      : 12/03/2011
' TestedOn  : OllyDbg 1.1 & OllyDbg 2.0.1(Alpha)
' Purpose   : Detect whether we are running inside OllyDbg or not.
'---------------------------------------------------------------------------------------
'
Public Function IsOdbg() As Boolean
    Dim bvStartupInfo(0 To 16)  As Long
    Call GetStartupInfoW(bvStartupInfo(0))
    IsOdbg = (bvStartupInfo(11) And &H80)
End Function

raul338

Y si cambian/desactivan esas lineas desde el ollydbg ? :xD (nunca lo he usado :P)

Karcrack

Pues si van debuggeando instruccion por instruccion hasta encontrar la llamada a DllFuncionCall() con "KERNEL32" y "GetStartupInfoW"... Pueden parchear la comparacion y devolver False.. pero para ello deben saber que STARTUPINFO.dwFlags tiene un flag distinto dentro de OllyDbg...

philipjfry99

lol this simple trick call works!!!! good work as amways....When will u be back in english scenes dude ;)

Edu

Good proyect dude, this code must be in all security programs, or malwares jeje

43H4FH44H45H4CH49H56H45H

En realidad saltarse este truco es muy sencillo  >:D, solo viendo que api es llamada luego de que detecte a olly (eso deacuerdo al programa si lanza un msgbox o finaliza el programa por ejemplo) podemos llegar a la funcion que se encarga de la deteccion, para saltarse este truco solo basta lo siguiente:
Código (vb) [Seleccionar]
Option Explicit
'KERNEL32
Private Declare Sub GetStartupInfoW Lib "KERNEL32" (ByRef lpStartupInfo As Any)

'---------------------------------------------------------------------------------------
' Procedure : IsOdbg
' Author    : Karcrack
' Date      : 12/03/2011
' TestedOn  : OllyDbg 1.1 & OllyDbg 2.0.1(Alpha)
' Purpose   : Detect whether we are running inside OllyDbg or not.
'---------------------------------------------------------------------------------------
'
Public Function IsOdbg() As Boolean
    Dim bvStartupInfo(0 To 16)  As Long
    Call GetStartupInfoW(bvStartupInfo(0))
    IsOdbg = (bvStartupInfo(11) And &H80)
End Function


Private Sub Command1_Click()
If IsOdbg Then
MsgBox "Es Olly"
Else
MsgBox "No hay Olly"
End If
End Sub


Luego de encontrar la funcion que valida si olly esta presente, localizamos la Api que lo detecta, luego de colocar un BP, vemos lo siguiente:





Y solo basta con cambiar un numero  :xD para que ya no lo detecte...





Saluos  :P

-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W

Karcrack

No tiene ningun merito quitar la proteccion si esta te avisa de que te ha detectado... pero imagina que dependiendo de que te detecta hace unas acciones u otras... Ahi ya tendrias mas dificil (Sin saber que con esa llamada se puede detectar) encontrar que esta pasando...

43H4FH44H45H4CH49H56H45H

Como escribi antes, el programa puede tomar una accion u otra (msgbox o finalizar el programa por ejemplo), pero a la final tendra que realizar algun prodedimiento que se puede interceptar.
Que mejor si haces un Crack Me y vemos que tan dificil puede ser quitar esta u otra protección.
Saluos  :P

-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W

Edu

Pero vs te das cuenta q tiene ese codigo de Karcrack una vez q ya se uso, y en vez del mensajito puede que haga una maldad para no ser analizado ;)

43H4FH44H45H4CH49H56H45H

Si el programa hiciera la "maldad" ya tendria el punto para empezar a buscar de donde se llamo a su funcion. Obviamente esto no tiene porque preocupar a cualquier persona que tenga un minimo de conocimiento de como proteger su equipo contra "maldades", pero viendo tu comentario tú si tendrias de que preocuparte  :P
Saluos.

-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W