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

admin 2024年12月18日21:13:33评论8 views字数 1877阅读6分15秒阅读模式
Gtirb:一款针对二进制代码与数据的分析转换工具
关于Gtirb

Gtirb是一款针对二进制代码与数据的分析转换工具,同时也是一款机器代码分析和重写数据结构的工具。它旨在促进执行二进制反汇编、分析和转换,并且支持以良好格式输出程序之间的二进制IR通信。

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

Gtirb以 LLVM-IR 为模型,旨在提供类似的功能,即鼓励工具之间的通信和互操作性。

功能结构

Gtirb的结构如下,实线表示继承。虚线表示通过 UUID 引用:

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

工具要求

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 文件,获取地址:

https://download.grammatech.com/gtirb/files/windows-release/

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 <path/to/gtirb>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$ for f in src/proto/*.proto; do     protoc -Isrc/proto --java_out=java $f  done

编译 Java 消息定义:

$ mkdir -p java/classfiles $ CLASSPATH=<path/to/protobuf_jar>javac -d java/classfiles java/proto/*.java

编写应用程序,确保它从proto包中导入需要的所有类。编译并运行应用程序即可。

许可证协议

本项目的开发与发布遵循MIT开源许可协议。

项目地址

Gtirb

https://github.com/GrammaTech/gtirb

原文始发于微信公众号(FreeBuf):Gtirb:一款针对二进制代码与数据的分析转换工具

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月18日21:13:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Gtirb:一款针对二进制代码与数据的分析转换工具http://cn-sec.com/archives/3525210.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息