吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9880|回复: 22
收起左侧

[转贴] 【wonderzdh】-逆向学习笔记第六篇 -VM的CC也爆破

  [复制链接]
wonderzdh 发表于 2013-7-15 23:58
本帖最后由 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



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

一杯水的味道 发表于 2013-7-16 01:05
那板凳归我吧。。
菜鸟飘过,学习学习。
不会用鼠标的人 发表于 2013-7-16 00:50
那板凳归我吧。。
菜鸟飘过,学习学习。
楼主强大
 楼主| wonderzdh 发表于 2013-7-16 00:09
1354669803 发表于 2013-7-16 00:07
沙发留给我啊

格盘牛只是来抢个沙发而已?
1354669803 发表于 2013-7-16 00:07
沙发留给我啊

点评

格盘沙发牛  发表于 2013-7-16 06:49
alexjeniks 发表于 2013-7-16 01:14
逆向之爆破,谢谢。
一只迷惘的笨虎 发表于 2013-7-16 02:21
{:1_931:}大牛 这么晚还在搞CC。。。让偶等小菜必须要努力啊!
herry8000 发表于 2013-7-16 07:18
学习学习一下
Hmily 发表于 2013-7-16 07:35
这么大的红字广告。
星空不语 发表于 2013-7-16 08:04
很详细,很厉害。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 10:56

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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