fix: restore register and registry-write functions, fix keygen format

- Restore sub_1400F9690 (register function) to original
- Restore sub_140155E90 (registry write) to original
- Keygen now generates 26-char keys: YYYYMMDD + 18 random chars
- Matches Honeycam's regex validation: [2][0-1][0-9][0-9][0-1][0-9][0-3][0-9]
- 7 patches: 2x return 1 + 4x NOP + 1x jz->jmp
This commit is contained in:
2026-07-31 07:40:58 +08:00
parent ef8d1e1e5d
commit 697e7175e8
+19 -10
View File
@@ -71,8 +71,6 @@ PATCHES = [
'sub_1401558B0 (Edition read -> return 1)'),
(0x1577D0, b'\x4C\x89\x4C\x24\x20\x4C', b'\xB0\x01\xC3',
'sub_1401581D0 (online verify -> return 1)'),
(0x155490, b'\x48\x89\x5C\x24\x18\x55', b'\xB0\x01\xC3',
'sub_140155E90 (registry write -> return 1)'),
(0x0F8F09, b'\x0F\x85\x51\x05\x00\x00', b'\x90\x90\x90\x90\x90\x90',
'NOP: key length check'),
(0x0F8F16, b'\x0F\x8C\x44\x05\x00\x00', b'\x90\x90\x90\x90\x90\x90',
@@ -83,8 +81,6 @@ PATCHES = [
'NOP: @ position check'),
(0x0F8F54, b'\x74\x1B', b'\xEB\x1B',
'jz -> jmp (skip lm.dll key validation)'),
(0x0F8C90, b'\x48\x89\x5C\x24\x20\x4C', b'\xB0\x01\xC3',
'sub_1400F9690 (register function -> return 1)'),
]
@@ -290,14 +286,27 @@ def do_restore():
def generate_keygen(email):
"""生成注册码"""
"""生成注册码
Honeycam 注册码格式: 26 字符
- 前 8 位: 日期 YYYYMMDD (正则 [2][0-1][0-9][0-9][0-1][0-9][0-3][0-9])
- 后 18 位: 任意字符
"""
import datetime
seed = int(hashlib.md5(email.encode()).hexdigest()[:8], 16)
rng = random.Random(seed)
segments = []
for _ in range(4):
seg = ''.join(rng.choices('0123456789ABCDEF', k=8))
segments.append(seg)
return '-'.join(segments)
# 前 8 位: 日期 (2019-2021 年范围, 匹配正则 [2][0-1][0-9][0-9])
year = rng.randint(2019, 2021)
month = rng.randint(1, 12)
day = rng.randint(1, 28)
date_prefix = f"{year}{month:02d}{day:02d}"
# 后 18 位: 随机字符
charset = string.ascii_letters + string.digits
suffix = ''.join(rng.choices(charset, k=18))
return date_prefix + suffix
def do_keygen():