Capstonedelphi est une liaison Delphi et Pascal libre pour la bibliothèque de désassembleur de Capstone. Il prend en charge Capstone 5 et fournit une API sympathique et simple en sécurité de type qui est ridiculement facile à apprendre et rapide à ramasser.
Capstone est un cadre de démontage avec la cible de devenir le moteur Ultimate Disasm pour l'analyse binaire et l'inversion de la communauté de la sécurité.
Pour installer la liaison CapstoneDelphi, suivez ces étapes:
Clone le référentiel:
git clone https://github.com/delphilite/CapstoneDelphi.gitAjoutez le répertoire CapstoneDelphi Source au chemin de recherche du projet ou de l'IDE.
Assurez-vous que la bibliothèque Capstone 5 est installée sur votre système. Vous pouvez mettre à jour les bibliothèques binaires précompilées Capstone 5.0.1 de PYPI, Anaconda, Archlinuxarm, etc.
CapstoneDelphi devrait désormais être répertorié dans Delphinus Package Manager.
Assurez-vous de redémarrer Delphi après l'installation via Delphinus, sinon les unités ne se trouvent pas dans vos projets de test.
Inclus est la classe Wrapper TCapstone dans Capstone.pas . L'exemple ci-dessous est incomplet, mais il peut vous donner une impression de l'utiliser.
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 .Pour plus d'exemples basés sur l'API de bas niveau, reportez-vous aux cas de test dans le répertoire des tests.
Pour des informations plus détaillées, reportez-vous à la documentation Capstone.
Les contributions sont les bienvenues! Veuillez débarquer ce référentiel et soumettre des demandes de traction avec vos améliorations.
Ce projet est autorisé en vertu de la Mozilla Public License 2.0. Voir le fichier de licence pour plus de détails.
Un merci spécial à l'équipe de développement de Capstone pour la création et le maintien du cadre de démontage de Capstone.