freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

Gtirb:一款针对二进制代码与数据的分析转换工具
Alpha_h4ck 2024-12-08 17:31:28 89229
所属地 广西

关于Gtirb

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

sudo apt-get install gtirb-pprinter ddisasm

代码构建

Gtirb的 C++ API 应该能够使用支持至少 C++17 的 GCC、Clang 和 Visual Studio 编译器在 64 位系统中成功构建。Gtirb使用 CMake,必须至少安装 3.10 版本。

常见的构建过程如下:

mkdir build

cd 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),protobuf可以点击【这里】获取,并保存到合适的位置。

在专用目录中生成 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:【GitHub传送门

参考资料

https://grammatech.github.io/gtirb/

https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java

https://github.com/protocolbuffers/protobuf/releases

# 二进制 # 二进制安全 # 二进制代码分析 # 二进制代码 # 二进制代码重写
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 Alpha_h4ck 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
Alpha_h4ck LV.10
好好学习,天天向上
  • 2359 文章数
  • 1023 关注者
Tetragon:一款基于eBPF的运行时环境安全监控工具
2025-01-21
DroneXtract:一款针对无人机的网络安全数字取证工具
2025-01-21
CNAPPgoat:一款针对云环境的安全实践靶场
2025-01-21
文章目录