Bueno..
Al iniciar el oly pones el byte de isdebug a cero, D EBX+2 y lo pones a cero, o con algun plugin tilda IsDebuggerPresent.
Das run y Luego de instalar el manejador y caera en el, entonces con esto nos detecta si tenemos algun hbp puesto
004DA5B3 8378 04 00 CMP DWORD PTR DS:[EAX+4],0 004DA5B7 74 11 JE SHORT Drunken.004DA5CA ; verifika los HBP 004DA5B9 C740 04 0000000>MOV DWORD PTR DS:[EAX+4],0 004DA5C0 C786 634B0000 0>MOV DWORD PTR DS:[ESI+4B63],1 004DA5CA 8378 08 00 CMP DWORD PTR DS:[EAX+8],0 004DA5CE 74 11 JE SHORT Drunken.004DA5E1 004DA5D0 C740 08 0000000>MOV DWORD PTR DS:[EAX+8],0 004DA5D7 C786 634B0000 0>MOV DWORD PTR DS:[ESI+4B63],1 004DA5E1 8378 0C 00 CMP DWORD PTR DS:[EAX+C],0 004DA5E5 74 11 JE SHORT Drunken.004DA5F8 004DA5E7 C740 0C 0000000>MOV DWORD PTR DS:[EAX+C],0 004DA5EE C786 634B0000 0>MOV DWORD PTR DS:[ESI+4B63],1 004DA5F8 8378 10 00 CMP DWORD PTR DS:[EAX+10],0 004DA5FC 74 11 JE SHORT Drunken.004DA60F
todos deben saltar, segun llos hbps que tengas, entonces inviertes el flag z.
despues nos quiere detectar con CheckRemoteDebuggerPresent
004DBFF0 50 PUSH EAX ; push offset isdebugged 004DBFF1 6A FF PUSH -1 ; push -1 004DBFF3 FF95 354B0000 CALL DWORD PTR SS:[EBP+4B35] ; LLAMA a CheckRemoteDebuggerPresent
hace follow in dump en eax, y pasa la llamada, despues cambia el 1 que te pone por un cero.
luego tambien usa FindWindowA para ver si esta el olly, como estoy usando el parcheado 4, a mi no me lo detecta.
seguimos un poquito mas y usa GetForegroundWindow y GetWindowTextA para obtener el texto del titulo, los xorea y opbtiene un resultado que si es igual nos manda afuera, para evitarlo yo inverti el flag z del salto 004DC08D JNZ SHORT Drunken.004DC092
con esos tres cambios ya anda, IsdebuggerPresent, CheckRemoteDebuggerPresent y el ultimo.
Ademas se fija si esta instalado el Sice.
Ahora a buscar el oep Slds
|