Beeenginedelphiは、ビーンジンのデルファイと無料のパスカルバインディングです。 Beaengineをサポートし、途方もなく簡単に学ぶことができ、すぐにピックアップするフレンドリーでシンプルなタイプセーフAPIを提供します。
Beaengineは、16ビット、32ビット、64ビットのインテルアーキテクチャからの命令をデコードするために設計されたCライブラリです。 It includes standard instructions set and instructions set from FPU, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, VMX, CLMUL, AES, MPX, AVX, AVX2, AVX512 (VEX & EVEX prefixes), CET, BMI1, BMI2, SGX, UINTR, KL, TDX and AMX拡張機能。悪意のあるコードとより一般的に難読化されたコードを分析する場合、Beaengineは、分析された命令を正確に説明する複雑な構造を送り返します。
Beeenginedelphiバインディングをインストールするには、次の手順に従ってください。
リポジトリをクローンします:
git clone https://github.com/delphilite/BeaEngineDelphi.gitBeeenginedelphi ソースディレクトリをプロジェクトまたはIDEの検索パスに追加します。
Beenginedelphiは、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 Public License 2.0の下でライセンスされています。詳細については、ライセンスファイルを参照してください。
Beaengineを作成して維持してくれたBeaNgine Developmentチームに感謝します。