Driller、Exploit自动生成引擎 Rex

article/2025/10/8 1:32:59

来自 UCSB 的团队 Shellphish,为参加 DARPA 举办的 CGC 竞赛,设计并实现了 CRS(Cyber Reasoning System)Mechaphish。该系统包含自动化漏洞挖掘模块 Driller、Exploit自动生成引擎 Rex、自动补丁模块 Patcherex 以及 ropchain 生成模块 angrop。本文主要对其中的 Exploit 自动生成引擎 Rex 进行介绍,通过分析 Rex 源码,重点对 Crash 复现及可利用判断部分进行说明。弟作为一只资深菜鸡,文中难免存在不当之处,望各位师傅指正 Orz…

一、概述
Exploit 自动生成引擎 Rex 在硬件模拟器 QEMU 与二进制分析平台 angr 的基础上,通过 Concolic Execution 实现 Exploit 的自动生成。将待分析的应用程序及导致应用程序崩溃的 Crash 作为系统输入,Rex 将复现崩溃路径,并对崩溃时的寄存器状态及内存布局进行分析,判断 Crash 的可利用性,并自动生成 Exploit。

在这里插入图片描述

源码中对漏洞类型的定义:

在这里插入图片描述

二、安装
安装 Rex 存在两种方式:1)安装 Mechaphish,安装文档;2)仅安装 Rex,安装文档。二者的差别在于 Mechaphish 包含漏洞挖掘模块 Driller、自动利用模块 Rex、自动补丁模块 Patcherex 以及 ropchain 生成模块 angrop。由于各模块之间相互独立,因此本文选择仅安装自动利用模块 Rex。本地环境采用 Ubuntu 16.04.5 Desktop(64 bit)。部署过程中,Rex 所需依赖如下:

在这里插入图片描述

依赖过程中部分路径需要调整,根据提示信息修改即可。各个依赖所承担的功能如下:

组件名称 功能
angr A powerful and user-friendly binary analysis
platform! tracer Utilities for generating dynamic traces.
angrop angrop is a rop gadget finder and chain builder.
compilerex POV templates and compilation support for CGC binaries.
compilerex is a hacky cgc binary compiler shellphish-qemu
Shellphish’s pip-installable package of QEMU povsim POV
simulation for CGC.

安装完成后,使用以下代码对 Rex 的功能进行测试。

