首页 > 其他分享 >Gtirb:一款针对二进制代码与数据的分析转换工具

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

时间:2024-12-18 20:54:26浏览次数:3  
标签:Gtirb java proto 二进制 安装 apt gtirb 一款

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

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 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)。在专用目录中生成 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开源许可协议。

项目地址

https://github.com/GrammaTech/gtirb

原创 Alpha_h4ck FreeBuf

标签:Gtirb,java,proto,二进制,安装,apt,gtirb,一款
From: https://www.cnblogs.com/o-O-oO/p/18615825

相关文章

  • Obfuscar:一款针对.NET程序的开源代码混淆工具
    关于ObfuscarObfuscar是一款针对.NET程序的开源代码混淆工具,该工具支持使用大量重载将.NET程序集中的元数据(包括方法、属性、事件、字段、类型和命名空间的名称)重命名为最小集合,在大多数情况下仅通过签名即可区分。例如,如果某个类仅包含接受不同参数的方法,则可以将它们全部重......
  • 二进制中1的个数(C语言)
    写一个函数返回参数二进制中1的个数(三种方法)主函数main的代码intmain(){ intnum=0; scanf("%d",&num); //接收1的个数 intn=count_num_of_1(num); printf("%d\n",n); return0;}方法一intcount_num_of_1(unsignedintn){ intcount=0; while......
  • 一款渗透测试信息收集集成工具--mitan密探
    本工具仅供安全测试人员运用于授权测试,禁止用于未授权测试,违者责任自负。作者及本公众号相关负责人不对您使用该工具所产生的任何后果负任何法律责任,在扫描模块使用多线程,在测试过程中根据目标的实际情况进行调整,切勿进行大线程低延时的大规模快速扫描,以免对目标服务造成不......
  • AlmaLinux 10.0 Beta “Purple Lion” - RHEL 二进制兼容免费发行版
    AlmaLinux10.0Beta“PurpleLion”-RHEL二进制兼容免费发行版由社区提供的免费Linux操作系统,RHEL二进制兼容发行版请访问原文链接:https://sysin.org/blog/almalinux-10/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org由社区提供的免费Linux操作系统一......
  • 用腾讯云AI代码助手开发一款数据库敏感信息检查工具
    引言作为一个优秀的IT技术民工,需要始终学习先进的技术并将技术转换为生产力,目前AI领域编码辅助工具层出不穷,开发者有必要或者说必须要掌握相关工具的使用,以提高编码效率,降低编码错误。这次我通过一个简单的项目和大家分享一下腾讯云AI代码助手的使用。AI开发实践开发环......
  • 简约设计」:用 Vue.js 打造一个现代个人博客,简单易用! 「从 0 到 1」:前端开发者的个人博
    效果图......
  • 推荐一款强大的开源物联网 Web 组态软件
    前言快速发展的物联网(IoT)领域,设备管理和监控的需求日益增长。为了满足这一需求并提供更高效的解决方案。向大家推荐一款强大的开源物联网Web组态软件。这款软件不仅具备灵活的可视化配置功能,还提供了丰富的工具和接口,轻松实现设备集成、数据监控和远程管理。项目介绍一拖一拽,......
  • Send_Email:一款轻量化可定制模板的邮件批量发送工具
    免责声明本工具仅供学习、测试及研究使用,严禁用于任何形式的非法或未经授权的用途。如因违规使用导致任何后果,责任自负,请遵守相关法律法规。以下文章来源于薛定谔的安全,作者iak3ecSend_Email:一款轻量化可定制模板的邮件批量发送工具|可用于攻防钓鱼或其他邮件个性化的场景......
  • OPA828IDR OPA2828 数据手册一款低失调电压、低温漂、低噪声输入运算放大器芯片
    OPA828和OPA2828(OPAx828)JFET输入运算放大器是OPA627和OPA827的下一代产品,兼具高速度、高直流精度和高交流性能。这些运算放大器可提供低失调电压、低温漂、低偏置电流和低噪声,噪声仅为60nVRMS0.1Hz至10Hz。OPAx828在±4V至±18V的宽电源电压范围内工作,每通道电......
  • 高级Python游戏开发:打造一款平台跳跃游戏
    平台跳跃游戏是经典的游戏类型,类似于《超级马里奥》风格,玩家控制角色通过跳跃、移动等操作避开障碍物并完成目标。本项目用Pygame开发一个高级的2D平台跳跃游戏。一、游戏特色玩家控制:控制角色左右移动和跳跃。平台生成:生成多个平台,玩家可以跳到平台上。障碍物:动态移......