Anti-Debugger Methoden

Hi,
ich wollte mal fragen, ob jemand vllt ein Tutorial von "wie umgehe ich" und "wie funktionieren Anti-dugger methoden" hat? Hab schon gehört, das OllyShadow sowas kann, aber mich würde halt interessieren wie sowas funktioniert. Vielen Dank schonmal.

Grüße craven
 
Vielen Dank nochmal,
ich hätte hier aber nochmal eine andere Frage: Ich hab hier ein CrackMe(https://www.buha.info/board/showthread.php?t=51180), dass besitzt auf jeden Fall Anti-Debugger Mechanismen. So jetzt meine Fragen:
1. OllyShadow gibt mir beim laden des CrackMes einen Fehler aus: "Konnte nicht richtig initalisiert werden 0xc0000142". Wie soll ich diesen Fehler verstehen?
2. Wenn ich ein Programm in den Olly Debugger lade, zeigt mir Olly doch vorerst nur das in Assembler disassemblierte Programm an, ohne dass dieses Programm irgendwas am Code verändern konnte oder?

Nochmals vielen dank für eure Hilfe!
 
Original von cr4ven
besitzt auf jeden Fall Anti-Debugger Mechanismen. So jetzt meine Fragen:
1. OllyShadow gibt mir beim laden des CrackMe's einen Fehler aus: Konnte nicht richtig initalisiert werden 0xc0000142. Wie soll ich diesen Fehler verstehen?
Nutzt Du Vista? Bei mir (XP SP2,OllyShadow sowie "normalOlly") kommt kein Fehler.
Versuche es mal mit einem normalen Olly+Advanced Plugin.
Sonst (für "nakten Olly"):
eine Antidebugroutine ist
Code:
0046A26E  |. 64:8B05 180000>MOV EAX,DWORD PTR FS:[18]
0046A275  |. 8B40 30        MOV EAX,DWORD PTR DS:[EAX+30]
0046A278  |. 8B40 02        MOV EAX,DWORD PTR DS:[EAX+2]
0046A27B  |. 31DB           XOR EBX,EBX
0046A27D  |. 88C3           MOV BL,AL

entspricht der "(2) PEB!IsDebugged" Routine in http://www.securityfocus.com/infocus/1893
Gegenmaßname: BP auf 0046A278, laufen lassen, wenn Ollystopt, auf die Zeile draufklicken ->"Follow in Dump memory Adress" und da die 1 durch 0 ersetzen.
nächster Trick:
Code:
00469893   . 74 01          JE SHORT crackme.00469896
00469895   . CC             INT3
00469896   > C3             RETN
und hier
00469660     CC             INT3
00469661   . C3             RETN

entspricht "(1) Rogue Int3" (gegenmaßnahme: Unter "Options->Debug options->Exceptions" den "ignore INT3 breaks" aktivieren)
und hier
Code:
00469349  |. 6A 00          PUSH 0                                   ; /Title = NULL
0046934B  |. 50             PUSH EAX                                 ; |Class = "OÝLYDBG"
0046934C  |. E8 37D0F9FF    CALL <JMP.&user32.FindWindowA>           ; \FindWindowA
00469351  |. 54             PUSH ESP                                 ; /pProcessID
00469352  |. 50             PUSH EAX                                 ; |hWnd
00469353  |. E8 A8D1F9FF    CALL <JMP.&user32.GetWindowThreadProcess>; \GetWindowThreadProcessId
00469358  |. 8B0424         MOV EAX,DWORD PTR SS:[ESP]
0046935B  |. 50             PUSH EAX                                 ; /ProcessId
0046935C  |. 6A 00          PUSH 0                                   ; |Inheritable = FALSE
0046935E  |. 6A 01          PUSH 1                                   ; |Access = TERMINATE
00469360  |. E8 4BCCF9FF    CALL <JMP.&kernel32.OpenProcess>         ; \OpenProcess
00469365  |. 6A 00          PUSH 0                                   ; /ExitCode = 0
00469367  |. 50             PUSH EAX                                 ; |hProcess
00469368  |. E8 93CCF9FF    CALL <JMP.&kernel32.TerminateProcess>    ; \TerminateProcess

mögliche Gegenmaßname: BP auf "0046934B |. 50 PUSH EAX", wenn Olly stoppt, steht in EAX die Adresse des Strings ->"Follog in Dump" machen und den Namen ein wenig ändern.
2. Wenn ich ein Programm in den Olly Debugger lade, zeigt mir Olly doch vorerst nur das in Assembler disassemblierte Programm an, ohne dass dieses Programm irgendwas am Code verändern konnte?
Jein. Es gibt noch so eine nette Erfindung wie TLS Callbacks (ist im securityfocus Link enthalten oder auch hier: http://www.winasm.net/forum/index.php?showtopic=2223
.Dabei wird vor der eigentlichen Ausführung des Programms noch die im TLS angegebene Prozedur aufgerufen. Das Crackme hier nutzt es zwar nicht, allerdings einige Protektoren. So kann "vorab" geprüft werden, ob z.B ein BP platziert wurde oder irgendwelche Handlungen mit dem Code vorgenommen werden.
"nakter" Olly kann die TLS Geschichte nicht wirklich handhaben (afaik geht es, wenn man zuerst mit einem PE-Editor die TLS Parameter nachschaut, unter Debugoptionen->Events den "make first pause at" auf "system breakpoint" stellt und dann schön aufpasst)- erst durch Plugins wird es halbwegs handlich.
Ein Beispiel wäre z.B hier Hiddencode KeygenMe
 
Wow! Super, dass du dir so viel Mühe gibst. Ja ich benutze Vista, scheint dann wohl wirklich damit zusammenzuhängen. Blödes Vista auch ;). Wenns gar nicht geht muss ich wohl wieder XP installieren.
 
Ja ich benutze Vista, scheint dann wohl wirklich damit zusammenzuhängen
Naja, OllyShadow kommt auch mit einem ganzen Batzen Plugins daher - da kann schon ein Plugin für den Fehler verantwortlich sein. Auch unter XP kommt es mit OllyShadow ab und zu zu Problemen (wegen Plugins) - unerklärliche Abstürze/Fehler, wobei dann ein "sauberer" Olly ganz normal läuft.

I.R reicht es erstmal einen normalen Olly+OllyAdvanced Plugin zu nutzen (enthält die meisten Bugfixes für Olly und natürlich viele Antidebugmaßnahmen).
Die Plugins sollte man sich dann selber nach Bedarf zusammenstellen, damit man
1)weiß, was die machen ;)
2) auch schnell bei Fehlern den Verursacher findet.
 
