Esta funcion se basa en que, con privilegios normales nuestra aplicacion no puede abrir procesos de system (csrss.exe) y por lo visto el OllyDbg tiene privilegios suficientes para que podamos abrir el proceso...
Aqui va el code:
Código
Option Explicit 'IsDbgCrss Private Declare Function CsrGetProcessId Lib "ntdll.dll" () As Long Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long '--------------------------------------------------------------------------------------- ' Procedure : IsDbgCsrss ' Author : Karcrack ' Date : 30/12/2008 ' Purpose : Check if our app is being debugged ' Usage : If IsDbgCrss = True Then MsgBox "I'm Debugged" ' Tested On : OllyDbg v2.0 ß ' Reference : http://www.piotrbania.com/all/articles/antid.txt '--------------------------------------------------------------------------------------- ' Public Function IsDbgCsrss() As Boolean IsDbgCsrss = CBool(OpenProcess(&H1F0FFF, 0, CsrGetProcessId)) '&H1F0FFF = PROCESS_ALL_ACCESS End Function
Solo lo he probado con el OllyDbg v2.0 ß... si alguien lo prueba con otro Debugger que avise
Cabe destacar que para este codigo se necesitan privilegios de Admin... pero bueno, para ejecutar el OllyDbg en su total magnitud tambien
Saludos