zngyngcpu 发表于 2024-3-23 14:23

DbfManager 3.11 注册表,藏得很深

Dbf Manager最新版本是3.11,https:/\astersoft.com/files/dbfmanager.zip。软件可以使用45次,已经确定次数相关信息是存储在注册表 Administrator\NTUSER.DAT。但通过比较注册表找不到头绪,只能通过还原未运行前的注册表文件NTUSER.DAT来再运行45次。有没有好的解决方案,比如改一个字节那种?

爱飞的猫 发表于 2024-3-23 20:26

你可以写个启动器,先重置注册表的该项内容,然后再启动主程序。

冥界3大法王 发表于 2024-3-24 09:06

本帖最后由 冥界3大法王 于 2024-3-24 09:15 编辑

011C2622| 0F84 6A010000      | je dbfmanager.11C2792                   |
011C2628| 8D55 D0            | lea edx,dword ptr ss:         |
011C262B| A1 B0B85701      | mov eax,dword ptr ds:          |
011C2630| 8B80 EC030000      | mov eax,dword ptr ds:          | :PeekMessageW+16E
011C2636| E8 A9CF49FF      | call dbfmanager.65F5E4                  |
011C263B| 8B45 D0            | mov eax,dword ptr ss:         |
011C263E| 8D55 D4            | lea edx,dword ptr ss:         |
011C2641| E8 46432CFF      | call dbfmanager.48698C                  |
011C2646| 8B55 D4            | mov edx,dword ptr ss:         |
011C2649| 8D45 F8            | lea eax,dword ptr ss:            |
011C264C| E8 6FA924FF      | call dbfmanager.40CFC0                  |
011C2651| 8D55 C8            | lea edx,dword ptr ss:         |
011C2654| A1 B0B85701      | mov eax,dword ptr ds:          |
011C2659| 8B80 E8030000      | mov eax,dword ptr ds:          |
011C265F| E8 80CF49FF      | call dbfmanager.65F5E4                  |
011C2664| 8B45 C8            | mov eax,dword ptr ss:         |
011C2667| 8D55 CC            | lea edx,dword ptr ss:         |
011C266A| E8 1D432CFF      | call dbfmanager.48698C                  |
011C266F| 8B55 CC            | mov edx,dword ptr ss:         |
011C2672| 8D45 F4            | lea eax,dword ptr ss:            |
011C2675| E8 46A924FF      | call dbfmanager.40CFC0                  |
011C267A| 6A 00            | push 0                                  |
011C267C| 8D4D F0            | lea ecx,dword ptr ss:         |
011C267F| 8B55 F4            | mov edx,dword ptr ss:            |
011C2682| 8B45 F8            | mov eax,dword ptr ss:            |
011C2685| E8 4EDE6AFF      | call dbfmanager.8704D8                  |
011C268A| 3C 03            | cmp al,3                              |
011C268C| 0F85 B4000000      | jne dbfmanager.11C2746                  |
011C2692| 8B55 F8            | mov edx,dword ptr ss:            |
011C2695| B8 24281C01      | mov eax,dbfmanager.11C2824            | 11C2824:L"RName"
011C269A| E8 D9E56AFF      | call dbfmanager.870C78                  |
011C269F| 84C0               | test al,al                              |
011C26A1| 74 2D            | je dbfmanager.11C26D0                   |
011C26A3| 8B55 F4            | mov edx,dword ptr ss:            |
011C26A6| B8 34281C01      | mov eax,dbfmanager.11C2834            | 11C2834:L"RCode"
011C26AB| E8 C8E56AFF      | call dbfmanager.870C78                  |
011C26B0| 84C0               | test al,al                              |
011C26B2| 74 1C            | je dbfmanager.11C26D0                   |
011C26B4| 6A 40            | push 40                                 |
011C26B6| 68 40281C01      | push dbfmanager.11C2840               | 11C2840:L"Registration"
011C26BB| 68 5C281C01      | push dbfmanager.11C285C               | 11C285C:L"Thank you for your registration!"
011C26C0| 8B45 FC            | mov eax,dword ptr ss:            | :&"臍f"
011C26C3| E8 50634AFF      | call dbfmanager.668A18                  |
011C26C8| 50               | push eax                              |
011C26C9| E8 22E025FF      | call <JMP.&MessageBoxW>               |
011C26CE| EB 1A            | jmp dbfmanager.11C26EA                  |
011C26D0| 6A 40            | push 40                                 |
011C26D2| 68 40281C01      | push dbfmanager.11C2840               | 11C2840:L"Registration"
011C26D7| 68 A0281C01      | push dbfmanager.11C28A0               | 11C28A0:L"Thank you!"
011C26DC| 8B45 FC            | mov eax,dword ptr ss:            | :&"臍f"
011C26DF| E8 34634AFF      | call dbfmanager.668A18                  |
011C26E4| 50               | push eax                              |
011C26E5| E8 06E025FF      | call <JMP.&MessageBoxW>               |
011C26EA| A1 08BA4001      | mov eax,dword ptr ds:          |
011C26EF| 8B00               | mov eax,dword ptr ds:            |
011C26F1| BA C4281C01      | mov edx,<dbfmanager.&JMP.&StretchDIBits | 11C28C4:L"DBF Manager"
011C26F6| E8 3DCF49FF      | call dbfmanager.65F638                  |
011C26FB| 8D45 F0            | lea eax,dword ptr ss:         |
011C26FE| BA 04150000      | mov edx,1504                            |
011C2703| E8 A8846AFF      | call dbfmanager.86ABB0                  |
011C2708| 85C0               | test eax,eax                            |
011C270A| 0F9FC2             | setg dl                                 |
011C270D| A1 08BA4001      | mov eax,dword ptr ds:          |
011C2712| 8B00               | mov eax,dword ptr ds:            |
011C2714| 8B80 E4060000      | mov eax,dword ptr ds:          | :WindowFromPoint+600
011C271A| E8 8D1FB3FF      | call dbfmanager.CF46AC                  |
011C271F| A1 08BA4001      | mov eax,dword ptr ds:          |
011C2724| 8B00               | mov eax,dword ptr ds:            |
011C2726| 8B80 E4060000      | mov eax,dword ptr ds:          | :WindowFromPoint+600
011C272C| 8A90 B8000000      | mov dl,byte ptr ds:             |
011C2732| A1 08BA4001      | mov eax,dword ptr ds:          |
011C2737| 8B00               | mov eax,dword ptr ds:            |
011C2739| 8B80 00070000      | mov eax,dword ptr ds:          | :TMethodImplementationIntercept+2B2DB4
011C273F| E8 681FB3FF      | call dbfmanager.CF46AC                  |
011C2744| EB 4C            | jmp dbfmanager.11C2792                  |
011C2746| 6A 30            | push 30                                 |
011C2748| 68 40281C01      | push dbfmanager.11C2840               | 11C2840:L"Registration"
011C274D| 68 E8281C01      | push dbfmanager.11C28E8               | 11C28E8:L"Key is "
011C2752| 33C9               | xor ecx,ecx                           |
011C2754| 8B55 F4            | mov edx,dword ptr ss:            |
011C2757| 8B45 F8            | mov eax,dword ptr ss:            |
011C275A| E8 21D96AFF      | call dbfmanager.870080                  |
011C275F| 83E0 7F            | and eax,7F                              |
011C2762| FF3485 F40E4001    | push dword ptr ds:       | eax*4+1400EF4:dbkFCallWrapperAddr+66D854
011C2769| 68 04291C01      | push dbfmanager.11C2904               | 11C2904:L", please contact manufacturer!"


