Capstonedelphi ist ein Delphi und eine freie Pascal -Bindung für die Capstone Disassembler -Bibliothek. Es unterstützt Capstone 5 und bietet eine freundliche und einfache Typ-sichere API, die lächerlich leicht zu lernen und schnell abzuholen ist.
Capstone ist ein Demontage -Rahmen mit dem Ziel, zur ultimativen Engine für binäre Analysen und Umkehrungen in der Sicherheitsgemeinschaft zu werden.
Befolgen Sie die folgenden Schritte, um die Capstonedelphi -Bindung zu installieren:
Klonen Sie das Repository:
git clone https://github.com/delphilite/CapstoneDelphi.gitFügen Sie das Capstonedelphi Source -Verzeichnis zum Suchpfad von Projekt oder IDE hinzu.
Stellen Sie sicher, dass die Capstone 5 -Bibliothek auf Ihrem System installiert ist. Sie können vorkompilierte Capstone 5.0.1 Binärbibliotheken von PYPI, Anaconda, Archlinuxarm usw. aktualisieren.
Capstonedelphi sollte nun im Delphinus -Paketmanager aufgeführt werden.
Stellen Sie sicher, dass Sie Delphi nach der Installation über Delphinus neu starten. Andernfalls können die Einheiten in Ihren Testprojekten möglicherweise nicht gefunden werden.
Enthalten ist der Wrapper Class TCapstone in Capstone.pas . Das Beispiel ist unvollständig, kann aber einen Eindruck erwecken, wie man es benutzt.
uses
SysUtils, Capstone;
procedure DisAsmFunctionCode ( const AFunc: Pointer; ASize: Integer = - 1 );
var
aInsn: TCsInsn;
disasm: TCapstone;
nAddr: UInt64;
nSize: NativeUInt;
begin
if ASize < 0 then
nSize := MaxInt
else nSize := ASize;
disasm := TCapstone.Create;
with disasm do
try
{ $IFDEF CPUX64 }
Mode := [csm64];
{ $ELSE }
Mode := [csm32];
{ $ENDIF }
Arch := csaX86;
nAddr := UInt64(AFunc);
if Open(AFunc, nSize) then
while GetNext(nAddr, aInsn) do
begin
WriteLn(aInsn.ToString);
if (ASize < 0 ) and (aInsn.mnemonic = ' ret ' ) then
Break;
end ;
finally
Free;
end ;
end ;
begin
try
WriteLn(Format( ' Capstone Engine: v%s(%s), DisAsm ExpandFileNameCase ... ' , [TCapstone.LibraryVersion, TCapstone.EngineVersion]));
WriteLn( ' ' );
DisAsmFunctionCode(@SysUtils.ExpandFileNameCase);
WriteLn( ' ' );
WriteLn( ' Done. ' );
ReadLn;
except
on E: Exception do
WriteLn(Format( ' Error Decompiler: %s ' , [E.Message]));
end ;
end .Weitere Beispiele, die auf API auf niedriger Ebene basieren, finden Sie in den Testfällen im Tests-Verzeichnis.
Ausführlichere Informationen finden Sie in der Capstone -Dokumentation.
Beiträge sind willkommen! Bitte geben Sie dieses Repository auf und senden Sie Pull -Anfragen mit Ihren Verbesserungen.
Dieses Projekt ist unter der Mozilla Public Lizenz 2.0 lizenziert. Weitere Informationen finden Sie in der Lizenzdatei.
Besonderer Dank geht an das Capstone -Entwicklungsteam für die Erstellung und Aufrechterhaltung des Capstone -Demontage -Frameworks.