
CUDA 기반 GPU의 가상 명령어 집합 아키텍처인 PTX를 리버스 엔지니어링하기 위한 Binary Ninja 플러그인입니다.
작성자: Nicolò Altamura
Binary Ninja를 통해 PTX 코드를 탐색하세요
_ptxNinja_는 CUDA 기반 GPU의 가상 아키텍처 언어인 PTX를 대상으로 하는 Binary Ninja용 아키텍처 플러그인입니다. 이를 통해 다음을 수행할 수 있습니다:
플러그인은 Binary Ninja의 플러그인 관리자를 사용하여 설치할 수 있습니다.
수동 설치를 원할 경우, Binary Ninja의 플러그인 폴더에서 다음 단계를 따르세요:
git clone https://github.com/seekbytes/ptxninja.git
cd ptxninja
# optionally: use a virtual environment
python -m venv ptxninja-env
source ptxninja-env/bin/activate
# install requirements
pip install ptx-parser
가상 환경을 사용하는 경우, Binary Ninja 설정에서 site-packages 경로를 수동으로 지정해야 합니다.
어디서부터 시작해야 할지 모르겠거나 PTX 파일을 본 적이 없다면, examples/ 디렉터리에 있는 몇 가지 토이 커널을 확인해 보세요. 다음이 포함됩니다:
PTX는 텍스트 형식 언어를 기반으로 하며, nvdisasm/cuobjdump의 출력에는 이미 바이너리에 삽입된 많은 정보가 포함되어 있습니다. 텍스트를 다루려면 파서 테스트를 위한 정밀한 문법을 구축해야 하지만, 몇 가지 한계가 있습니다:
atom)이 완전히 지원되지는 않습니다cuobjdump/cufilt 미화가 아직 적용되지 않았습니다자세한 내용은 Nicolò Altamura(@nicolodev)에게 문의하세요.