Beaenginedelphi ist ein Delphi und eine freie Pascal -Bindung für die Beaengine. Es unterstützt BeaEngine und bietet eine freundliche und einfache Typ-sichere API, die lächerlich leicht zu lernen und schnell abzuholen ist.
BeaEngine ist eine C -Bibliothek, mit der Anweisungen aus 16 Bits, 32 Bits und 64 -Bit -Intel -Architekturen dekodiert wurden. Es enthält Standardanweisungen und Anweisungen, die von FPU, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, VMX, Clmul, AES, MPX, AVX, AVX2, AVX512 (Vex & Evex Prefixes), CET, BMI1, BMI2, BMI2, SGX, SGX, SGX, SGX, SGX, SGX, SGX, SGX, SGX, SGX, SGX, SGX, SGX, SGX, SGX, SGS, enthalten sind. Erweiterungen. Wenn Sie böswillige Codes und allgemeiner verschleierte Codes analysieren möchten, sendet BeaEngine eine komplexe Struktur zurück, die genau die analysierten Anweisungen beschreibt.
Befolgen Sie die folgenden Schritte, um die Beaenginedelphi -Bindung zu installieren:
Klonen Sie das Repository:
git clone https://github.com/delphilite/BeaEngineDelphi.gitFügen Sie das Verzeichnis beaenginedelphi Quellverzeichnis zum Suchpfad von Projekt oder IDE hinzu.
BeaEnginedelphi 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 -Rekord TDisasm in BeaEngineDelphi.pas . Das Beispiel ist unvollständig, kann aber einen Eindruck erwecken, wie man es benutzt.
uses
SysUtils, BeaEngineDelphi;
procedure DisAsmFunctionCode ( const AFunc: Pointer);
var
aDisasm: TDisasm;
nLen: LongWord;
pData: PByte;
B, S: string;
begin
FillChar(aDisasm, SizeOf(TDISASM), 0 );
aDisasm.EIP := UIntPtr(AFunc);
{ $IFDEF CPUX64 }
aDisasm.Archi := ARCHI_X64;
{ $ELSE }
aDisasm.Archi := ARCHI_X32;
{ $ENDIF }
aDisasm.Options := NoTabulation + MasmSyntax;
pData := PByte(AFunc);
repeat
nLen := Disasm(aDisasm);
B := BufferToHex(pData, nLen);
S := Format( ' %.8x %-16s %s ' , [aDisasm.EIP, B, aDisasm.CompleteInstr]);
Writeln(S);
aDisasm.EIP := aDisasm.EIP + nLen;
Inc(pData, nLen);
until (aDisasm.Instruction.Opcode = OPCODE_RET) or (nLen <= 0 );
end ;
begin
try
WriteLn( ' BeaEngine: ' , BeaEngineVersionInfo, ' , DisAsm ExpandFileNameCase ... ' );
WriteLn( ' ' );
DisAsmFunctionCode(@SysUtils.ExpandFileNameCase);
WriteLn( ' ' );
WriteLn( ' Done. ' );
except
on E: Exception do
WriteLn( ' Error Decompiler: ' , E.Message);
end ;
ReadLn;
end .Weitere Beispiele, die auf API auf niedriger Ebene basieren, finden Sie in den Testfällen im DEMOS-Verzeichnis.
Weitere Informationen finden Sie in der BeaEngine -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 Beaengine -Entwicklungsteam für die Erstellung und Aufrechterhaltung der BeaEngine.