Ich arbeite an einer verschleierten Binärdatei als Teil einer Crackme-Aufgabe. Es hat eine Sequenz von push
, pop
und nop
Anweisungen (die sich tausendmal wiederholt). Funktional haben diese Chunks keine Auswirkungen auf das Programm. Aber sie machen die Erzeugung von CFGs und den Prozess der Umkehrung sehr schwer.Entfernen der Montageanleitung von ELF
Es gibt Lösungen, wie man die Anweisungen zu nop ändert, so dass ich entfernen kann sie. Aber in meinem Fall möchte ich diese Anweisungen komplett streichen, um einen besseren Überblick über die CFG zu bekommen. Wenn Anweisungen entfernt werden, verstehe ich, dass die Speicheroffsets ebenfalls geändert werden müssen. Soweit ich sehen konnte, gab es keine Werkzeuge, um dies direkt zu erreichen.
Ich verwende IDA Pro-Evaluierungsversion. Ich bin offen für Lösungen, die auch andere Reverse-Engineering-Frameworks verwenden. Es ist vorzuziehen, wenn es skriptfähig ist.
Ich ging durch eine similar question aber die vorgeschlagene Lösung ist nicht in meinem Fall anwendbar.
Es gibt R2 (radare.org) Framework für Unix-Welt mit Scripting, CLI, WEB, einfache TUI und noch nicht fertig GUI. Sie können auch versuchen, bei http://reverseengineering.stackexchange.com/ – osgx
zu fragen. Es ist nicht immer möglich, dies zu tun. Es ist möglich, dass Code auf relativen Offsets von Dingen beruht, die schwer automatisch zu erkennen sind. (z. B. komplexer als nur das Reparieren von Verschiebungen an Sprungadressen, die die entfernten Insns kreuzen). Aber ich denke, es lohnt sich zu versuchen, zu sehen, ob es funktioniert, ohne das Programm zu brechen. –
Oder ich denke, ich sollte nur nach Wegen suchen, um die Berücksichtigung von Teilen des Codes (wie die Ritzen von 'push',' pop', 'nop' Sequenzen) zu verwerfen, während CFG erzeugt wird. Soll ich die Frage bearbeiten, oder soll ich eine neue öffnen? – gtux