[color=]本人使用的环境:Windows 7虚拟机
image.png (47.58 KB, 下载次数: 1)
下载附件
1
2022-3-19 11:36 上传
[color=]测试发现,软件使用了重启验证的方式,猜测是将输入的注册名和密钥保存在注册表或文件中,然后当软件启动的时候读取注册表或文件,判断输入内容是否正确。
image.png (90.12 KB, 下载次数: 1)
下载附件
2
2022-3-19 11:36 上传
[color=]对写注册表函数RegSetValueXXX下断点。
image.png (52.77 KB, 下载次数: 1)
下载附件
3
2022-3-19 11:36 上传
[color=]运行程序,随便输注册名和密钥,点注册后程序会停下来。
image.png (37.15 KB, 下载次数: 1)
下载附件
4
2022-3-19 11:37 上传
[color=]发现程序对RN键写入了0x002CB828处的字符串,在寄存器窗口可以看见这个字符串,这个应该就是加密后的注册名或者密钥。
image.png (23.08 KB, 下载次数: 1)
下载附件
5
2022-3-19 11:37 上传
[color=]再确定一下RN键在哪个位置,Alt+K查看调用堆栈,在如图所示位置 右键->显示调用
image.png (33.89 KB, 下载次数: 1)
下载附件
6
2022-3-19 11:37 上传
[color=]可以确定RN键在HKEY_CURRENT_USER\Software\CrystalIdea Software\Uninstall Tool
image.png (63.46 KB, 下载次数: 1)
下载附件
7
2022-3-19 11:37 上传
[color=]继续运行程序,又在RegSetValueExW断下来,这次写入了RC键,键值和RN键的类似,是经过加密的字符串,应该是加密后的注册名或者密钥。
image.png (38.05 KB, 下载次数: 1)
下载附件
8
2022-3-19 11:37 上传
[color=]继续运行程序,弹出信息框,提示要重启验证。
[color=]所以现在有了清晰的思路,该程序将注册名和密钥加密后写注册表,然后重启,当再次运行时读取注册表中的值,解密,判断输入内容是否正确。因此下一步就是对读注册表函数下断点。
[color=]分别尝试对RegOpenKey(A)、RegOpenKeyEx、RegQueryValue(A)、RegQueryValueEx下断点,重新载入程序运行,但是经过反复重载、运行,并没有发现程序有对RC键、RN键操作。只能换另一种方式。
[color=]窗口的标题有“未注册版本”字样,猜测应该有个地方对是否注册进行判断,然后再设置窗口标题,因此想到对SetWindowText(A/W)下断点。
image.png (39.63 KB, 下载次数: 1)
下载附件
9
2022-3-19 11:38 上传
[color=]分别在Command编辑框输入bp SetWindowTextA回车、bp SetWindowTextW回车,重新载入程序,多次按F9运行,直到堆栈窗口出现“未注册版本”。
image.png (53.04 KB, 下载次数: 1)
下载附件
10
2022-3-19 11:38 上传
[color=]Alt+K,查看调用堆栈,在最后一项 右键->显示调用。
image.png (22.36 KB, 下载次数: 0)
下载附件
11
2022-3-19 11:38 上传
[color=]发现上面有个跳转跳到显示“未注册版本”的CALL,猜测这个可能是关键跳,改成je试试。
image.png (59.7 KB, 下载次数: 1)
下载附件
12
2022-3-19 11:38 上传
[color=]确实没有“未注册版本”了,但是程序还是没有注册,因为帮助菜单还有“输入密钥”,而且关闭窗口时提示还能试用30天。
image.png (54.91 KB, 下载次数: 1)
下载附件
13
2022-3-19 11:38 上传
[color=]所以程序不止一处判断,应该有个函数用于判断是否注册,在程序的多个位置调用。这个函数应该就在上面。往上找看看哪一条指令改变了标志位。
[color=]发现jnz上面有个test al,al,这条指令是对al执行与运算,只改变标志位,也就是说:
[color=]如果al=0 -> 执行test al,al -> Z=1 ->未注册
[color=]如果al=1 -> 执行test al,al -> Z=0 ->已注册
[color=]并且test al,al上面有个call,call的返回值在eax,因此这个call的作用应该是判断有没有注册的。
image.png (54.99 KB, 下载次数: 1)
下载附件
14
2022-3-19 11:38 上传
[color=]进入call 0x00415826,直接在最后一行汇编mov al,0x1,保存到可执行文件。
image.png (64.52 KB, 下载次数: 1)
下载附件
15
2022-3-19 11:39 上传
[color=]帮助菜单没有“输入密钥”了,关闭窗口也不提示还有30天试用了。
image.png (54.25 KB, 下载次数: 1)
下载附件
16
2022-3-19 11:39 上传
[color=]更改系统日期为一年后,依然可用,成功破解。
image.png (77.17 KB, 下载次数: 1)
下载附件
17
2022-3-19 11:39 上传
[color=]