
Kleines, niedliches Emulator-Plugin für IDA basierend auf Unicorn.
uEmu ist ein kleiner, niedlicher Emulator-Plugin für IDA, basierend auf der Unicorn-Engine.
Unterstützt standardmäßig folgende Architekturen: x86, x64, ARM, ARM64, MIPS, MIPS64

MSR S3_x, X0 für ARM64)idapyswitch konfigurierenbrew install unicorn zum Installieren der Unicorn-Binärdateienpip install unicorn zum Installieren der Unicorn-Python-BindungenDatei / Skriptdatei... oder ALT+F7 in IDA, um uEmu.py zu ladenOptional kann uEmu automatisch als IDA-Plugin geladen werden. In diesem Fall legen Sie es in den [IDA]/Plugins-Ordner und ändern Sie USE_AS_SCRIPT auf False in uEmu.py

ALT/OPTION gedrückt, um eine Anzahl anzugeben).Starten Sie die Emulation ab der Cursorposition. Es ist notwendig, zuerst den anfänglichen CPU-Kontext bereitzustellen (siehe CPU-Kontext aktualisieren). Danach werden alle Segmente aus der IDA-Datenbank in den Emulator abgebildet (initialisierte Daten werden ebenfalls kopiert).
Führt Code aus, bis ein Code- oder Speicher-Breakpoint erreicht wird oder ein Ereignis eintritt, das eine Benutzeraktion erfordert.
Führt einen Einzelschritt aus. Halten Sie ALT/OPTION gedrückt, um die Anzahl der durchzuführenden Schritte anzugeben.

Wenn die Emulation läuft, kann dieser Befehl verwendet werden, um die Ausführung zu unterbrechen.
Setzt die Emulator-Instanz zurück und hebt die Abbildung aller Speicherbereiche auf.
Sie können IDA-Breakpoints verwenden, um Stellen zu markieren, an denen die Emulation unterbrochen werden soll. Dies umfasst Code- und Speicher-Breakpoints. Wird normalerweise zusammen mit dem Befehl Run verwendet.
Wenn der Emulator auf Speicher zugreifen muss, der noch nicht abgebildet ist, zeigt das Plugin den folgenden Dialog an.


Wenn der Emulator auf eine unbekannte Anweisung stößt, kann diese übersprungen und der CPU-Kontext manuell wiederhergestellt werden.

Nur ein Bedienfeld zur Steuerung der Ausführung.

Aktueller CPU-Kontext.

Jedes Mal, wenn die Emulation anhält, werden geänderte Register hervorgehoben. Register können über das Popup-Menü in 1, 2 oder 3 Spalten angezeigt werden.
Es ist möglich, den CPU-Kontext über das Popup-Menü zu aktualisieren (siehe unten).
Aktueller erweiterter CPU-Kontext.

Jedes Mal, wenn die Emulation anhält, werden geänderte Register hervorgehoben. Register können über das Popup-Menü in 1, 2 oder 3 Spalten angezeigt werden.
Es ist möglich, den CPU-Kontext über das Popup-Menü zu aktualisieren (siehe unten).
Verwenden Sie diese Ansicht, um Speicherbereiche für eine bestimmte Adresse und Größe zu beobachten. Ein Kommentar wird im Titel zur Vereinfachung angezeigt.

Jedes Mal, wenn die Emulation anhält, werden geänderte Speicherblöcke hervorgehoben.

Registerwerte können einzeln oder alle auf einmal über eine JSON-Datei über das Popup-Menü geändert werden. Der aktuelle Kontext kann auch zur späteren Verwendung in einer JSON-Datei gespeichert werden.



Neben allen im Popup-Menü aufgeführten Funktionen gibt es einige neue Befehle.

Zeigt alle abgebildeten Bereiche an. Verwenden Sie das Popup-Menü, um den Speicher für einen bestimmten Bereich anzuzeigen oder in eine Datei zu dumpen.

Dieser Befehl versucht, IDA-Segmente mit dem abgebildeten Speicher zu synchronisieren, indem er neue Abbildungen erstellt oder vorhandene zusammenführt, wenn möglich. Dies hilft, neue IDA-Segmente zur Laufzeit zum Emulator hinzuzufügen, ohne den Emulator neu starten zu müssen.
Lädt den uEmu-Zustand aus einer Datei.
Speichert den uEmu-Zustand in einer Datei. Bitte beachten Sie, dass nur die in einem Plugin definierten Register gespeichert werden.

Es ist auch möglich, neue Funktionalität hinzuzufügen oder Ihr Projekt auf Basis von uEmu mithilfe des Erweiterungssystems zu erstellen.
Eine Beschreibung mit Beispiel finden Sie hier