Capstonedelphiは、Capstone ResosemblerライブラリのDelphiと無料のPascal Bindingです。 Capstone 5をサポートし、途方もなく簡単に学ぶことができ、すぐにピックアップできるフレンドリーでシンプルなタイプセーフAPIを提供します。
Capstoneは、セキュリティコミュニティでのバイナリ分析と逆転のための究極の排出エンジンになるという目標を持つ分解フレームワークです。
Capstonedelphiバインディングをインストールするには、次の手順に従ってください。
リポジトリをクローンします:
git clone https://github.com/delphilite/CapstoneDelphi.gitCapstonedelphi SourceディレクトリをプロジェクトまたはIDEの検索パスに追加します。
システムにCapstone 5ライブラリをインストールしていることを確認してください。 Pypi、Anaconda、Archlinuxarmなどから、Precompiled Capstone 5.0.1バイナリライブラリを更新できます。
Capstonedelphiは、Delphinus Package Managerにリストされるようになりました。
Delphinusを介してインストールしたらDelphiを再起動してください。そうしないと、ユニットはテストプロジェクトには見つかりません。
Capstone.pasのラッパークラスTCapstoneが含まれています。 Bellowは不完全ですが、それをどのように使用するかという印象を与えるかもしれません。
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 .低レベルのAPIに基づくその他の例については、テストディレクトリのテストケースを参照してください。
詳細については、Capstoneのドキュメントを参照してください。
貢献は大歓迎です!このリポジトリをフォークし、改善点でプルリクエストを送信してください。
このプロジェクトは、Mozilla Public License 2.0の下でライセンスされています。詳細については、ライセンスファイルを参照してください。
Capstoneの分解フレームワークを作成および維持してくれたCapstone Developmentチームに感謝します。