Chris1sFlaggin/LCSAJdump
GitHub: Chris1sFlaggin/LCSAJdump
一个基于图分析的架构无关型 ROP/JOP gadget 发现框架,能够识别传统线性扫描器无法检测的非连续指令链。
Stars: 15 | Forks: 0

# [LCSAJdump](https://chris1sflaggin.it/LCSAJdump)
[](https://pepy.tech/projects/lcsajdump)
### *通用基于图的自动化 Gadget 发现框架*
[](https://github.com/Chris1sFlaggin/LCSAJdump)
[](https://opensource.org/licenses/MIT)
**LCSAJdump** 是一个静态分析框架,旨在发现 Return-Oriented Programming (ROP) 和 Jump-Oriented Programming (JOP) gadgets。与传统的扫描器不同,LCSAJdump 是**架构无关**的,并采用基于图的方法来发现那些普通线性工具无法察觉的漏洞。
## 为什么选择 LCSAJdump?
常见的 ROP 扫描器在二进制文件的可执行字节上使用线性的“滑动窗口”方法。这种方法在识别 **Shadow Gadgets** 时会系统性失效:即那些通过无条件跳转或条件分支连接非连续内存块的执行链。
LCSAJdump 通过 **LCSAJ (Linear Code Sequence and Jump)** 分析重构 **Control-Flow Graph (CFG)** 克服了这一限制。通过将二进制文件建模为基本块的有向图,该工具可以识别:
1. **连续 Gadgets:** 以控制流转移结束的标准线性序列。
2. **Shadow Gadgets (非连续):** 通过利用线性扫描无法到达的指令来绕过“坏字节”(例如空字节)的复杂链。
## 关键特性
* **多架构支持:** 原生支持 RISC-V (64GC)、x86-64 和 ARM64,可通过模块化配置文件轻松扩展到其他架构。
* **基于图的分析:** 将 `.text` 段分割为 LCSAJ 基本块,并使用 `NetworkX` 重构流关系。
* **Rainbow BFS 算法:** 专有的从控制流汇点开始的反向广度优先搜索。现已具有 **O(1) 早期丢弃唯一性过滤器** 和 **硬性指令上限**,可防止状态爆炸,即使在密集的 CISC 二进制文件上也能确保超快的分析速度。
* **特定架构的启发式评分:** 基于架构特定特征评估 gadgets 的动态排名系统(例如,对 x86_64/ARM 施加较重的长度惩罚,对关键参数寄存器如 `rdi` 或 `x0` 给予动态奖励)。
* **修剪参数:** 可配置的“Darkness”因子以平衡分析深度和性能,防止循环图中的无限循环。
## 支持的架构
LCSAJdump 旨在通用。目前支持:
* **RISC-V 64-bit (RV64GC):** 完全支持压缩的 16 位指令。
* **x86-64:** 处理可变长度的重叠指令。安全地遍历密集图而不发生内存爆炸。
* **ARM64:** 处理 32 位指令,并通过严格的启发式惩罚深度过滤掉臃肿的 gadgets。
* **其他架构:** 可以通过在 `config.py` 中定义新的配置文件轻松实现。
## 安装
### 通过 Pip(推荐)
```
pip install lcsajdump
```
### 从源码安装(开发)
```
git clone [https://github.com/Chris1sFlaggin/LCSAJdump.git](https://github.com/Chris1sFlaggin/LCSAJdump.git)
cd LCSAJdump
pip install -r requirements.txt
```
## 使用方法
LCSAJdump 提供了强大的 CLI 用于精确的二进制分析:
**标准分析(默认 RISC-V):**
```
python LCSAJdump.py
```
**高级分析(指定架构):**
```
python LCSAJdump.py -a riscv64 -d 15 -k 100 -l 20 --verbose
```
### CLI 选项:
[](https://asciinema.org/a/fC37Fuprs5FHvOKi)
## 输出示例
以下是在所有原生支持的架构上对 `libc.so.6` 运行最大深度 (`-d 25`) 和修剪 darkness (`-k 10`) 的基准测试:
**1. x86_64 分析**
[](https://asciinema.org/a/fi7HWIwX9MlGCpod)
**2. ARM64 分析**
[](https://asciinema.org/a/Ylbm8fxaRPaV496A)
**3. RISC-V (64-bit) 分析**
[](https://asciinema.org/a/bCrwbGaUnxuUMAiy)
## 贡献(欢迎 Fork!)
该框架对新实现持开放态度。要添加新架构:
1. **Fork** 该仓库。
2. 打开 `lcsajdump/core/config.py`。
3. 在 `ARCH_PROFILES` 字典中添加新的配置文件,定义目标架构(例如 x86_64)的跳转助记符、返回助记符和寄存器。
4. 提交 **Pull Request**。
## 许可证
本项目基于 **MIT** 许可证发布。有关详细信息,请参阅 [LICENSE](https://www.google.com/search?q=LICENSE) 文件。
## 项目链接
访问项目网页:[LCSAJdump web page](https://chris1sflaggin.it/LCSAJdump)
由 Chris1sflaggin 制作,作为自动化 Gadget 发现的研究项目。
标签:ARM64, CFG, DNS 反向解析, gadget发现, Hakrawler, JOP, LCSAJ, pwn, Python, RISC-V, ROP, x86-64, 二进制安全, 云安全监控, 云资产清单, 代码重用攻击, 图分析, 影子gadget, 控制流图, 无后门, 架构无关, 特权检测, 跨架构, 逆向工具, 逆向工程, 静态分析, 面向跳转编程, 面向返回编程