【wonderzdh】-逆向学习笔记第六篇 -VM的CC也爆破
本帖最后由 wonderzdh 于 2013-7-16 10:49 编辑【文章标题】: VM的CC也爆破
【文章作者】: wonderzdh
【作者主页】: http://hi.baidu.com/chicken
【下载地址】: 自己搜索下载
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
由于 @Hmily 老大提醒广告太醒目,于是稍作修改,去掉了所有的他站链接,也谢谢Hmily对我的容忍。
本套教程至少得更新到10课,由于没有事先安排,内容可能会比较乱,但是每字每句都是心得。
为什么我要把这些心得发出来,而不自己藏着。因为我发的东西本身就是我对学习逆向的一个梳理和总结。
赠人玫瑰,手有余香。至于你们回不回复,评不评分,我一点所谓也没有。
后续课程不会继续在【逆缘论坛】首发,【吾爱破解】转帖的形式存在,而是两个站同时更新。
也希望我的帖子在吾爱不是归类转帖,而是属于原创,本人可是吾爱未来的“原创精英”+“论坛大牛”呀。{:301_972:}
如果想求破,可直接来逆缘免费求破,网址什么的就不发了,自己百度一下。
【详细过程】
首先感慨一下,本人终于对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:,0x0
00403576 .C745 F8 00000>mov dword ptr ss:,0x0
0040357D .C745 F4 00000>mov dword ptr ss:,0x0
00403584 .C745 F0 00000>mov dword ptr ss:,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:,0x0
004038DA .C745 F8 00000>mov dword ptr ss:,0x0
004038E1 .68 08000000 push 0x8
004038E6 .E8 17730000 call 客户端.0040AC02
004038EB .83C4 04 add esp,0x4
004038EE .8945 F4 mov dword ptr ss:,eax
004038F1 .8BF8 mov edi,eax
004038F3 .BE D9504900 mov esi,客户端.004950D9
004038F8 .AD lods dword ptr ds:
004038F9 .AB stos dword ptr es:
004038FA .AD lods dword ptr ds:
004038FB .AB stos dword ptr es:
.........................
00403A8C > \50 push eax
00403A8D .8B5D FC mov ebx,dword ptr ss:
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:
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:
00403AB0 .53 push ebx
00403AB1 .8B0B mov ecx,dword ptr ds:
00403AB3 .83C3 04 add ebx,0x4
00403AB6 .85C9 test ecx,ecx
00403AB8 .74 11 je short 客户端.00403ACB
00403ABA .8B03 mov eax,dword ptr ds:
00403ABC >83C3 04 add ebx,0x4
00403ABF .49 dec ecx
00403AC0 .74 05 je short 客户端.00403AC7
00403AC2 .0FAF03 imul eax,dword ptr ds:
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:
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:
修改为:
004FB785 /E9 36480300 jmp 4.0052FFC0 ;从原来的EIP跳向空地址
004FB78A |0FDEAE 224AF263 pmaxub mm5,qword ptr ds:
空地址:
0052FFC0 .0000 add byte ptr ds:,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 ,0x0
0040699C|.C745 F8 00000>mov ,0x0
004069A3|.E8 A6B1FFFF call 客户端.00401B4E
004069A8|.EB 10 jmp short 客户端.004069BA
00406C47|> \8B5D FC mov ebx,
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,
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 - 分析并爆破飘零
--------------------------------------------------------------------------------
【版权声明】: 本文原创于【wonderzdh】,转载请注明作者并保持文章的完整,谢谢!
2013年07月15日 23:52:54
那板凳归我吧。。
菜鸟飘过,学习学习。 那板凳归我吧。。
菜鸟飘过,学习学习。
楼主强大{:301_993:} 1354669803 发表于 2013-7-16 00:07 static/image/common/back.gif
沙发留给我啊
格盘牛只是来抢个沙发而已?
沙发留给我啊 逆向之爆破,谢谢。 {:1_931:}大牛 这么晚还在搞CC。。。让偶等小菜必须要努力啊! 学习学习一下 这么大的红字广告。 很详细,很厉害。