AL=3注册成功


010B1F8C| E8 B3E57BFF            | call dbfmanager.870544       ===>Here!
010B1F91| 3C 03                  | cmp al,3                         |
010B1F93| 75 32                  | jne dbfmanager.10B1FC7         |
010B1F95| 33D2                   | xor edx,edx                      |
010B1F97| B8 34200B01            | mov eax,dbfmanager.10B2034       | 10B2034:L"RName"
010B1F9C| E8 D7EC7BFF            | call dbfmanager.870C78         |
010B1FA1| 33D2                   | xor edx,edx                      |
010B1FA3| B8 44200B01            | mov eax,dbfmanager.10B2044       | 10B2044:L"RCode"
010B1FA8| E8 CBEC7BFF            | call dbfmanager.870C78         |
010B1FAD| 8B55 F4                | mov edx,dword ptr ss:   | :&"臍f"
010B1FB0| B8 34200B01            | mov eax,dbfmanager.10B2034       | 10B2034:L"RName"
010B1FB5| E8 BEEC7BFF            | call dbfmanager.870C78         |
010B1FBA| 8B55 F0                | mov edx,dword ptr ss:    | :TMethodImplementationIntercept+8CD2C4
010B1FBD| B8 44200B01            | mov eax,dbfmanager.10B2044       | 10B2044:L"RCode"
010B1FC2| E8 B1EC7BFF            | call dbfmanager.870C78         |

