Statisch Reverse Engineering Shellcode - IDA zu Ghidra

Oct 05 2020

Ich versuche, diesem Tutorial zu folgen, das in seinem Beispiel IDA verwendet. https://0ffset.net/reverse-engineering/malware-analysis/common-shellcode-techniques/

Hash: 9d7e34250477acf632c6c32fc2c50d3b

Im Beispiel ist dies nach der Entschlüsselung der Stufe 2 das Ergebnis:

Wenn ich die gleichen Schritte mit Ghidra wiederhole, erhalte ich das folgende Ergebnis:

Ich habe die Versammlung verfolgt und versucht herauszufinden, was, wenn es falsch ist oder was los ist, ohne Ergebnisse.

Bei der Suche bin ich auf folgende Referenzen gestoßen: https://c9x.me/x86/html/file_module_x86_id_139.html https://en.wikipedia.org/wiki/HLT_(x86_instruction)

Es wäre dankbar, wenn mich jemand in die richtige Richtung weisen könnte.

EDIT: Nachdem Paweł Łukasik auf meinen Fehler hingewiesen hat, funktioniert es:

Antworten

2 PawełŁukasik Oct 05 2020 at 02:12

Ausgehend von der Adresse 0x56scheinen alle Ihre Anweisungen deaktiviert zu sein. Und wenn Sie genau hinschauen, gibt es ein Muster, wie viel sie vom Original abweichen.

Zum Beispiel sollte es beim Offset so 0x58sein, push edxdass das Byte so sein sollte 0x52, aber Sie haben das, push espwas ist 0x54. Da in dem Artikel erwähnt wird, dass dieser Teil mit einem xor (mit einem einstelligen Schlüssel) verschlüsselt ist, wollen wir sehen, wie diese Werte deaktiviert sind

In [7]: 0x52 ^ 0x54
Out[7]: 6

Das ist also genau der Schlüssel, der im Artikel erwähnt wird. Wenn wir den Rest dieser Off-Anweisungen vergleichen, werden wir feststellen, dass sie um denselben Wert deaktiviert sind.

Schlussfolgerung - Dieser in Ghidra gezeigte Teil des Codes wurde nicht entschlüsselt und sollte vor der Analyse vorverarbeitet werden.