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:
+19
-10
@@ -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():
|
||||
|
||||
Reference in New Issue
Block a user