Frage:
Seltsames GDB-Verhalten in OSX
user1743
2013-04-29 21:28:50 UTC
view on stackexchange narkive permalink

Ich mache Malware auf einer OSX-VM rückgängig, als ich etwas Besonderes bemerkte. Beim Durchlaufen der Anweisungen wird die Anweisung unmittelbar nach dem Überspringen eines int 0x80 dh ausgeführt, ohne dass ich dies durchführe.

Beispiel:

  int 0x80 inc eax; < --- dies wird inkl. Ecx übersprungen; < --- Schritt wird hier fortgesetzt  

Warum passiert das? Haben Sie etwas Ähnliches erlebt?

Einer antworten:
peter ferrie
2013-04-29 22:05:08 UTC
view on stackexchange narkive permalink

Beim einmaligen Durchlaufen von Code wird das Flag T gesetzt, damit die CPU nach Abschluss der Ausführung des Befehls unterbrochen werden kann. Wenn ein Interrupt auftritt, wird der Status des Flags T auf den Stapel gelegt und verwendet, wenn der Befehl iret vom Handler ausgeführt wird. Der Befehl iret ist jedoch einer der wenigen Befehle, die aufgrund von Problemen im Zusammenhang mit der Initialisierung des Befehls eine Verzögerung von einem Befehl beim Auslösen des Flags T verursachen Stapel.

Die übersprungene Anweisung wird also ausgeführt, aber Sie können nicht darauf zugreifen (wenn Sie jedoch an dieser Stelle einen Haltepunkt festlegen und stattdessen zu diesem Punkt ausführen, erhalten Sie eine Unterbrechung).

+1. Es hörte sich nicht so an, als wäre das OP an diesen Details auf niedriger Ebene interessiert, aber jetzt verstehe ich, warum Sie argumentierten, dass meine Antwort nicht die angeforderten Informationen enthielt. Aber es stellt sich heraus, dass ich die Frage falsch verstanden habe. Vielen Dank für den Hinweis.
Beobachten wir das gleiche Verhalten in anderen Betriebssystemen? * BSD, Linux, OpenSolaris, ...?
@perror: sollte für alle praktischen Zwecke verwendet werden, wenn ein Interrupt-Handler verwendet wird, und daher wird "iret" verwendet.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...