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。