Beaenginedelphi est une liaison de Delphi et Pascal libre pour le Beaennegine. Il soutient BeaEngine et fournit une API sympathique et simple et sécurisée qui est ridiculement facile à apprendre et rapide à ramasser.
BeaEngine est une bibliothèque C conçue pour décoder les instructions de 16 bits, 32 bits et 64 bits architectures Intel. Il comprend des instructions standard ensemble et des instructions définies à partir de FPU, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, VMX, CLMUL, AES, MPX, AVX, AVX2, AVX512 (VEX & EVEX PRÉFIXES), CET, BMI, BMI2, SGX, UINTR, KL, TDX et AMX extensions. Si vous souhaitez analyser les codes malveillants et plus généralement des codes obscurcis, BeaEngine renvoie une structure complexe qui décrit précisément les instructions analysées.
Pour installer la liaison BeaEngnedelphi, suivez ces étapes:
Clone le référentiel:
git clone https://github.com/delphilite/BeaEngineDelphi.gitAjoutez le répertoire BeaEnginedElphi Source au chemin de recherche du projet ou de l'IDE.
BeaEnginelphi 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 le TDisasm d'enregistrement de l'emballage dans BeaEngineDelphi.pas . L'exemple ci-dessous est incomplet, mais il peut vous donner une impression de l'utiliser.
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 .Pour plus d'exemples basés sur l'API de bas niveau, reportez-vous aux cas de test dans le répertoire des démos.
Pour plus d'informations détaillées, reportez-vous à la documentation BeaEngine.
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 BeaEnnegine pour avoir créé et maintenu le BeaEngine.