但补丁后程序有自校验会出现runtime XX
所以大白补丁伺候,研究了五分钟,再会!{:301_998:}

冥界3大法王 发表于 2024-3-24 09:58

本帖最后由 冥界3大法王 于 2024-3-24 10:05 编辑

005F28D0| BA C0295F00               | mov edx,dbfmanager.5F29C0                  | 5F29C0:L"\\Software\\EurekaLab\\EurekaLog\\7.0\\License"
显然 还用到了 EurekaLog这个delphi的插件,因此让其崩溃调用堆栈信息自然也就会出来了。


除了UPX外,还有网络

冥界3大法王 发表于 2024-3-24 12:21

还有一段代码位于关于中,强改的话,调用注册信息了,但瞬间崩溃。
疑问1: 标记点竟然没找到
疑问2:注册成功后,后边的信息接不上。
得解决脱壳问题,得干掉调试堆栈的插件。

lies2014 发表于 2024-4-12 17:29

冥界3大法王 发表于 2024-3-24 12:21
还有一段代码位于关于中,强改的话,调用注册信息了,但瞬间崩溃。
疑问1: 标记点竟然没找到
疑问2:注 ...




这个程序有两处验证,都要通过才能注册成功
第一处验证:
(用户名+@@+序列号1-7位)取 SHA1 与(序列号8-末位计算出来的一个比特串)校验
校验函数 在 0x870765,校验成功返回 1



第二处验证:
(序列号1-7位计算出来的一个比特串)用于时间校验,算法同8-末位,验证从 0x870831 开始
这里我跟进去看,共 18000 多行指令,加了一些花指令及废指令,有用的也就 20 行左右
算法不难,具体见截图



第一处验证里面有好几个 call,鉴于第二处的代码量,懒得进去看了
直接返回 1 也能注册成功,有兴趣你可以跟进去找出校验算法

lies2014 发表于 2024-4-12 19:08

用大白做了个补丁,你试试

用法:
将两个 DLL 复制到软件目录
用 key.txt 里的序列号注册(用户名随意)

链接:https://pan.baidu.com/s/1d3NQa4IxeCkwlbziAAVmrg
提取码:9xob

zngyngcpu 发表于 2024-4-12 20:33

lies2014 发表于 2024-4-12 19:08
用大白做了个补丁,你试试

用法:


太感谢了

lies2014 发表于 2024-4-12 20:54

zngyngcpu 发表于 2024-4-12 20:33
太感谢了

抱歉,补丁里面用了绝对目录,你重新下载目录里面的 “DBFManager 和谐补丁.exe”,放到软件目录
运行后勾选“选择释放”,再选择“PYG.dll”和“version.dll”就可以了

吃小包子 发表于 2024-6-12 15:47

感谢分享
页: [1]
查看完整版本: DbfManager 3.11 注册表,藏得很深