Capstonedelphi는 Capstone Disassembler 라이브러리를위한 델파이 및 자유 파스칼 바인딩입니다. Capstone 5를 지원하고 배우기 쉽고 빠르게 픽업하기 쉬운 친절하고 간단한 유형 안전 API를 제공합니다.
Capstone은 이진 분석 및 보안 커뮤니티의 역전을위한 궁극적 인 Disasm 엔진이되는 목표를 가진 분해 프레임 워크입니다.
Capstonedelphi 바인딩을 설치하려면 다음을 수행하십시오.
저장소 복제 :
git clone https://github.com/delphilite/CapstoneDelphi.gitCapstonedelphi 소스 디렉토리를 프로젝트 또는 IDE의 검색 경로에 추가하십시오.
시스템에 Capstone 5 라이브러리가 설치되어 있는지 확인하십시오. PYPI, Anaconda, ArchlinuxArm 등에서 사전 컴파일 된 Capstone 5.0.1 바이너리 라이브러리를 업데이트 할 수 있습니다.
Capstonedelphi는 이제 Delphinus Package Manager에 등재되어야합니다.
Delphinus를 통해 설치 한 후 Delphi를 다시 시작하십시오. 그렇지 않으면 테스트 프로젝트에서 장치를 찾을 수 없습니다.
Capstone.pas 의 래퍼 클래스 TCapstone 이 포함되어 있습니다. Bellow 예제는 불완전하지만 사용 방법에 대한 인상을 줄 수 있습니다.
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를 기반으로 한 더 많은 예는 테스트 디렉토리의 테스트 사례를 참조하십시오.
자세한 내용은 Capstone 문서를 참조하십시오.
기부금을 환영합니다! 이 저장소를 포크하고 개선 사항으로 풀 요청을 제출하십시오.
이 프로젝트는 Mozilla Public License 2.0에 따라 라이센스가 부여됩니다. 자세한 내용은 라이센스 파일을 참조하십시오.
Capstone 분해 프레임 워크를 만들고 유지해 준 Capstone Development 팀에게 특별한 감사를드립니다.