作者:Nicolò Altamura
通过 Binary Ninja 探索 PTX 代码
ptxNinja 是一个面向 Binary Ninja 的架构插件,针对 PTX——基于 CUDA 的 GPU 虚拟架构语言。它允许你:
该插件可以通过 Binary Ninja 的插件管理器安装。
如需手动安装,请在 Binary Ninja 的插件目录中执行以下步骤:
git clone https://github.com/seekbytes/ptxninja.git
cd ptxninja
# 可选:使用虚拟环境
python -m venv ptxninja-env
source ptxninja-env/bin/activate
# 安装依赖
pip install ptx-parser
如果你使用虚拟环境,需要在 Binary Ninja 设置中手动设置 site-packages 路径。
如果你不确定从哪里开始,或者从未见过 PTX 文件,可以查看 examples/ 目录下的一些示例内核。其中包括:
PTX 基于文本格式语言,nvdisasm/cuobjdump 的输出已经包含了大量插入到二进制文件中的信息。处理文本需要构建精确的语法来测试解析器,然而存在一些限制:
atom)都得到完全支持cuobjdump/cufilt 的美化处理如需了解更多信息,请联系 Nicolò Altamura(@nicolodev)。