AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Zydis - X86/X86-64 Disassembler Library
Thema durchsuchen
Ansicht
Themen-Optionen

Zydis - X86/X86-64 Disassembler Library

Ein Thema von Zacherl · begonnen am 23. Feb 2018 · letzter Beitrag vom 1. Nov 2022
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Zacherl
Zacherl
Registriert seit: 3. Sep 2004
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
Miniaturansicht angehängter Grafiken
logo.png   zydisinfo.png  
Angehängte Dateien
Dateityp: rar zydis-pascal.rar (671,2 KB, 15x aufgerufen)
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl (10. Apr 2018 um 19:15 Uhr)
 
Benutzerbild von Zacherl
Zacherl

 
Delphi 10.2 Tokyo Starter
 
#11
  Alt 10. Apr 2018, 19:16
Ahh, habe das Problem endlich finden und beheben können. Delphi übergibt Structs, welche mit const gekennzeichnet sind standardmäßig als Zeiger. FPC pusht unter 32-Bit anscheinend lieber den kompletten Inhalt auf den Stack Habe das Interface manuell auf Zeigertypen geändert. Ist so im Grunde eh näher am C-Original.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

 
Delphi 12 Athens
 
#12
  Alt 10. Apr 2018, 21:54
Ja, CONST ist wie VAR, nur halt "schreibgeschützt" ... das gilt für Typen über 32 Bit. (bis 32 Bit wird meistens optimiert und dann doch der Wert, anstatt einem Zeiger übergeben)

Und gemanagte Typen, ala String, Interface usw. sind eh immer bissl anders.



Mit einer anderen Aufrufkonvention könnte sich das Verhalten eventuell auch ändern.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

 
Delphi 10.2 Tokyo Starter
 
#13
  Alt 10. Apr 2018, 22:29
Ja, CONST ist wie VAR, nur halt "schreibgeschützt" ... das gilt für Typen über 32 Bit. (bis 32 Bit wird meistens optimiert und dann doch der Wert, anstatt einem Zeiger übergeben)
Genau, das gillt für Delphi. FPC hat da scheinbar aber andere Regeln. Musste das Interface so ändern, dass statt const TType jetzt explizit PType verwendet wird.

Edit:
Wobei scheinbar const auch bei Delphi keine Garantie für "pass by reference" ist. In neueren Versionen gibt es hierfür wohl den [Ref] Decorator. Für FreePascal kann man constref verwenden. Um einheitlich zu bleiben habe ich mich jetzt aber für die expliziten Zeigertypen entschieden.

Geändert von Zacherl (10. Apr 2018 um 22:32 Uhr)
  Mit Zitat antworten Zitat
MAXON
 
#14
  Alt 31. Okt 2022, 09:43
Hi,
da ist ein kleiner Fehler in der GitHub Beschreibung...


Extract the Zydis32.dll or Zydis64.dll from the Bin32/Bin64 folder to the directory that contains your application or install the library to your C:\Windows\System32\ (64-bit) / C:\Windows\SysWOW64\ (32-bit) directory

Extract the Zydis32.dll or Zydis64.dll from the Bin32/Bin64 folder to the directory that contains your application or install the library to your C:\Windows\System32\ (32-bit) / C:\Windows\SysWOW64\ (64-bit) directory

Cracks&Nerds wissen es - aber Neulinge eher nicht...
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

 
Delphi 11 Alexandria
 
#15
  Alt 31. Okt 2022, 11:19
Hi,
da ist ein kleiner Fehler in der GitHub Beschreibung...


Extract the Zydis32.dll or Zydis64.dll from the Bin32/Bin64 folder to the directory that contains your application or install the library to your C:\Windows\System32\ (64-bit) / C:\Windows\SysWOW64\ (32-bit) directory

Extract the Zydis32.dll or Zydis64.dll from the Bin32/Bin64 folder to the directory that contains your application or install the library to your C:\Windows\System32\ (32-bit) / C:\Windows\SysWOW64\ (64-bit) directory

Cracks&Nerds wissen es - aber Neulinge eher nicht...
Vielleicht überdenkst Du nochmal Deine Aussage, WOW64 = Windows-On-Windows 64 (dieser Ordner enthält ein 32bit Subsystem um 32bit Prozesse zu starten)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

 
Delphi 12 Athens
 
#16
  Alt 31. Okt 2022, 12:10
Jupp, es heißt im Printip "Windows 32-Subsystem on Windows 64"

Ja, die Namen sind schon etwas krank verwirrend.

System32 = 64 Bit
WoW64 = 32 Bit


Außerdem heißt die API weiterhin Win32, auch wenn sie 64 Bit sein kann. (Vorteil, weil wäre noch verwirrender, wenn 64 Bit eine eigene API hätte, so wie damals Win16)



Der Grund ist aber nicht Microsoft, sondern weil man versuchte die Fehler bescheuerter Programmierer auszumerzen, welche selbst heute immernoch mit hartcodierten Pfaden arbeiten.
Und auch der Grund, warum die SystemPartition seit 'ner Weile immer C ist, auch wenn sie nicht die erste Partition der Festplatte ist.
(ursprünglich wurden Partitionen standardmäßig einfach durchgezählt. zwei mögliche Diskettenlaufwerke und dann C die erste Partition der ersten Festplatte)

Geändert von himitsu (31. Okt 2022 um 12:18 Uhr)
  Mit Zitat antworten Zitat
CCRDude

 
FreePascal / Lazarus
 
#17
  Alt 1. Nov 2022, 10:57
Hi,
da ist ein kleiner Fehler in der GitHub Beschreibung...


Extract the Zydis32.dll or Zydis64.dll from the Bin32/Bin64 folder to the directory that contains your application or install the library to your C:\Windows\System32\ (64-bit) / C:\Windows\SysWOW64\ (32-bit) directory

Extract the Zydis32.dll or Zydis64.dll from the Bin32/Bin64 folder to the directory that contains your application or install the library to your C:\Windows\System32\ (32-bit) / C:\Windows\SysWOW64\ (64-bit) directory

Cracks&Nerds wissen es - aber Neulinge eher nicht...
Wenn's um Cracks vs. Nerds geht, sollten Cracks wissen, dass man besser gar keine Bibliotheken in den Systemordner installiert. Gibt nur Versionschaos, Probleme mit schlechten Uninstallern (ggfls. auch anderer Produkte mit gleicher DLL), Sicherheitsprobleme (Suchpfad DLLs).

Ich persönlich lege den DLL-Pfad sogar im Manifest fest. Sicher ist sicher
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz