CapstoNeLphi - это Delphi и свободное связывание Pascal для библиотеки Capstone Disasssembler. Он поддерживает Capstone 5 и обеспечивает дружеский и простой API, безопасный для типа, который смехотворно легко выучить и быстро забрать.
Capstone - это рамка разборки с целью стать конечным двигателем Disasm для бинарного анализа и обращения в сообществе безопасности.
Чтобы установить связывание CapstoNeLphi, выполните следующие действия:
Клонировать репозиторий:
git clone https://github.com/delphilite/CapstoneDelphi.gitДобавьте каталог CapstoNeLphi Source в проект или путь поиска IDE.
Убедитесь, что в вашей системе установлена библиотека Capstone 5. Вы можете обновить предварительно скомпилированные двойные библиотеки Capstone 5.0.1 из PYPI, Anaconda, Archlinuxarm и т. Д.
CapstodeNelphi теперь должен быть указан в Delphinus Package Manager.
Обязательно перезапустите Delphi после установки через Delphinus, иначе единицы не могут быть найдены в ваших тестовых проектах.
Включен в комплект TCapstone Class Class в Capstone.pas . Пример реже является неполным, но он может создать впечатление, как его использовать.
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 .Для получения дополнительных примеров, основанных на API низкого уровня, обратитесь к тестовым случаям в каталоге Tests.
Для получения более подробной информации обратитесь к документации Capstone.
Взносы приветствуются! Пожалуйста, распадайте этот репозиторий и отправьте запросы на привлечение с помощью ваших улучшений.
Этот проект лицензирован в соответствии с общественной лицензией Mozilla 2.0. Смотрите файл лицензии для получения подробной информации.
Особая благодарность команде разработки Capstone за создание и поддержание рамки разборки Capstone.