CapstoneDelphi
Version 5.0.1
Capstonedelphi是Capstone拆卸器库的Delphi且免费的Pascal绑定。它支持Capstone 5,并提供了一种友好而简单的类型安全性API,该API非常容易学习,并且很快就可以拿起。
Capstone是一个拆卸框架,其目标是成为安全界二进制分析和逆转的最终障碍引擎。
要安装Capstonedelphi绑定,请按照以下步骤:
克隆存储库:
git clone https://github.com/delphilite/CapstoneDelphi.git将Capstonedelphi source目录添加到项目或IDE的搜索路径中。
确保系统上安装了Capstone 5库。您可以从PYPI,Anaconda,Archlinuxarm等更新预编译的Capstone 5.0.1二进制库。
现在,应在Delphinus软件包管理器中列出Capstonedelphi。
通过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公共许可证2.0许可的。有关详细信息,请参见许可证文件。
特别感谢Capstone Development Team创建和维护Capstone拆卸框架。