# triage a crash
>>> crash = rex.Crash("./legit_00003", b"\x00\x0b1\xc1

http://chatgpt.dhexx.cn/article/jn4Y1rHM.shtml

相关文章

Driller复现

文章:(2016-NDSS)Driller - Argumenting Fuzzing Through Selective Symbolic Execution 安装 环境:ubuntu 16.04 下载docker镜像:pull shellphish/mechaphish 运行镜像:docker run -it --privileged shellphish/mechaphish:la…

driller/shellphish安装与简单例程

因为在学习过程中有用到driller,但是安装过程中经常碰到奇奇怪怪的问题,尤其是angr 8发布后全面放弃python2,导致兼容性较差,本人将最后安装成功的过程记录下来,仅供参考。注,时间为2018.11.27,…

Driller分析与改进(二)

Author:ZERO-A-ONEDate:2021-03-20 这个部门我们主要介绍Driller的安装与使用,我使用的环境是腾讯云的VPS: CPU:Intel Xeon Platinum 8255C CPU 2.50GHz * 4vCPUsRAM:4GBOS:Ubuntu 18.04 LTS…

Driller分析与改进(一)

Author:ZERO-A-ONEDate:2021-03-19 一、引子 ​ 关注我的读者们应该对模糊测和符号执行两种技术已经十分熟悉了,那我觉得读者们一定会自然而然的联想到,是不是会存在一种可能性,将模糊测试和符号执行相结合起来&…

Android UVCCamera问题——Cause: null pointer dereference

记录遇到的问题。 采用的开源库链接:https://github.com/saki4510t/UVCCamera 使用该库预览的时候,如果拔掉uvc设备,会造成异常闪退。 signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 Cause: null pointer dereferencer0 000…

null pointer exception解决方法

null pointer exception简称空指针异常 例如在一个 public class Student { private int stuId; private String stuName; private int age; Address addr; } 1.Address addrnew Address();可以直接定义 然后在main函数里可以直接 (Student stunew Stud…

null pointer

init 忘记加return true; 额,记录下,以后不再犯此错。

【Leetcode记录】runtime error: member access within null pointer of type ‘ListNode‘ (solution.cpp) SUMMA

环形链表快慢指针: runtime error: member access within null pointer of type ‘ListNode’ (solution.cpp) SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior prog_joined.cpp:20:19 大白话讲就是编译器不知道你正在使用的是不是空指针中的元素&#…

runtime error: reference binding to null pointer of type ‘int‘ (stl_vector.h)

报错原因:没有指定数组大小 vector在还没有分配任何空间时还不能像数组一样用下标形式去访问vector的(v[0]也不行)!!!否则编译通过但报运行错误runtime error! vector是动态数组,像…

runtime error: member access within null pointer of type ‘TreeNode‘ (solution.cpp)

在做Leetcode题的时候,我做到了一个关于对称二叉树题目,题目如下: 经过编译得出的结果如下: 第14行代码发生了报错 经过我的查找资料和修改发现,在某行访问的指针为空的时候,通常情况下表明程序未对NULL情况…

LeetCode报错:runtime error: member access within null pointer of type ‘struct ListNode‘

错误题目:876. 链表的中间结点 错误原因:试图使用空指针 解决方法:找出等价判断条件进行替换,排除对空指针的引用。 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };…

Leetcode 206 runtime error: member access within null pointer of type

错误如下:当测试案列是[ ]的时候解决办法:将错误处改为if (head NULL || head->next NULL) 原因:由于或和与具有短路效应,左边为真,则直接不判断,当输入为空的时候,null->next不存在&am…

QT警告 zero as null pointer constant原因分析

最近写QT5.9中写代码时遇到了一个警告: 虽然不会影响程序正常编译,但是作为一个有潜在强迫症倾向的人,,必须把它消灭,百度一下,结果就出来了 虽然百度结果明明白白,但是,作为一个工…

力扣报错runtime error: load of null pointer of type ‘int‘解决思路

记录本算法小白刷力扣的这道题遇到的报错 349. 两个数组的交集https://leetcode.cn/problems/intersection-of-two-arrays/ 出现报错的代码 /*** Note: The returned array must be malloced, assume caller calls free().*/ int* intersection(int* nums1, int nums1Size,…

warning C6011: dereferencing NULL pointer <name>

去官网查下这个警告就知道解决办法了 https://docs.microsoft.com/en-us/cpp/code-quality/c6011?viewmsvc-170&viewFallbackFromvs-2019 “To resolve the issue, validate the pointer before use.”:使用前验证下就ok了 if(pointerNULL).......

Unable to handle kernel NULL pointer dereference at virtual address 00000000【转】

本文转载自:https://blog.csdn.net/hpu11/article/details/72628052 这说明是非法指针的使用,才导致系统出错。 [ 1023.510000] Unable to handle kernel NULL pointer dereference at virtual address 00000000[ 1023.520000] pgd c0004000[ 1023.5200…

ncnn报null pointer dereference异常

错误描述 基于c使用ncnn封装了深度学习模型,并将c项目打包成为了一个so库给Android调用,在打包成为so库之前,在Windows系统以及Ubuntu系统利用电脑的camera测试过都能正常运行没有任何异常,打包成so库之后给Android的开发人员调用…

win10用黑屏命令查看正在使用的或使用过的wifi密码

win10用黑屏命令查看正在使用的或使用过的wifi密码 打开黑屏终端: 方法一:win菜单键 R打开运行窗口,输入:cmd ,就可以进入黑屏终端了。方法二:回到桌面,点击win菜单图标旁的搜索,输…

物理机安装linux黑屏,安装ubuntu时黑屏的解决办法(3种)

我电脑显卡是Nvidia显卡~ 重启之后屏幕显示“输入不支持”,这是因为ubuntu对显卡的支持有关,需要手动添加显卡选项:nomodeset,使其支持Nvidia系列显卡 方法一 进入安装时,光标移动到"install ubuntu"&#x…

yum指令安装失败,或导致图形界面黑屏如何解决

前言 最近在学习linux中遇到一个小问题,发现卸载重装firefox导致图形界面黑屏,黑屏之前弹出一个警告。我又重装了几次虚拟机,发现每次都会出现这种错误,最终发现是SELinux设置导致这样的问题。 问题产生和解决 操作步骤如下&am…