关于GtirbGtirb是一款针对二进制代码与数据的分析转换工具,同时也是一款机器代码分析和重写数据结构的工具。它旨在促进执行二进制反汇编、分析和转换,并且支持以良好格式输出程序之间的二进制IR通信。摘要:关于GtirbGtirb是一款针对二进制代码与数据的分析转换工具,同时也是一款机器代码分析和重写数据结构的工具。它旨在促进执行二进制反汇编、分析和转换,并且支持以良好格式输出程序之间的二进制IR通信。
Gtirb以 LLVM-IR 为模型,旨在提供类似的功能,即鼓励工具之间的通信和互操作性。
功能结构Gtirb的结构如下,实线表示继承。虚线表示通过 UUID 引用:工具要求CMake v3.10.0+
Protobuf v3.0.0+
Boost v1.67+
Gtirb支持在Windows 和 Ubuntu 20 上 轻松安装,并提供了公共Docker镜像。
工具安装Python API
可以使用 pip 从 PyPI 安装最新的稳定 GTIRB Python API:
pip install gtirb或从预先构建的轮子中安装最新的不稳定版本的 Python API:
pip install https://download.grammatech.com/gtirb/files/python/gtirb-0.dev-py3-none-any.whlWindows
Windows 版本打包为 .zip 文件,获取地址:
Ubuntu
Ubuntu 20 的软件包可在 GTIRB apt 存储库中找到,可以按照以下说明进行安装。
首先,添加 GrammaTech 的 APT 密钥:
wget -O - https://download.grammatech.com/gtirb/files/apt-repo/conf/apt.gpg.key | apt-key add -接下来更新 sources.list 文件:
echo "deb [arch=amd64] https://download.grammatech.com/gtirb/files/apt-repo [distribution] [component]"| sudo tee -a /etc/apt/sources.list最后更新您的包数据库并安装核心Gtirb工具:
sudo apt-get updatesudo apt-get install gtirb-pprinter ddisasm代码构建
Gtirb的 C++ API 应该能够使用支持至少 C++17 的 GCC、Clang 和 Visual Studio 编译器在 64 位系统中成功构建。Gtirb使用 CMake,必须至少安装 3.10 版本。
常见的构建过程如下:
mkdir buildcd build# Note: You may wish to add some -D arguments to the next command. See below.cmakecmake --build .# Run the test suite.ctest
为了定制 Gtirb构建,您可以通过导航到构建目录并运行来获取定制选项列表:
cmake -LH工具使用Python应用程序
安装协议缓冲区编译器(protoc)。如果还没有安装 Python protobuf 库,请安装它。
$ pip install protobuf在专用目录中生成 Python 消息定义(例如python/)。
$ mkdir -p python$ for f in src/proto/*.proto; do protoc -Isrc/proto --python_out=python $f done编写应用程序。确保它导入了IR_pb2或您需要的部分。
运行应用程序,确保包含您的消息定义的目录位于PYTHONPATH.
Java应用程序
安装协议缓冲区编译器(protoc)。在专用目录中生成 Java 消息定义(例如 java/):
$ mkdir -p java protoc -Isrc/proto --java_out=java $f done编译 Java 消息定义:
$ mkdir -p java/classfiles $ CLASSPATH=javac -d java/classfiles java/proto/*.java
编写应用程序,确保它从proto包中导入需要的所有类。编译并运行应用程序即可。
许可证协议本项目的开发与发布遵循MIT开源许可协议。
项目地址Gtirb:
在这里,拓宽网安边界https://mvnrepository.com/artifact/com.google.protobuf/protobuf-javahttps://github.com/protocolbuffers/protobuf/releases
来源:FreeBuf