Skip to content

Releases: A-new/aidbg

aidbg 0.3.3

Choose a tag to compare

@A-new A-new released this 23 Oct 09:07

dump 修复版:导出的内存镜像现在可以直接加载运行。

  • 导入表重建:原导入目录被壳破坏/丢失时,扫描数据节的导入指针序列并按模块分组,追加 aidbgIAT 节重建 IMAGE_IMPORT_DESCRIPTOR + 名称表(Scylla 式 fix dump),FirstThunk 指回原槽位;原表完好则原样保留。dump ... noiat 可关闭。
  • keepbase 重定位还原:ImageBase 恢复为 preferred 基址,并按 .reloc 从已重定位指针中减去位移,导出重新可重定位的镜像;.reloc 被壳抹掉时退回"钉在运行基址 + 关 ASLR"并给出提示。
  • INT3 拓印:dump 前自动摘除镜像内所有已植入的 INT3(用户断点与 hide 钩子),dump 后种回——导出文件不再带着 0xCC 崩溃。
  • 修复:Section/FileAlignment 头部偏移读错(曾误读 Subsystem/Win32Version,导致对齐计算全错);重定位还原只处理指针宽度条目(HIGHADJ 等不再误处理)且包含页偏移 0 的合法条目。
  • dump 支持多进程目标(自动读取模块所属进程内存),命令行新增 noiat。
  • 回归:tests/reloc_test.py(973/973 重定位条目还原校验)、tests/iat_reloc_test.py(非零 slide + 损坏导入表组合)、tests/load_dll.exe 加载 dump 调用导出端到端验证。

附件 aidbg.exe:x64 单文件(VC-LTL /MT,零 VC 运行时依赖),自动识别 x86/x64 目标。

aidbg v0.3.2

Choose a tag to compare

@A-new A-new released this 23 Oct 06:02

新增:MCP over HTTP 远程(双机)调试

--mcp --port <n> 在 stdio 之外提供 HTTP 传输,另一台机器上的 MCP 客户端可直接驱动调试器(零新依赖,Winsock 实现):

:: 目标机
aidbg --mcp --port 8799 --bind 0.0.0.0
:: 非回环绑定自动生成并打印 Bearer 令牌;也可 --token <secret> 显式指定
端点 传输
GET /sse + POST /messages?sessionId= 旧版 SSE(endpoint 事件、15s ping)
POST /mcp Streamable HTTP(HTTP 响应即 JSON-RPC 响应)
  • 鉴权:令牌经 Authorization: Bearer(SSE 亦支持 ?token=);默认绑定 127.0.0.1
  • 所有命令单调度线程串行执行,多客户端共享同一调试会话;stdio 行为不变
  • 回归:tests/http_mcp_test.py 16 项全过(含完整远程调试往返)

修复

  • 符号间歇失效(约 25% 复现):Win11 上 CREATE_PROCESS 事件间歇性携带 NULL hFile,主模块以空路径注册进 DbgHelp,该进程整个会话符号不可用。现以 launch 记录的路径兜底 + 首个 LOAD_DLL 时懒解析回填(修复后 world-stop 回归 12/12)
  • HTTP 头/体合并单次发送(修复简单客户端只 recv 一次拿不到体)

完整记录见仓库内文档与提交历史。

🤖 Generated with Claude Code

aidbg v0.3.1

Choose a tag to compare

@A-new A-new released this 23 Oct 01:22

修复(两轮代码复查,全部先运行时复现再修复)

断点正确性

  • next / finish / until 不再静默废掉它们出发时所在的断点(重植统一走 TF 单步路径)
  • 硬件断点按 DR6 槽位匹配;rw 访问类型正确映射;同地址断点去重

内存断点

  • 不再误杀目标:guard 页上范围外 / 访问类型不符的命中改为静默单步后重挂(此前直接 DBG_EXCEPTION_NOT_HANDLED,目标以 0x80000001 退出)
  • 按访问类型过滤(读/写/执行);只对监视范围覆盖的页挂 guard

快照 / 反向执行

  • 捕获前抬升所有已植入的 INT3(用户断点 + hide 钩子),快照保存真实指令字节,不再复活已删除的断点
  • 恢复跳过 MEM_MAPPED 共享视图、不再重写页保护 —— 此前恢复后自由运行必崩(RtlFreeMemoryBlockLookaside AV)
  • snapshot delete 落盘(mark_deleted),compact 可真正回收空间;snapshot load 走引擎的断点纪律

