Beaenginedelphi es un enlace de Pascal Delphi y libre para el Beaengine. Apoya a BeaEngine y proporciona una API de tipo segura de tipo amigable y simple que es ridículamente fácil de aprender y rápidamente para recoger.
BeaEngine es una biblioteca C diseñada para decodificar instrucciones de 16 bits, 32 bits y 64 bits Intel Architectures. Incluye instrucciones estándar establecidas e instrucciones establecidas desde FPU, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, VMX, CLMUL, AES, MPX, AVX, AVX2, AVX512 (VEX y EVEX PREFIXES), CET, BMI1, BMI2, SGX, UINTR, KL, TDX, AMX, AMX), TDX, TDX) extensiones. Si desea analizar los códigos maliciosos y los códigos más generalmente ofuscados, Beaengine envía una estructura compleja que describe con precisión las instrucciones analizadas.
Para instalar la vinculación de BeaenginedElphi, siga estos pasos:
Clon el repositorio:
git clone https://github.com/delphilite/BeaEngineDelphi.gitAgregue el directorio de fuente BeaenginedElphi a la ruta de búsqueda del proyecto o IDE.
BeaenginedElphi ahora debe aparecer 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 el récord de envoltura TDisasm en BeaEngineDelphi.pas . El ejemplo a continuación está incompleto, pero puede darle una impresión de cómo usarlo.
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 obtener más ejemplos basados en API de bajo nivel, consulte los casos de prueba en el directorio de demostraciones.
Para obtener información más detallada, consulte la documentación de Beaengine.
¡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 Beaengine por crear y mantener el Beaengine.