
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) までお問い合わせください。