Capstonedelphi é uma ligação Pascal Delphi e Grátis para a Biblioteca de Desmontagem Capstone. Ele suporta o Capstone 5 e fornece uma API amigável e simples segura de tipo que é ridiculamente fácil de aprender e rápida de pegar.
A Capstone é uma estrutura de desmontagem, com o alvo de se tornar o melhor mecanismo de DISMASM para análise binária e reversão na comunidade de segurança.
Para instalar a ligação de capstonelphi, siga estas etapas:
Clone o repositório:
git clone https://github.com/delphilite/CapstoneDelphi.gitAdicione o diretório de origem Capstonedelphi ao projeto ou o caminho de pesquisa do IDE.
Certifique -se de ter a biblioteca Capstone 5 instalada no seu sistema. Você pode atualizar as bibliotecas binárias Capstone 5.0.1 pré -compiladas de Pypi, Anaconda, Archlinuxarm, etc.
O capstonedelphi 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 Class TCapstone em Capstone.pas . O exemplo abaixo é incompleto, mas pode dar uma impressão de como usá -lo.
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 .Para obter mais exemplos baseados na API de baixo nível, consulte os casos de teste no diretório de testes.
Para obter informações mais detalhadas, consulte a documentação da Capstone.
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 da Capstone por criar e manter a estrutura de desmontagem da Capstone.