Also mit normalen Olly + Olly Advanced lädt er das Programm schonmal und kommt auch an der ersten Anti_debug Methode vorbei, jetzt bin ich gerade dabei den fiesen FindWindow mit anschließendem TerminateProcess auszuhebeln ;).
 
Danke Lesco für diese Ergänzung, ich habe das CrackMe jetzt mittlerweile auch gelöst und mich an weiteren CrackMes und Programmen(natürlich nur sehr veraltet und nicht weiterentwickelt) probiert und mir fällt auf, dass ich immer wieder diesen "Die Anwendung konnte nicht richtig initialisiert werde(0x80000004)" bekomme. Womit hängt das zusammen? Denn wenn ich die Anwendungen starte, also ohne Olly, läuft alles ganz normal ab ohne Fehler. Ist das vielleicht ein Anti-Debugger Schutz oder wurde die exe gepackt? Oder hängt das damit zusammen, dass ich Vista 64bit benutze und Olly ab und zu damit nicht klar kommt?

EDIT: Ich habe mittlerweile gemerkt, dass sich diese Programme in Ollydbg 2.0 und IDA ausführen lassen. Trotzdem würde ich gerne wissen wieso Olly 1.10 meine Programme nicht laden will. Achja unterstützt Olly 2.0 denn Plugins?

EDIT2: Falls es noch jemanden interessiert: Es hatte wirklich mit der 64bit version von Vista zu tun, dass ganze lässt sich recht einfach lösen, indem man Olly Advanced installiert und dort die x64 Unterstützung einschaltet.

Vielen Dank für eure Hilfe.

gruß craven.
 
Zurück
Oben