好友
阅读权限20
听众
最后登录1970-1-1
|
本帖最后由 wonderzdh 于 2013-7-16 10:49 编辑
【文章标题】: VM的CC也爆破
【文章作者】: wonderzdh
【作者主页】: http://hi.baidu.com/chicken
【下载地址】: 自己搜索下载
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
由于 @Hmily 老大提醒广告太醒目,于是稍作修改,去掉了所有的他站链接,也谢谢Hmily对我的容忍。
本套教程至少得更新到10课,由于没有事先安排,内容可能会比较乱,但是每字每句都是心得。
为什么我要把这些心得发出来,而不自己藏着。因为我发的东西本身就是我对学习逆向的一个梳理和总结。
赠人玫瑰,手有余香。至于你们回不回复,评不评分,我一点所谓也没有。
后续课程不会继续在【逆缘论坛】首发,【吾爱破解】转帖的形式存在,而是两个站同时更新。
也希望我的帖子在吾爱不是归类转帖,而是属于原创,本人可是吾爱未来的“原创精英”+“论坛大牛”呀。
如果想求破,可直接来逆缘免费求破,网址什么的就不发了,自己百度一下。
【详细过程】
首先感慨一下,本人终于对VM的爆破小有心得,希望此篇文章能帮到需要的人。
通过分析CC的源码,我们得知他的跳转都是由文本比较来实现的,故适用一下特征。
易语言通杀特征码:(文本比较,相等返回0,一般情况下,CALL的返回值是保存在eax中)
8B 54 24 04 8B 4C 24 08 85 D2 75 0D 33 C0 85 C9 74 06 80 39 00 74 01 48 C3 85 C9 75 09 33 C0
00401129 |. C3 retn
0040112F |. C3 retn
在这两句返回下断,断下时,我们按F8就回到了要判断的地方。
----------------------------------------------------------------------------------------------------------------------------
通过分析未加VM的CC,我们得到如下特征:
登录成功特征码:
55 8B EC 81 EC 24 00 00 00 C7 45 FC 00 00 00 00 C7 45 F8 00 00 00 00 C7 45 F4 00 00 00 00 C7 45 F0 00 00 00 00
00403566 $ 55 push ebp
00403567 . 8BEC mov ebp,esp
00403569 . 81EC 24000000 sub esp,0x24
0040356F . C745 FC 00000>mov dword ptr ss:[ebp-0x4],0x0
00403576 . C745 F8 00000>mov dword ptr ss:[ebp-0x8],0x0
0040357D . C745 F4 00000>mov dword ptr ss:[ebp-0xC],0x0
00403584 . C745 F0 00000>mov dword ptr ss:[ebp-0x10],0x0
0040358B . EB 10 jmp short 客户端.0040359D
修改方法:
从段首开始:mov eax,1 ; retn 8
原理:
通过对未VM的CC分析,这个CALL的返回值,也就是CALL后的eax值,直接影响下边的跳转,跳了就失败,不跳就是登录成功。
所以,我们不管他后边VM多乱,段首直接改eax的值,然后按原来的返回值返回。
----------------------------------------------------------------------------------------------------------------------------
数组出错特征码:
55 8B EC 81 EC 14 00 00 00 C7 45 FC 00 00 00 00 C7 45 F8 00 00 00 00 68 08 00 00 00
004038CA $ 55 push ebp
004038CB . 8BEC mov ebp,esp
004038CD . 81EC 14000000 sub esp,0x14
004038D3 . C745 FC 00000>mov dword ptr ss:[ebp-0x4],0x0
004038DA . C745 F8 00000>mov dword ptr ss:[ebp-0x8],0x0
004038E1 . 68 08000000 push 0x8
004038E6 . E8 17730000 call 客户端.0040AC02
004038EB . 83C4 04 add esp,0x4
004038EE . 8945 F4 mov dword ptr ss:[ebp-0xC],eax
004038F1 . 8BF8 mov edi,eax
004038F3 . BE D9504900 mov esi,客户端.004950D9
004038F8 . AD lods dword ptr ds:[esi]
004038F9 . AB stos dword ptr es:[edi]
004038FA . AD lods dword ptr ds:[esi]
004038FB . AB stos dword ptr es:[edi]
.........................
00403A8C > \50 push eax
00403A8D . 8B5D FC mov ebx,dword ptr ss:[ebp-0x4]
00403A90 . 85DB test ebx,ebx
00403A92 . 74 09 je short 客户端.00403A9D
00403A94 . 53 push ebx
00403A95 . E8 44710000 call 客户端.0040ABDE
00403A9A . 83C4 04 add esp,0x4
00403A9D > 8B5D F8 mov ebx,dword ptr ss:[ebp-0x8]
00403AA0 . 85DB test ebx,ebx
00403AA2 . 74 09 je short 客户端.00403AAD
00403AA4 . 53 push ebx
00403AA5 . E8 34710000 call 客户端.0040ABDE
00403AAA . 83C4 04 add esp,0x4
00403AAD > 8B5D F4 mov ebx,dword ptr ss:[ebp-0xC]
00403AB0 . 53 push ebx
00403AB1 . 8B0B mov ecx,dword ptr ds:[ebx]
00403AB3 . 83C3 04 add ebx,0x4
00403AB6 . 85C9 test ecx,ecx
00403AB8 . 74 11 je short 客户端.00403ACB
00403ABA . 8B03 mov eax,dword ptr ds:[ebx]
00403ABC > 83C3 04 add ebx,0x4
00403ABF . 49 dec ecx
00403AC0 . 74 05 je short 客户端.00403AC7
00403AC2 . 0FAF03 imul eax,dword ptr ds:[ebx]
00403AC5 .^ EB F5 jmp short 客户端.00403ABC
00403AC7 > 8BC8 mov ecx,eax
00403AC9 . 85C9 test ecx,ecx
00403ACB > 0F84 19000000 je 客户端.00403AEA
00403AD1 > 51 push ecx
00403AD2 . 8B03 mov eax,dword ptr ds:[ebx]
00403AD4 . 85C0 test eax,eax
00403AD6 . 74 0B je short 客户端.00403AE3
00403AD8 . 53 push ebx
00403AD9 . 50 push eax
00403ADA . E8 FF700000 call 客户端.0040ABDE
00403ADF . 83C4 04 add esp,0x4
00403AE2 . 5B pop ebx
00403AE3 > 83C3 04 add ebx,0x4
00403AE6 . 59 pop ecx
00403AE7 . 49 dec ecx
00403AE8 .^ 75 E7 jnz short 客户端.00403AD1
00403AEA > E8 EF700000 call 客户端.0040ABDE
00403AEF . 83C4 04 add esp,0x4
00403AF2 . 58 pop eax
00403AF3 . 8BE5 mov esp,ebp
00403AF5 . 5D pop ebp
00403AF6 . C2 0400 retn 0x4
修改方法:
段首retn 4
原理:
作废这个暗桩。
----------------------------------------------------------------------------------------------------------------------------
完成以上修改后,F9运行就会断在易语言通杀特征码文本判断的断点,即:
0040112F |. C3 retn
我们F8后回到要做判断的代码段,并做出修改。
此时EIP指向:004FB785,这也就是我们下一句要执行的代码,如果你出现的代码不是这样,请按Alt+C。
原来的数据:
004FB785 E8 C8B10100 call 客户端_v.00516952
004FB78A 0FDEAE 224AF263 pmaxub mm5,qword ptr ds:[esi+0x63F24A22]
修改为:
004FB785 /E9 36480300 jmp 4.0052FFC0 ;从原来的EIP跳向空地址
004FB78A |0FDEAE 224AF263 pmaxub mm5,qword ptr ds:[esi+0x63F24A22]
空地址:
0052FFC0 . 0000 add byte ptr ds:[eax],al ;我们找到的位于代码尾部的全为0是数据
修改为:
0052FFC0 B8 00000000 mov eax,0x0 ;修改exa的值,影响后边的跳转
0052FFC5 E8 8869FEFF call 4.00516952 ;复原因为JMP到空地址而被破坏的原地址的代码
0052FFCA ^ E9 BBB7FCFF jmp 4.004FB78A ;跳回到原地址的下一与继续执行
0052FFCF 90 nop
原理:
如果原数据地址无法容纳我们要修改的语句,我们就需要找一段空代码,一般用Ctrl+B,搜索“000000000000000”,用来存放我们的代码,并且修补我们破坏的代码,然后跳回后边将要执行的地址。
----------------------------------------------------------------------------------------------------------------------------
二次会员登录验证特征码:
55 8B EC 81 EC 20 00 00 00 C7 45 FC 00 00 00 00 C7 45 F8 00 00 00 00
0040698C /$ 55 push ebp
0040698D |. 8BEC mov ebp,esp
0040698F |. 81EC 20000000 sub esp,0x20
00406995 |. C745 FC 00000>mov [local.1],0x0
0040699C |. C745 F8 00000>mov [local.2],0x0
004069A3 |. E8 A6B1FFFF call 客户端.00401B4E
004069A8 |. EB 10 jmp short 客户端.004069BA
00406C47 |> \8B5D FC mov ebx,[local.1]
00406C4A |. 85DB test ebx,ebx
00406C4C |. 74 09 je short 客户端.00406C57
00406C4E |. 53 push ebx
00406C4F |. E8 8A3F0000 call 客户端.0040ABDE
00406C54 |. 83C4 04 add esp,0x4
00406C57 |> 8B5D F8 mov ebx,[local.2]
00406C5A |. 85DB test ebx,ebx
00406C5C |. 74 09 je short 客户端.00406C67
00406C5E |. 53 push ebx
00406C5F |. E8 7A3F0000 call 客户端.0040ABDE
00406C64 |. 83C4 04 add esp,0x4
00406C67 |> 8BE5 mov esp,ebp
00406C69 |. 5D pop ebp
00406C6A \. C3 retn
修改方法:
段首retn
原理:
就是作废目标窗口创建完毕后的二次验证子程序。
【总结】
1.一般情况下,【段首】和【段尾】以及【被VM的代码段中所调用的CALL】,是不会被VM的,所以特征码可以从这里获取,即使有多个,我们也可以都下断,这就是VM爆破的入手点。
2.尤其是【被VM的代码段中所调用的CALL】,是我们很好的入手点,本文的易语言通杀特征码文本比较就是被VM的代码段中所调用的CALL。
3.特征码的获取方法是去掉包含地址的代码,如CALL XXXX、jmp XXXX,模糊可以用“?”代替,特征码出现的次数只需要出现极少,没必要要求只出现一次。
4.分析VM的程序,最好先分析没加VM的,混个脸熟,找特征码定位。
5.分析VM的程序,最好有正版的帐号密码,一直单步跟踪,总结经验。
6.巧用JMP进行patch,跳到空代码地址,然后执行自己的代码,恢复被破坏的代码,再跳回下一句的地址。
第一篇-【某培训】学前测试-程序多开
第二篇-吾爱扣扣的一个CM
第三篇 - CM大赛作品 - BambooQJ
第四篇 - CC网络验证 - 分析并爆破CC
第五篇 - 飘零商业3.5 - 分析并爆破飘零
CC网络验证3.4修复爆破版.zip
(140.57 KB, 下载次数: 53)
带VM破解.zip
(1.13 MB, 下载次数: 178)
WEB服务器.zip
(631.58 KB, 下载次数: 33)
--------------------------------------------------------------------------------
【版权声明】: 本文原创于【wonderzdh】,转载请注明作者并保持文章的完整,谢谢!
2013年07月15日 23:52:54
|
|