Skip to content

v1.6.1

Choose a tag to compare

@angusdevgo angusdevgo released this 26 Oct 07:45
· 1 commit to main since this release

v1.6.1

English | 简体中文


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

  1. 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: +0x1D0 to +0x5E0.
  2. 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 .data constant 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.
  3. 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 0x69 byte immediately left of Site #1 became 0x6D, 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).
  4. 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

  1. Close IDM completely (tray icon included).
  2. Run the new IDM_Pro_Tool.exe as administrator and apply Mode 1.
  3. Verify idmvers reads v6.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。

弹窗是症状,不是新增的反篡改机制。

本次工作

  1. 定位十个失配位点 —— 以 build 15.3 已验证偏移为锚点运行通用滑动汉明定位器。十个位点全部在 64 字节窗口内以 3–10 的汉明距离锁定(随机期望 ≈ 62),属于纯代码位移而非语义重写。段内位移非均匀:+0x1D0 至 +0x5E0。
  2. 逐位点 capstone 语义验证 —— 15 个代码位点在两版中均落在指令边界且助记符完全一致(test eax,eax、and eax,0xf、push -1、push ebp、je、jne、jne rel32);.data 常量块逐字节相同。位点 12 属于操作数补丁(mov eax,1 → mov eax,0),是唯一补丁偏移落在指令内部的位点。
  3. 六版本特征码重生成(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/位点)。
  4. 旧版本零回归确认 —— 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

升级指引

  1. 完全关闭 IDM(含托盘图标)。
  2. 以管理员身份运行新版 IDM_Pro_Tool.exe,执行方式一。
  3. 确认 idmvers 显示为 v6.43b16 Full。

若你的环境仍停留在 build 15 或更早版本,无需任何操作 —— 引擎对全部六个受支持版本保持向后兼容。


Package

IDM_Pro_Tool_v1.6.1.zip — 334,702 B
SHA-256 22E22662CB72D6C496707BB7F65C7A554943A845F356A0D3693C8D2CFC6FC3C5