Beaenginedelphi是Beaengine的Delphi和免費的pascal結合。它支持Beaengine,並提供了一種友好而簡單的類型安全性API,該API非常容易學習,並且很快就可以拿起。
Beaengine是一個C庫,旨在解碼16位,32位和64位Intel架構的說明。它包括FPU,MMX,SSE,SSE2,SSE2,SSE3,SSE3,SSE4.1,SSE4.2,SSE4.2,VMX,VMX,CLMUL,AES,AES,MPX,AVX2,AVX2,AVX512(VEX和EVEX和EVEX PROPFERIXES),CET,BMI1,klmi1,klmi2,kl,kl,擴展。如果您想分析惡意代碼和更普遍混淆的代碼,那麼Beaengine將寄回一個複雜的結構,描述了精確的分析說明。
要安裝Beaenginedelphi綁定,請按照以下步驟:
克隆存儲庫:
git clone https://github.com/delphilite/BeaEngineDelphi.git將Beaenginedelphi source目錄添加到項目或IDE的搜索路徑中。
Beaenginedelphi現在應在Delphinus Package Manager中列出。
通過Delphinus安裝後,請確保重新啟動Delphi,否則在您的測試項目中可能找不到單元。
其中包括BeaEngineDelphi.pas中的包裝唱片TDisasm 。示例Bellow是不完整的,但它可能會給您留下深刻的印象。
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 .有關基於低級API的更多示例,請參閱Demos目錄下的測試用例。
有關更多詳細信息,請參閱Beaengine文檔。
歡迎捐款!請提供此存儲庫,並提交您的改進請求。
該項目是根據Mozilla公共許可證2.0許可的。有關詳細信息,請參見許可證文件。
特別感謝Beaengine開發團隊創建和維護Beaengine。