Beenenginedelphi é uma ligação Pascal Delphi e Livre para o Beengine. Ele suporta Beaengine e fornece uma API amigável e simples segura por tipo que é ridiculamente fácil de aprender e rápida.
Beaengine é uma biblioteca C projetada para decodificar instruções de 16 bits, 32 bits e 64 bits Intel Architecturas. 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 extensões. Se você deseja analisar códigos maliciosos e os códigos ofuscados, mais geralmente, Beaengine envia de volta uma estrutura complexa que descreve com precisão as instruções analisadas.
Para instalar a ligação Beaenginedelphi, siga estas etapas:
Clone o repositório:
git clone https://github.com/delphilite/BeaEngineDelphi.gitAdicione o diretório de origem Beaenginedelphi ao projeto ou caminho de pesquisa do projeto.
Beenenginedelphi agora deve estar listado no Delphinus Package Manager.
Certifique -se de reiniciar o Delphi após a instalação do Via Delphinus, caso contrário, as unidades não poderão ser encontradas em seus projetos de teste.
Incluído está o wrapper Record TDisasm em BeaEngineDelphi.pas . O exemplo abaixo é incompleto, mas pode dar uma impressão de como usá -lo.
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 .Para obter mais exemplos baseados na API de baixo nível, consulte os casos de teste no diretório demos.
Para obter informações mais detalhadas, consulte a documentação de Beaengine.
As contribuições são bem -vindas! Por favor, faça este repositório e envie solicitações de puxar com suas melhorias.
Este projeto está licenciado sob a licença pública de Mozilla 2.0. Consulte o arquivo de licença para obter detalhes.
Agradecimentos especiais à equipe de desenvolvimento de Beaengine por criar e manter o Beaengine.