Beanginedelphi - это Delphi и свободное связывание Pascal для Beengine. Он поддерживает Beengine и предоставляет дружелюбный и простой API-защитник, который смехотворно легко выучить и быстро забрать.
Beengine - это библиотека C, предназначенная для декодирования инструкций из 16 бит, 32 бит и 64 бит Intel Architectures. Он включает в себя стандартные инструкции и инструкции, установленные из FPU, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, VMX, CLMUL, AES, MPX, AVX, AVX2, AVX512 (VEX & EVEX PREFIXES), CET, BMI1, BMI2, SGX, UINTR, KL. Если вы хотите проанализировать вредоносные коды и, в более широком смысле, запутанные коды, Beengine отправляет сложную структуру, которая точно описывает анализируемые инструкции.
Чтобы установить привязку Beeanginedelphi, выполните следующие действия:
Клонировать репозиторий:
git clone https://github.com/delphilite/BeaEngineDelphi.gitДобавьте справочник BeangineLphi Source в проект или путь поиска IDE.
Beanginedelphi теперь должен быть перечислен в Delphinus Package Manager.
Обязательно перезапустите Delphi после установки через Delphinus, иначе единицы не могут быть найдены в ваших тестовых проектах.
В комплекте включен TDisasm Robper в BeaEngineDelphi.pas . Пример реже является неполным, но он может создать впечатление, как его использовать.
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 .Для получения дополнительных примеров, основанных на API низкого уровня, обратитесь к тестовым случаям в каталоге DEMOS.
Для получения более подробной информации обратитесь к документации Beagine.
Взносы приветствуются! Пожалуйста, распадайте этот репозиторий и отправьте запросы на привлечение с помощью ваших улучшений.
Этот проект лицензирован в соответствии с общественной лицензией Mozilla 2.0. Смотрите файл лицензии для получения подробной информации.
Особая благодарность команде развития Beagine за создание и поддержание маяка.