Hallo zusammen,
Was ist Zydis?
Die Zyan Disassembler Library (Zydis) ist eine plattformunabhängige X86/X86-64 Disassembler Library geschrieben in C. Bei der Entwicklung wurde neben Korrektheit (des Disassemblys) auch insbesondere auf Performance und eine kleine Codegröße Wert gelegt. Die Bibliothek unterstützt hierbei alle zum heutigen Tage existierenden ISA-Extensions. Der gesamte Code beinhaltet eine umfassende Doxygen Dokumentation.
Detailierte Informationen über das Zydis Projekt und die dazugehörigen C-Sourcen (MIT Lizenz) gibt es auf GitHub (Englisch):
https://github.com/zyantific/zydis
Zydis Pascal:
Hierbei handelt es sich um die Pascal-Bindings (Low-Level Übersetzung und Top Level Wrapper Klassen) für Zydis. Ein Kompilat der .DLL und die .OBJ-Dateien für statisches Linken (32- und 64-Bit), sowie ein paar Beispiele liegen dem Archiv ebenfalls bei.
Die aktuellste Version der Bindings und die dazugehörigen
Binaries (.DLLs und .OBJ Dateien), finden sich auch immer in unserem GitHub Repository (Englisch):
https://github.com/zyantific/zydis-pascal
Readme:
Die Pascal Bindings unterstützen sowohl dynamisches, als auch statisches Linken:
- Dynamisch
- Zydis32.dll
bzw. Zydis64.dll
aus Bin32
bzw. Bin64
in das Verzeichnis der eigenen Anwendung, oder nach C:\Windows\System32\
(64-Bit) bzw. C:\Windows\SysWOW64\
(32-Bit) kopieren
- Die Compilerdirektive {$DEFINE ZYDIS_DYNAMIC_LINK}
in der Zydis.pas
aktivieren (standardmäßig an)
- Statisch
- Die Verzeichnisse Bin32
bzw. Bin64
in den Root-Ordner der Pascal Bindings kopieren (bereits erledigt, wenn ihr das Archiv hier aus dem Thread herunterladet)
- Die Compilerdirektive {$DEFINE ZYDIS_DYNAMIC_LINK}
in der Zydis.pas
deaktivieren
- Wenn statisch gelinkt wird, sollte die Bibliothek neben Windows auch auf allen Unixoiden bzw. mobilen Systemen vollständig lauffähig sein, da keine Plattformspezifischen Funktionen importiert werden
Roadmap:
- Doxygen Dokumentation für die Bindings
- Unterstützung für ältere Delphi Versionen und FreePascal
Viele Grüße
Zacherl