mewiteor/AutoDbg
GitHub: mewiteor/AutoDbg
AutoDbg 是一个无头多语言自动化调试引擎,通过 C 核心 + Lua/Python 中间件架构解决传统调试器难以脚本化、缺乏 AI 生态集成的问题。
Stars: 0 | Forks: 0
# AutoDbg
[](https://opensource.org/licenses/MIT)
[]()
[]()
[]()
**[English](./README.md)** | **[中文](./README.zh.md)**
**AutoDbg** 是一个现代化的无头(headless)调试引擎,专为**自动化逆向工程**和**AI 驱动的分析**而设计。
与严重耦合 UI 线程和遗留 API 的传统调试器(例如 x64dbg、OllyDbg)不同,AutoDbg 采用了**“纯 C 核心 + 多语言中间件”**架构。它将底层的极致控制(C/C++)与高层生态系统(LuaJIT / Python)解耦,使开发者能够以现代脚本语言的优雅来协调 Ring 3 断点、内存和线程。
## 🌟 为什么选择 AutoDbg?
传统引擎(如 TitanEngine)在现代自动化需求面前常常显得力不从心:缺乏上下文的回调(无法使用闭包)、痛苦的跨语言 FFI,以及高频断点期间严重的延迟。AutoDbg 从头开始设计,旨在解决这些瓶颈:
- **🧩 真正的闭包与状态机支持**
所有原生回调都严格强制使用 `void* user_context` 参数。无论是在 Lua 中编写嵌套回调还是在 Python 中传递闭包,状态都能被完美映射,无需依赖全局变量。
- **⚡ 极致性能与内存快照**
通过内置的内存快照和 Scatter-Gather 批量读取机制,克服跨进程 API(`ReadProcessMemory`)的物理延迟。将高频 IPC 转化为纳秒级的本地内存解析。
- **🧠 兼容 AI 与生态系统(原生支持 Python)**
导出针对 Python 的 `cffi` 高度优化的纯 C ABI(`extern "C"`)。在断点回调中直接导入 `capstone` 进行反汇编,使用 `pefile` 进行结构解析,或调用 LLM 来分析寄存器状态。
- **🪶 轻量级 Lua 独立宿主**
将核心引擎与 Lua/LuaJIT 打包成单一、便携的 `.exe`。无需安装,即使在 Windows XP 等老旧系统上也能运行复杂的自动化脚本。
## 🏗️ 架构
AutoDbg 采用了严格的三层分离设计:
1. **核心引擎(纯 C/C++ 静态库)**
处理 OS 调试 API(Win32 Debug API / Linux `ptrace`)、PE/ELF 解析以及线程上下文。**零脚本依赖**,导出纯 C ABI 和不透明句柄。
2. **Lua 中间件(独立宿主)**
将核心引擎与 LuaJIT 链接。利用 FFI 实现零开销的原生调用,非常适合**高频中断响应**和**老旧操作系统兼容**。
3. **Python 中间件(扩展模块)**
通过 `cffi` 动态加载核心引擎。提供 `asyncio` 事件流包装器,非常适合**复杂数据分析**、**网络通信**和**AI 模型集成**。
## 🚀 核心功能
- **多类型断点**:INT3 软件断点、硬件(DRx)断点和 PageGuard 内存断点。
- **深度系统感知**:原生支持 x64 `RUNTIME_FUNCTION` 堆栈展开、C++ 异常处理(EH)对象的深度转储,以及 TLS 回调拦截。
- **反反调试基础**:内置 PEB 标志修复和 Ntdll API 内联补丁。
- **线程安全设计**:完全基于句柄(`SessionHandle`),支持在单个进程内并发调试多个目标。
## 💻 快速开始
### Python:AI 与生态系统集成
利用 Python 的 `asyncio` 和丰富的生态系统来构建线性、易读的自动化脚本。
```
import asyncio
import capstone
from autodbg import DebugSession
async def trace_large_allocations():
session = DebugSession()
await session.start("C:\\target.exe")
md = capstone.Cs(capstone.CS_ARCH_X86, capstone.CS_MODE_64)
# Nested closures and state machines are natively supported
async def on_malloc_hit(ctx):
size = ctx.rdi
if size > 1000:
# Seamlessly use Python ecosystem (Memory Snapshot)
caller_rip = ctx.rsp
code = session.read_memory_snapshot(caller_rip, 32)
print(f"\n[!] Large allocation: {size} bytes")
for insn in md.disasm(code, caller_rip):
print(f" 0x{insn.address:x}:\t{insn.mnemonic}\t{insn.op_str}")
if insn.mnemonic == 'ret': break
await session.set_breakpoint("msvcrt.dll", "malloc", on_malloc_hit)
await session.resume()
asyncio.run(trace_large_allocations())
```
### Lua:高频与老旧环境
通过独立的 `autodbg.exe` 运行。零依赖,通过 LuaJIT FFI 实现极速执行。
```
-- autodbg.exe script.lua
local state = { hits = 0 }
Run({
imagepath = "C:\\target.exe",
callback = function(pid, tid)
SetBreakpoint({
modname = "kernel32.dll",
rva = FindFuncRva("kernel32.dll", "CreateFileW"),
callback = function(info)
state.hits = state.hits + 1
local ctx = GetContext(info.tid)
-- LuaJIT FFI zero-overhead register access
print(string.format("[Hit %d] CreateFileW called! RCX: %p", state.hits, ctx.Ccx))
end
})
end
})
```
## 🗺️ 路线图
- [ ] **阶段 1**:Win32 核心引擎(软件断点、异常处理、PE 解析、x64 堆栈展开)。
- [ ] **阶段 2**:Lua/LuaJIT 独立宿主集成与闭包回调支持。
- [ ] **阶段 3**:硬件(DRx)与内存(PageGuard)断点。
- [ ] **阶段 4**:Python `cffi` 中间件与 `asyncio` 事件流包装器。
- [ ] **阶段 5**:引入 Linux `ptrace` 和 `process_vm_readv` 的跨平台 HAL。
- [ ] **阶段 6**:集成 Capstone/Unicorn 实现 AI 驱动的自动脱壳工作流。
## 🤝 贡献与许可
本项目正在积极开发中。热烈欢迎提交 Issue、PR 以及进行架构讨论!
基于 MIT 许可证分发。有关更多信息,请参见 `LICENSE`。
标签:C/C++, Lua, Python, rizin, 事务性I/O, 云资产清单, 无后门, 网络调试, 自动化, 计算机取证, 逆向工具, 逆向工程