Repository navigation
v1.6.1
v1.6.1
English
Build 16 (6.43.16.3) Support — Registration Dialog Regression Fixed
After IDM's official updater silently pushed build 16, previously activated installations started showing the registration dialog (resource ID 138) again on every launch.
Root cause. Build 16 is not a minor revision. Relative to build 15.3:
| Section | Change |
|---|---|
.text |
+250,864 bytes (+245 KB) |
.reloc |
+10,736 bytes |
.rdata |
+26,508 bytes |
.data |
+2,464 bytes |
.rsrc |
±0 bytes (unchanged) |
Section virtual addresses shifted by +0x3D000 (.rdata) through +0x44000 (.rsrc / .reloc). Against the v1.6.0 five-release signature table, only 5 of 16 sites still matched. The engine therefore did exactly what it was designed to do — abort with zero bytes written — leaving the binary stock and the entitlement at v6.43b16 Trial.
The dialog was a symptom, not a new anti-tamper mechanism.
What was done
- Located the ten missing sites using a generalised sliding-Hamming locator anchored on verified build 15.3 offsets. All ten resolved at Hamming distances of 3–10 across a 64-byte window (random expectation ≈ 62) — pure code displacement, not semantic rewrite. In-section shift was non-uniform:
+0x1D0to+0x5E0. - Verified every site semantically with capstone. All 15 code sites land on an instruction boundary with an identical mnemonic in both builds (
test eax,eax,and eax,0xf,push -1,push ebp,je,jne,jne rel32); the.dataconstant block is byte-identical. Site #12 is an operand patch (mov eax,1→mov eax,0) — the only site whose patch offset falls inside an instruction. - Regenerated signatures across six releases (b10 / 11.2 / 11.3 / 12.3 / 15.3 / 16.3). Adding build 16 narrowed the common invariant region further: a
0x69byte immediately left of Site #1 became0x6D, contracting the left extension from 2 bytes to 1. Signature length is capped at 48 bytes per site — long enough that accidental collisions are implausible, short enough to tolerate future code drift. Final table: 16 sites / 366 bytes (avg 22.9 B/site). - Confirmed zero regression on legacy releases. Patched output hashes for builds 10, 11.2, 11.3, 12.3 and 15.3 are byte-identical to v1.5.1.
Cross-validation
Two independent implementations produce the same result:
| Implementation | build 16.3 patched SHA-256 |
|---|---|
C# engine (ApplyPatch) |
8F77A3E8…A029B5EE |
| Standalone Python reference patcher | 8F77A3E8…A029B5EE |
The differential byte audit confirms 32 changed bytes in the overlapping region — all inside patch sites ∪ PE checksum ∪ security directory — plus a 10,608-byte Authenticode tail truncation. Nothing outside the whitelist changed.
Verified on real hardware
| Check | Result |
|---|---|
idmvers registry value |
v6.43b16 Full (was v6.43b16 Trial) |
| Window title | Internet Download Manager 6.43 — no (Trial) suffix |
| Registration dialog on cold start | absent |
IDMan.exe.BAK auto-refresh |
Correctly replaced the stale build 15.3 backup with the build 16.3 original |
| Binary size | 6,490,480 → 6,479,872 bytes |
Test suite
118 / 118 assertions pass (previously 98). Additions: a full build 16.3 end-to-end version block, plus SHA-256 regression baselines for all six supported releases, so any future drift in patch output fails the suite immediately.
Version fingerprints
| build 15 (6.43.15.3) | build 16 (6.43.16.3) | |
|---|---|---|
| Stock size | 6,201,712 B | 6,490,480 B |
| Stock SHA-256 | 279CEED9…8A7CE737 |
75AC33A7…C2145285 |
| Stock PE checksum | 0x005F549C |
0x00630D90 |
| Patched size | 6,191,104 B | 6,479,872 B |
| Patched SHA-256 | 5891512A…7780CF5D |
8F77A3E8…A029B5EE |
| Patched PE checksum | 0x005F3D7B |
0x0063A19B |
Upgrade instructions
- Close IDM completely (tray icon included).
- Run the new
IDM_Pro_Tool.exeas administrator and apply Mode 1. - Verify
idmversreadsv6.43b16 Full.
If your installation is still on build 15 or earlier, no action is required — the engine remains backward compatible with all six supported releases.
简体中文
支持 build 16 (6.43.16.3) —— 修复注册对话框回归
IDM 官方更新器静默推送 build 16 后,此前已激活的环境每次启动都会重新弹出注册对话框(资源 ID 138)。
根因。 build 16 并非小版本修订。相比 build 15.3:
| 节区 | 变化 |
|---|---|
.text |
+250,864 字节(+245 KB) |
.reloc |
+10,736 字节 |
.rdata |
+26,508 字节 |
.data |
+2,464 字节 |
.rsrc |
±0 字节(逐字节不变) |
节区虚拟地址整体位移 +0x3D000(.rdata)至 +0x44000(.rsrc / .reloc)。用 v1.6.0 的五版本特征码表扫描,16 个位点仅命中 5 个。引擎因此严格执行了设计契约 —— 零字节写入中止 —— 二进制保持原版,特权状态回落为 v6.43b16 Trial。
弹窗是症状,不是新增的反篡改机制。
本次工作
- 定位十个失配位点 —— 以 build 15.3 已验证偏移为锚点运行通用滑动汉明定位器。十个位点全部在 64 字节窗口内以 3–10 的汉明距离锁定(随机期望 ≈ 62),属于纯代码位移而非语义重写。段内位移非均匀:
+0x1D0至+0x5E0。 - 逐位点 capstone 语义验证 —— 15 个代码位点在两版中均落在指令边界且助记符完全一致(
test eax,eax、and eax,0xf、push -1、push ebp、je、jne、jne rel32);.data常量块逐字节相同。位点 12 属于操作数补丁(mov eax,1→mov eax,0),是唯一补丁偏移落在指令内部的位点。 - 六版本特征码重生成(b10 / 11.2 / 11.3 / 12.3 / 15.3 / 16.3)。纳入 build 16 后共同稳定区进一步收窄:位点 1 左侧的
0x69在 build 16 变为0x6D,左扩展由 2 字节收缩为 1 字节。单条签名上限设为 48 字节 —— 足够长使误命中不可信,足够短以抵御未来代码漂移。最终全表:16 位点 / 366 字节(平均 22.9 B/位点)。 - 旧版本零回归确认 —— build 10 / 11.2 / 11.3 / 12.3 / 15.3 的修补产物哈希与 v1.5.1 逐字节一致。
交叉验证
两套独立实现产出完全相同的结果:
| 实现 | build 16.3 修补后 SHA-256 |
|---|---|
C# 引擎(ApplyPatch) |
8F77A3E8…A029B5EE |
| 独立 Python 参考实现 | 8F77A3E8…A029B5EE |
差异字节审计确认重叠区仅 32 字节变化 —— 全部落在「补丁位点 ∪ PE 校验和 ∪ 签名目录」内 —— 另有 10,608 字节 Authenticode 尾部截断。白名单外零改动。
真机验证
| 校验项 | 结果 |
|---|---|
idmvers 注册表值 |
v6.43b16 Full(原为 v6.43b16 Trial) |
| 窗口标题 | Internet Download Manager 6.43 —— 无 (Trial) 后缀 |
| 冷启动注册对话框 | 不存在 |
IDMan.exe.BAK 自动刷新 |
正确将陈旧的 build 15.3 备份替换为 build 16.3 原版 |
| 二进制体积 | 6,490,480 → 6,479,872 字节 |
测试套件
118 / 118 断言全部通过(原为 98)。新增:完整的 build 16.3 端到端版本块,以及全部六个受支持版本的 SHA-256 回归基线 —— 未来任何补丁产物漂移都会立刻使测试失败。
版本指纹
| build 15 (6.43.15.3) | build 16 (6.43.16.3) | |
|---|---|---|
| 原版体积 | 6,201,712 字节 | 6,490,480 字节 |
| 原版 SHA-256 | 279CEED9…8A7CE737 |
75AC33A7…C2145285 |
| 原版 PE 校验和 | 0x005F549C |
0x00630D90 |
| 修补后体积 | 6,191,104 字节 | 6,479,872 字节 |
| 修补后 SHA-256 | 5891512A…7780CF5D |
8F77A3E8…A029B5EE |
| 修补后 PE 校验和 | 0x005F3D7B |
0x0063A19B |
升级指引
- 完全关闭 IDM(含托盘图标)。
- 以管理员身份运行新版
IDM_Pro_Tool.exe,执行方式一。 - 确认
idmvers显示为v6.43b16 Full。
若你的环境仍停留在 build 15 或更早版本,无需任何操作 —— 引擎对全部六个受支持版本保持向后兼容。
Package
IDM_Pro_Tool_v1.6.1.zip — 334,702 B
SHA-256 22E22662CB72D6C496707BB7F65C7A554943A845F356A0D3693C8D2CFC6FC3C5