🎯 v1.4.0 — 修复 build 11.3 注册对话框弹窗 · 可选位点版本自适应
本次为缺陷修复版本,专治 IDM 6.43 build 11.3 上「已成功激活却仍弹注册对话框」的问题。
🔴 关键修复
1. 修复 build 11.3 启动即弹「注册 Internet Download Manager」对话框
现象
工具执行模式一后,IDM 功能已全部解锁(关于界面点亮终身许可),但 11.3 启动时仍弹出注册对话框(标题「注册 Internet Download Manager」,含 名字 / 姓氏 / 电子邮件 / 序列号 四个输入框)。
根因
官方在 build 11.3 中新增了一条对抗逻辑:
读取注册表 Serial(新键 SOFTWARE\Internet Download Manager)
└─ 失败 → 读取 Serial(全局键 HKCU\Software\DownloadManager)
└─ 两次都失败 → 弹出注册对话框(资源 ID 138)
而本工具早期策略是「删除 Serial 键」,依据是「无 Serial + 有 FName = 终身合法授权」。
该假设在 b10 / 11.2 成立 —— 那两个版本的同一分支只是句柄清理,不会弹框;
但 11.3 把这条分支改成了弹框,删除 Serial 恰好命中。
| 版本 | 「Serial 缺失」分支行为 | 打补丁后 |
|---|---|---|
| build 10 | 仅清理句柄,继续执行 | 无弹窗 ✓ |
| build 11.2 | 仅清理句柄,继续执行 | 无弹窗 ✓ |
| build 11.3 | 调用注册对话框 | ★ 弹窗(缺陷) |
修复
新增第 15 个补丁位点「注册对话框抑制」:
| 项 | 值 |
|---|---|
| 补丁 | 74 → EB(je → jmp) |
| 语义 | 永远走「Serial 已存在」路径,跳过弹框且不改变后续逻辑 |
| 适用范围 | 仅 build 11.3(b10 / 11.2 特征码零命中,自动跳过) |
2. 新增「可选位点」机制(Optional · 版本自适应)
第 15 位点是 11.3 专属,在 b10 / 11.2 上代码布局完全不同(那边是句柄清理路径)。
若沿用「全部位点必须命中」的旧门禁,引擎会在 b10 / 11.2 上误判并拒绝打补丁。
v1.4.0 为 AobPoint 引入 Optional 标志:
| 位点类型 | 命中 | 未命中 |
|---|---|---|
| 必需位点 | 正常打补丁 | 中止写入,零字节落盘 |
| 可选位点 | 正常打补丁 | 打印「跳过可选位点(本版本无此逻辑)」,不阻断 |
门禁判定改为 必需位点全中 == 必需位点总数。
收益:一套引擎同时适配三个版本,无需任何版本分支判断。
✅ 版本自适应验证
| 版本 | 生效位点 | 差异字节 | 产物 SHA-256 |
|---|---|---|---|
| build 10 | 14 / 15(可选跳过) | 30 | 712BD0D9…36FCC79CC6 与 v1.3.0 完全一致 |
| build 11.2 | 14 / 15(可选跳过) | 30 | 3470B5B8…DEA6CD601D8 与 v1.3.0 完全一致 |
| build 11.3 | 15 / 15 | 31 | 641A6D97…B6CC404763E |
零回归保证:b10 / 11.2 的产物哈希与 v1.3.0 逐字节相同。
🧪 回归测试 61/61 全绿
| 类别 | 内容 |
|---|---|
| 校验和算法 | 三版本官方原版 PE 校验和复现 |
| 端到端 | b10 / 11.2 / 11.3 打补丁 + 合法性 + 幂等 |
| 差异白名单 | 所有改动必须落在预期位点内 |
| 陈旧 BAK | 自动刷新 + 旧备份归档 + 还原正确 |
| 还原守卫 | 版本不一致必须拒绝且不覆盖 |
| 负向用例 | 节区截断 / 特征码不符 / 空文件 / 非 PE → 拒绝且零写入 |
新增 tests/QuickPatch.cs —— 最小引擎驱动,便于对任意产物做离线验证。
📌 方法论沉淀
本次定位遇到静态交叉引用完全断裂(对话框由 vtable 间接调用创建,call rel32 引用为 0),
改用 Frida 运行时插桩破局:
- 钩
CreateDialogIndirectParamA统一入口 → 打印对话框模板标题 + 回溯栈 - 静态 VA → 运行时地址换算(
delta = base - 0x400000) - 排除 MSVC SEH handler 的栈帧噪声
- 在判定点读全局指针,运行时解出被加密的注册表值名 =
"Serial"
核心教训:注册表是策略面(官方可随时针对性封堵),
二进制分支才是判定面(稳定)。版本演进时应优先在判定面打桩。
📦 包内文件
IDM_Pro_Tool.exe 主程序(x64 GUI,241 KB)
README.md 完整文档(含可选位点机制说明)
LICENSE MIT
app_icon.png 窗口图标
🚀 使用
- 解压到任意目录(建议右键「以管理员身份运行」)
- 主界面选择 「模式一:极速深度解锁」
- 等待完成提示,重启 IDM 即可
升级提示:若你已用 v1.3.0 打过补丁,直接运行 v1.4.0 模式一即可 ——
引擎会识别已补丁位点(幂等),仅补上新增的第 15 位点。
⚠️ 免责声明
本项目仅供逆向工程、PE 文件结构、Windows 内部机制等技术学习与安全研究之用。
请于下载后 24 小时内自行删除。若该软件对您有帮助,请购买官方正版授权。
📄 许可证变更
自本版本起,本项目由 MIT 更正为 GNU General Public License v3.0(GPL-3.0)。
| 你可以 | 你需要 |
|---|---|
| ✅ 使用(含商业用途) | 📌 衍生作品必须同样以 GPL-3.0 开源并附完整源码 |
| ✅ 研究、修改源码 | 📌 保留原始版权声明与许可证文本 |
| ✅ 复制、再发布 | 📌 修改过的文件需标明「已修改」及日期 |
| ✅ 发布自己的版本 | 📌 不得施加 GPL 之外的额外限制 |
⚠️ 本软件按「原样」提供,作者不承担任何担保责任。完整条款见 LICENSE。