吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9713|回复: 97
收起左侧

[原创] 某卸载工具的破解过程

  [复制链接]
yll20024 发表于 2022-3-19 11:41
本帖最后由 yll20024 于 2022-3-19 11:48 编辑

目标软件:Uninstall Tool 3.5.10,未注册版本只能试用30天。本人使用的环境:Windows 7虚拟机

1

1

测试发现,软件使用了重启验证的方式,猜测是将输入的注册名和密钥保存在注册表或文件中,然后当软件启动的时候读取注册表或文件,判断输入内容是否正确。

2

2

对写注册表函数RegSetValueXXX下断点。

3

3

运行程序,随便输注册名和密钥,点注册后程序会停下来。

4

4

发现程序对RN键写入了0x002CB828处的字符串,在寄存器窗口可以看见这个字符串,这个应该就是加密后的注册名或者密钥。

5

5

再确定一下RN键在哪个位置,Alt+K查看调用堆栈,在如图所示位置 右键->显示调用

6

6

可以确定RN键在HKEY_CURRENT_USER\Software\CrystalIdea Software\Uninstall Tool

7

7

继续运行程序,又在RegSetValueExW断下来,这次写入了RC键,键值和RN键的类似,是经过加密的字符串,应该是加密后的注册名或者密钥。

8

8

继续运行程序,弹出信息框,提示要重启验证。
所以现在有了清晰的思路,该程序将注册名和密钥加密后写注册表,然后重启,当再次运行时读取注册表中的值,解密,判断输入内容是否正确。因此下一步就是对读注册表函数下断点。
分别尝试对RegOpenKey(A)、RegOpenKeyEx、RegQueryValue(A)、RegQueryValueEx下断点,重新载入程序运行,但是经过反复重载、运行,并没有发现程序有对RC键、RN键操作。只能换另一种方式。
窗口的标题有“未注册版本”字样,猜测应该有个地方对是否注册进行判断,然后再设置窗口标题,因此想到对SetWindowText(A/W)下断点。

9

9

分别在Command编辑框输入bp SetWindowTextA回车、bp SetWindowTextW回车,重新载入程序,多次按F9运行,直到堆栈窗口出现“未注册版本”。

10

10

Alt+K,查看调用堆栈,在最后一项 右键->显示调用。

11

11

发现上面有个跳转跳到显示“未注册版本”的CALL,猜测这个可能是关键跳,改成je试试。

12

12

确实没有“未注册版本”了,但是程序还是没有注册,因为帮助菜单还有“输入密钥”,而且关闭窗口时提示还能试用30天。

13

13

所以程序不止一处判断,应该有个函数用于判断是否注册,在程序的多个位置调用。这个函数应该就在上面。往上找看看哪一条指令改变了标志位。
发现jnz上面有个test al,al,这条指令是对al执行与运算,只改变标志位,也就是说:
如果al=0 -> 执行test al,al -> Z=1 ->未注册
如果al=1 -> 执行test al,al -> Z=0 ->已注册
并且test al,al上面有个call,call的返回值在eax,因此这个call的作用应该是判断有没有注册的。

14

14

进入call 0x00415826,直接在最后一行汇编mov al,0x1,保存到可执行文件。

15

15

帮助菜单没有“输入密钥”了,关闭窗口也不提示还有30天试用了。

16

16

更改系统日期为一年后,依然可用,成功破解

17

17

免费评分

参与人数 12吾爱币 +16 热心值 +10 收起 理由
BurYiA + 1 + 1 谢谢@Thanks!
清束 + 1 + 1 我很赞同!
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
growing88 + 1 + 1 谢谢@Thanks!
qazdr + 1 + 1 谢谢@Thanks!
wenrow + 1 热心回复!
半妖ing + 1 + 1 热心回复!
大道宽又长 + 1 + 1 用心讨论,共获提升!
zhousj0920 + 1 我很赞同!
martin313 + 1 学习了,谢谢分享
jividmpmyi123 + 1 我很赞同!
至尊Cracker + 1 + 1 思路清晰,收藏学习!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

stitch626 发表于 2022-3-20 12:23
一看就会,一做就废!!!!
martin313 发表于 2022-3-20 12:48
楼主的分析很到位,学习了。另一个破解思路是这样的,供参考:

000000014000D1BF | 81FB E6030000           | cmp ebx,3E6                                 |==>mov al, 0x1
000000014000D1C5 | 75 1F                   | jne uninstalltool.14000D1E6                ||==>nop
000000014000D1C7 | 48:8D0D 8A3A2600        | lea rcx,qword ptr ds:[140270C58]            | 0000000140270C58:L"Corporate License"
000000014000D1CE | E8 19E52100             | call uninstalltool.14022B6EC               |
000000014000D1D3 | 48:8D15 7E3A2600        | lea rdx,qword ptr ds:[140270C58]            | rdx:"H冹(杷\r", 0000000140270C58:L"Corporate License"
000000014000D1DA | 44:8BC0                 | mov r8d,eax                                 |
000000014000D1DD | 48:8D4D AF              | lea rcx,qword ptr ss:[rbp-51]               |
000000014000D1E1 | E8 96060000             | call uninstalltool.14000D87C               |
000000014000D1E6 | 49:8BCF                 | mov rcx,r15                                 |
000000014000D1E9 | E8 8E290000             | call uninstalltool.14000FB7C               |

000000014001A8CE | F0:0FC141 58            | lock xadd dword ptr ds:[rcx+58],eax         | rcx+58:L"倀猍翼"
000000014001A8D3 | 85C0                    | test eax,eax                                |
000000014001A8D5 | 74 0B                   | je uninstalltool.14001A8E2                 |
000000014001A8D7 | E8 00040000             | call uninstalltool.14001ACDC               |
000000014001A8DC | 83F8 03                 | cmp eax,3                                   |
000000014001A8DF | 0F94C3                  | sete bl                                     |==>mov eax, 0x1
000000014001A8E2 | 8AC3                    | mov al,bl                                   |==>nop
000000014001A8E4 | 48:83C4 20              | add rsp,20                                  |
000000014001A8E8 | 5B                      | pop rbx                                     |
000000014001A8E9 | C3                      | ret                                         |

免费评分

参与人数 1吾爱币 +3 热心值 +1 收起 理由
smile1110 + 3 + 1 用心讨论,共获提升!

查看全部评分

至尊Cracker 发表于 2022-3-20 12:03
32K 发表于 2022-3-20 12:40
学到了!不过我一般用火绒来卸载
头像被屏蔽
86618513 发表于 2022-3-20 12:57
提示: 作者被禁止或删除 内容自动屏蔽
木水车 发表于 2022-3-20 13:16
谢谢分享,长知识了
jwc 发表于 2022-3-20 13:45
一看就会,一做就废!!!!
huangchaojun 发表于 2022-3-20 13:57
从重启验证切入,思路清晰,写得不错!
gugu20 发表于 2022-3-20 14:01
思路清晰,学习!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-23 05:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表