Capstonedelphi es una unión de Pascal Delphi y libre para la biblioteca de desarmador Capstone. Admite Capstone 5 y proporciona una API amigable y simple segura de tipo que es ridículamente fácil de aprender y rápidamente recoger.
Capstone es un marco de desmontaje con el objetivo de convertirse en el mejor motor Disasmo para el análisis binario y la inversión en la comunidad de seguridad.
Para instalar la unión CapstonedElphi, siga estos pasos:
Clon el repositorio:
git clone https://github.com/delphilite/CapstoneDelphi.gitAgregue el directorio de fuente CapstonedElphi a la ruta de búsqueda del proyecto o IDE.
Asegúrese de tener la biblioteca Capstone 5 instalada en su sistema. Puede actualizar las bibliotecas binarias precompiladas Capstone 5.0.1 de Pypi, Anaconda, Archlinuxarm, etc.
Capstonedelphi ahora debe figurar en Delphinus Package Manager.
Asegúrese de reiniciar Delphi después de instalar a través de Delphinus, de lo contrario, las unidades no se pueden encontrar en sus proyectos de prueba.
Se incluye la clase de envoltura TCapstone en Capstone.pas . El ejemplo a continuación está incompleto, pero puede darle una impresión de cómo usarlo.
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 obtener más ejemplos basados en API de bajo nivel, consulte los casos de prueba en el directorio de pruebas.
Para obtener información más detallada, consulte la documentación de Capstone.
¡Las contribuciones son bienvenidas! Bifurque este repositorio y envíe solicitudes de extracción con sus mejoras.
Este proyecto tiene licencia bajo la Licencia Pública de Mozilla 2.0. Consulte el archivo de licencia para obtener más detalles.
Un agradecimiento especial al equipo de desarrollo de Capstone por crear y mantener el marco de desmontaje de Capstone.