个人觉得Binary Ninja很优秀的二进制分析工具,这里简单来总结一下其Python API的使用方法(Ubuntu系统):
首先Binary Ninja在Ubuntu上基本上是绿色软件,不需要安装,在这里有介绍:https://docs.binary.ninja/getting-started.html。
在其安装目录下找到Script目录,在终端中运行:
python3 install_api.py
(因为我同时在用Python3和Python2.7),运行之后,就可以在Python工程里直接调用其相应API了。不过这里吐槽一下其官网文档,不是应该给大家详细介绍这些么,一上来介绍了很多wrtie plugin的东西,虽然也很重要,可哪有调用其API方便呢。
下面的代码展示了如何Print一个可执行文件中的所有文件名,很简单粗暴有木有:
from binaryninja import *
import time
bv = BinaryViewType.get_view_of_file('util.o')
bv.update_analysis()
time.sleep(5)
for func in bv.functions:
print(func.symbol.name)
其他更复杂的Python API功能可以参考其API Document:https://api.binary.ninja/
就简单总结这么多。
(这篇博客整理的时候也参考了一些文章,例如这篇:http://arm.ninja/2016/03/08/intro-to-binary-ninja-api/ )