0

파이썬을 사용하여 바이너리 파일을 분석합니다. 디버거를 사용하여 동적 분석을 수행했습니다 (즉, 응용 프로그램을 실행하고 중단 점을 사용하여 런타임을 실행). 그러나 PIN과 같은 일부 이진 계측 fremework를 사용할 수 있다면 결과를 향상시킬 수 있습니다. PIN은 C++로 개발되었으며 폐쇄 소스 (DLL 만 제공)로 제공됩니다. 우리는 PinTools라고 불리는 것을 쓰고 있습니다 어디서 무엇을 우리는 가로 채기를 원합니다. 나는 PIN 기능을 파이썬에 포팅하여 파이썬을 계속 사용하고자한다. 나는 "ctypes"와 boost-python을 알고 있습니다.동적 바이너리 계측 프레임 워크에 대한 Python 인터페이스 PIN

내 문제는 PIN을 사용하기 위해 pintool을 작성하고 Pin과 pintool로 BINARY 실행 파일을 실행한다는 것입니다.이 파일은 JIT로 실행중인 애플리케이션과 같습니다. 이제는 ctypes 등을 사용하여 PIN 함수를 가져올 수 있는지, 이진 코드를 동적으로 분석하기 위해이 Python 코드를 사용할 수 있는지 전혀 알지 못합니다. 이 작업을 수행하는 방법에 대한 제안이나 지침을 제공해주십시오.

그래서 너트 앤 셸에서 PIN 프레임 워크에 대한 파이썬 인터페이스 (래퍼)를 만들고 싶습니다.

+0

PIN이 출력 파일을 생성합니까? 출력 파일을 읽으려고하십니까? 그게 "바이너리"란 뜻인가요? PIN의 이진 형식 출력 파일은 무엇입니까? –

+0

@ S.Lott : 'binary'는 컴파일 된 실행 파일을 의미합니다. –

+0

예, 바이너리는 컴파일 된 실행 파일 (예 : PE, ELF 파일)을 의미합니다. 예를 들어, 실행 파일 abc.exe가 있다고 가정 해 봅시다. 동적으로 분석하고 싶다면 다음과 같이 실행합니다 : C : \> pin --my_pintool abc.exe. 여기에서 pintool은 C++ 언어를 사용하고 PIN dll에 정의 된 함수를 호출하고 계측을 즉석에서 수행하는 파일입니다. 런타임에 abc.exe에서. – Sanjay

답변

0

최근에 이것에 대해 생각해 보지 않았지만 나는이 문제에 접근 할 것입니다 : 초기화시에 파이썬 인터프리터를 임베드하고 파이썬 모듈을 임포트하는 pintool을 작성하십시오. SWIG를 사용하여 모든 PIN API 호출에 대한 바인딩을 생성하는 방법을 살펴 보겠습니다. 그런 다음 pintool은 가져온 파이썬 모듈에서 하드 코딩 된 함수를 호출하여 API를 호출하여 더 많은 함수를 등록하고 원하는 작업을 수행합니다.

콜백이 어떻게 작동 할 것인지 잘 모르겠습니다. SWIG에 대해 충분히 알지 못합니다. 또한, 계측하려는 프로그램이 파이썬을 사용한다면 실패 할 수도 있습니다. 그러나 이것이 내가 시작하기 위해이 문제를 해결하려는 방법입니다.

+0

감사합니다. 이것은 내가이 질문을 올렸을 때 내가 약간의 의견을 가지고 시작할 수 있도록 내가 생각하고 있었던 것이다. 나는 분명히 당신이 제안한 방식을 들여다 볼 것입니다. 우리가이 작업을 시작하면 더 나아가는 방법을 알게 될 것입니다. cython, 부스트 - 파이썬 (C-to-Python 및 Python-C)에 사용할 수있는 다른 옵션이 있습니다. 다시 한번 감사드립니다. – Sanjay