[C] Debugger erkennen - eine Funktion tut's, die andere nicht?!

Dein Inline ASM scheint immer noch falsch zu sein (linker meckert, weil asm() keine bekannte Funktion ist). Also irgendetwas stimmt da noch nicht, eventuell mit den flags? Es gibt wohl auch ein __asm__, aber mit gcc und inline ASM habe ich jetzt auch nur wenig Erfahrung (ich mag die Syntax nicht!)
 
^^ Ich kenne mich leider auch gar nicht damit aus und habe das nötigste hier raus gesucht. Laut der dortigen Beschreibung macht es keinen Unterschied, ob man "asm" oder "__asm__" schreibt ... ?

[EDIT]
Durch "__asm" (Quelle) konnte ich es jetzt auf folgendes verringern:

Capture.JPG

Aber weiter weiß ich echt nicht. :huh:

[EDIT2]
Ah, war nur ein Syntax Fehler. :D
%eax statt nur eax ...

Jetzt habe ich endlich meine mal.exe. Gleich rein damit in die Windows 2000 VM.

[EDIT3]
Im OllyDbg läuft's jetzt auch und beide Erkennungsmethoden melden das richtige. Nur bei der Exception weiß ich nicht so recht, wie ich deren funktionieren überprüfen soll.
 
Zuletzt bearbeitet:
2 Fragen noch:

1) Kennt jemand Plugins für OllyDbg, mit deren Hilfe ich OutputDebugString und die Exception umgehen kann?
2) Wie kriege ich meinen C Code jetzt noch in Assembler hin (ohne ernsthaft Assembler-programmieren zu können)? Gibt's die Funktionen schon irgendwie in asm geschrieben, sodass ich mir das irgendwie zusammenbasteln könnte?
 
2 Fragen noch:

1) Kennt jemand Plugins für OllyDbg, mit deren Hilfe ich OutputDebugString und die Exception umgehen kann?
2) Wie kriege ich meinen C Code jetzt noch in Assembler hin (ohne ernsthaft Assembler-programmieren zu können)? Gibt's die Funktionen schon irgendwie in asm geschrieben, sodass ich mir das irgendwie zusammenbasteln könnte?
1) Ist mir nicht bekannt
2) Meinst du komplett in Assembler? Welchen Code meinst du genau?
 
Ich soll die Anwendung in C und Assembler schreiben, so die Aufgabenstellung. Den Sinn verstehe ich auch nicht...

Irgendwie mit "invoke isDebuggerPresent" muss ich anfangen, aber ich habe keine Ahnung, wie das dann mit den ganzen Registern geht.
 
Na das wird ja ein Spaß :ugly:

Du musst dir die Calling Conventions für die Funktionen besorgen. Damit wird festgelegt, wie eine Funktion aufgerufen wird, also wie zum Beispiel die Funktionsparameter übergeben werden und ob der Aufrufer hinterher aufräumen muss. Wenn die Anwendung komplett in Assembler geschrieben werden soll, dann musst du natürlich auch deine Main passend zusammenbauen (Funktionsprolog und -epilog).
 
Zurück