Gtirb:一款针对二进制代码与数据的分析转换工具

摘要:关于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.whl

Windows

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.cmake

cmake --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

相关推荐