呵呵,大家好,这是一篇被第3期的<黑客X档案>录用的文章,原文放上来,希望大家指点!!!
另类方法玩破解――ClipCache Plus 2.9
(作者:bnbn)
[谨以此文献给3班的全体同学,祝愿我们都能顺利地考上重点高中!]
偶在一本电脑杂志上发现了ClipCache这个软件,这是一个优秀的剪贴板增强软件,
可以让Windows支持多重剪贴板功能,通过试用感觉挺不错的。但是是共享软件,
我们只好自力根生了!
软件名称:ClipCache Plus 2.9
破解工具:PEiD 0.92、Ollydbg 1.10、W32dasm 中文版、UltraEdit、Keymake 2.0
软件限制:30天试用期限,过期必须要注册才能使用。
W32dasm 篇
好了,让我们正式开始。首先我们运行软件,尽量多点收集有关的信息,“知己知彼,方能百战百胜”嘛。
打开软件,选择“help"菜单,点“Purchase ClipCache Now"(图1)
我们输入假注册码“ilovepcx”(提
示:这个随大家自己喜欢,但是最好不要用888888,123456等简单、重复的注册码,因为这样有的程序根本不去
比较注册码,直接提示错误的哦!),程序出现了注册码错误的提示,记住它。(图2)
现在用PEID检查软件的壳。报告没有加壳,这下我们可以省去脱壳这一步了,软件用VC++6.0编写。(图3)
下面我们用W32dasm反汇编,打开菜单“参考”-“串式参考”,双击“Thank you for purchasing ClipCache”,来到了00423386,我们向上
找,发现了|:0042336B(C),说明从0042336B跳过来的,我们用shift+f12,输入“0042336B”,很明显,是这里没有跳,所以接着显示
注册码错误。这提示我们上面的一段代码是计算注册码和比较注册码的关键代码了!
Ollydbg 篇
现在我们用Ollydbg装入软件的主程序clipc.exe,按Ctrl+G,输入我们找到的关键代码的地址,我们这里输入00423321,确定后下断点(用鼠标
双击00423321这一行的“Hex 转存”).现在用F9运行程序,输入假注册码,点确定,立刻被Ollydbg中断下来了。
我们一起来用看看这些代码到底有什么用。
00423321 . E8 5E0D0000 call <jmp.&MFC42.#6334>
00423326 . 8D7E 60 lea edi,dword ptr ds:[esi+60]
00423329 . 8BCF mov ecx,edi
0042332B . E8 CE0B0000 call <jmp.&MFC42.#6282> //提取我们输入的注册码并放入EAX中
00423330 . 8BCF mov ecx,edi
00423332 . E8 F70B0000 call <jmp.&MFC42.#6283>
00423337 . 8D4C24 0C lea ecx,dword ptr ss:[esp+C]
0042333B . E8 90F6FFFF call clipc.004229D0 //走过这个CALL后我们发现了好几个注册码样子的东东,先记录下来,一会再验证
00423340 . 8B3F mov edi,dword ptr ds:[edi] //把我们的假注册码放入EDI中
00423342 . 8D4C24 38 lea ecx,dword ptr ss:[esp+38]
00423346 . 57 push edi
00423347 . C64424 5C 01 mov byte ptr ss:[esp+5C],1
0042334C . E8 9B0B0000 call <jmp.&MFC42.#860> //这里程序对输入的注册码处理了一下,改为大写
00423351 . 8D4C24 38 lea ecx,dword ptr ss:[esp+38]
00423355 . E8 EA100000 call <jmp.&MFC42.#4204>
0042335A . 8D4C24 0C lea ecx,dword ptr ss:[esp+C]
0042335E . E8 7DFAFFFF call clipc.00422DE0 //这个是注册码比较和计算的关键CALL
00423363 . 83E8 20 sub eax,20 //EAX的值与20做减法运算
00423366 . 74 47 je short clipc.004233AF //这里没有跳(如果这里跳了,会提示我们输入的注册码是被封杀了的。)
00423368 . 83E8 02 sub eax,2 //EAX的值与2做减法运算
0042336B . 74 19 je short clipc.00423386 //这里没有跳,提示注册码错(如果这里跳了,便会提示我们注册成功)
我们已经对这里的代码有了初步的了解,那么在0042333B生成的那几个东东是什么呢?我们一起来验证一下。
打开程序,输入一个我们得到的注册码。啊!提示我们这个注册码是公开的,所以被封杀了,郁闷……。(图4)
好,我们现在先停下来,泡一杯咖啡,分析一下我们下一步该怎么做。现在在我们面前有两条路可以走,
1:进入0042335E这个关键CALL分析软件算法,找出真正的注册码。
2:软件自己内置了6个封杀了的注册码,我们如果把软件需要封杀的注册码修改为别的东西,这样我们不就可以
用那些被软件封杀了的注册码注册了吗?
好,我们今天来走第2条路。重复上文Ollydbg的步骤,这次我们把断点设置在0042333B这个地方,我们将要用F7
跟进去,详细分析。
跟进这个CALL以后,我们一直用F8,一直来到以下地方。(图5)
看见了吧,这6个字符串其实就是6个被封杀的注册码,我们继续向下走,就是程序对这几个字符串进行运算,地
到6个被杀的注册码!
UltraEdit 篇
好了,原理我们知道了,但是如何修改软件内置的注册码呢?既然软件是用字符串来保存被杀注册码的,
我们用UltraEdit不就可以修改了吗?说干就干。用UltraEdit打开程序clipc.exe,按Ctrl+f,查找
“27@=2D7<(AA3<44<=”,并且记得选上“查找ASCII”这个选项。(图6)
哈哈,一下就找到了!
我们把这6个字符串都改一个字符吧,(长度最好不要改变)这样软件运算出来的就是不是原来的
几个封杀的注册码了!我改为图7的样子,
保存。好了,我们再打开软件,输入我们一开始得到的注册码,
(注意是原始的被杀注册码哦!),哈哈,果然注册成功了!(图8)
Keymake 篇
好了,现在我们来做一个破解补丁!(图9)
后记
呵呵,是不是一次很有趣的破解之旅?其实这个软件的算法并不复杂,以后有机会再和大家一起研究。
偶今年初三了,学习任务繁重啊!所以在编写文章时较为仓促,如果文章中有什么错漏,还请各位大虾赐教!
谢谢了!
[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。