mewiteor/AutoDbg

GitHub: mewiteor/AutoDbg

AutoDbg 是一个无头多语言自动化调试引擎,通过 C 核心 + Lua/Python 中间件架构解决传统调试器难以脚本化、缺乏 AI 生态集成的问题。

Stars: 0 | Forks: 0

# AutoDbg [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![C](https://img.shields.io/badge/Core-C%2FC%2B%2B-00599C?style=flat&logo=c&logoColor=white)]() [![Python](https://img.shields.io/badge/Binding-Python-3776AB?style=flat&logo=python&logoColor=white)]() [![Lua](https://img.shields.io/badge/Binding-Lua%2FLuaJIT-2C2D72?style=flat&logo=lua&logoColor=white)]() **[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, 云资产清单, 无后门, 网络调试, 自动化, 计算机取证, 逆向工具, 逆向工程