多进程

  • world-stop:停止时挂起全部被调试进程,命令间状态稳定
  • DbgHelp 每进程独立会话:私有模块不同基址不再互串
  • pause 在多进程下可靠(注入断点不再被子进程 loader 断点过滤吞掉)
  • conhost 隔离为系统进程,不参与断点/hide/符号

MCP / 健壮性

  • 含空格路径、数字地址、布尔参数、JSON-RPC batch 严格化、深度/长度限制
  • handles 枚举移至工作线程(3s 超时),同步管道句柄不再卡死调试器
  • dump / hide / snapshot 解码边界校验;eval 错误信息;x64 CONTEXT 偏移修正

完整问题清单与修复记录见仓库内文档。新增 tests/tickpair.cpp + tests/ws_test.py 多进程回归。

🤖 Generated with Claude Code

aidbg 0.3.0

Choose a tag to compare

@A-new A-new released this 22 Oct 07:08

直接调试 DLL + 固定基址回退

  • 直接调试 DLL:file <dll> [export] 即可——aidbg 从自身资源释放内置宿主(x86/x64 双 stub)加载 DLL,export 为可选的加载后调用入口(rundll32 约定)。自动断点链:宿主入口 → DLL 加载(bpload)→ DllMain。实测 x64 DLL 加载于 0x180000000、x86 于 0x10000000(固定基址对 DLL 同样生效),导出内断点正常命中。不给 export 时只加载并保持映射(适合研究 DllMain);找不到导出时宿主以退出码 3 结束
  • 固定基址不再硬失败:系统文件(%SystemRoot%)从不参与改名交换;交换因权限等原因失败时自动回退 ASLR 启动并给出提示,modules 的 slide 显示实际偏移
  • 附:.gitignore 排除固定基址交换残留与链接中间产物

用法与命令手册见仓库 README。

aidbg 0.2.1

Choose a tag to compare

@A-new A-new released this 22 Oct 06:35

代码审查修复

  • 快照落盘保留 XMM/MXCSR:此前从快照容器恢复会把目标的 SSE 寄存器清零(旧快照文件仍可加载)
  • 断点命中命令(bpcmd)禁止执行控制:continue/kill/detach 会重入调试事件泵造成事件失步,现在直接拒绝
  • 固定基址崩溃残留自动恢复:改名交换中途断电后,下次启动发现 .aidbg-orig 会先把原件还原回目标路径
  • 同地址用户断点优先于隐藏钩子:break ntdll!NtClose 这类断点不再被钩子吞掉
  • 透传钩子状态按线程隔离:多线程并发命中不再互换单步事件
  • 小修:setreg xmm 十六进制校验(支持奇数位)、bpload add 参数校验、转发查询写回长度夹紧、hide profile 名不再无限追加、README 注明 NtClose 钩子开销

aidbg 0.2.0

Choose a tag to compare

@A-new A-new released this 22 Oct 04:15

固定基址重做 + 新命令一批

  • 固定基址(ASLR off)改为改名交换:原始文件字节零修改,目标自校验实测通过(x64 0x140000000 / x86 0x400000)
  • label / comment / notes:用户笔记,模块+RVA 锚定,JSON 持久化,标签可直接进表达式
  • bpcmd:断点命中命令(log-and-continue)
  • bpload:模块加载断点(通配符)
  • regs / setreg 支持 XMM0-15 与 MXCSR
  • 修复 eval 把 x+y 误判为模块+偏移(条件断点受影响)
  • 版本号收敛到 src/util/version.h,此后每次发布递增并单独出 Release

详细用法见仓库 README。

aidbg 0.1.0

Choose a tag to compare

@A-new A-new released this 22 Oct 00:59

aidbg 0.1.0 — 面向 AI 的 Windows x86/x64 命令行调试器

  • 单文件 exe,x86/x64 目标自动识别(WOW64 感知),零 VC 运行时依赖
  • JSONL 输出契约 / 脚本模式 / MCP 服务器
  • 软件/硬件/内存断点、条件断点、命中命令 bpcmd、模块加载断点 bpload
  • 反反调试:PEB 补丁 + ntdll API 虚拟化(hide profiles,兼容 scylla_hide.ini)与 al-khaser 式 detect 自查
  • 快照差分压缩回退、IAT 追踪/重建、PE 转储、用户标签/注释(notes)、XMM/MXCSR 寄存器

用法与命令手册见仓库 README。