吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8041|回复: 19
收起左侧

[原创] 【wonderzdh】-逆向学习笔记第三篇 - CM大赛作品 - BambooQJ

[复制链接]
wonderzdh 发表于 2013-6-29 17:54
本帖最后由 wonderzdh 于 2013-7-16 10:34 编辑

【文章标题】: CM大赛作品 - BambooQJ
【文章作者】: wonderzdh
【作者主页】: http://hi.baidu.com/chicken
【软件名称】: BambooQJ
【下载地址】: 见附件
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
本套教程至少得更新到10课,由于没有事先安排,内容可能会比较乱,但是每字每句都是心得。

为什么我要把这些心得发出来,而不自己藏着。因为我发的东西本身就是我对学习逆向的一个梳理和总结。

赠人玫瑰,手有余香。至于你们回不回复,评不评分,我一点所谓也没有。

后续课程不会继续在【逆缘论坛】首发,【吾爱破解】转帖的形式存在,而是两个站同时更新。

也希望我的帖子在吾爱不是归类转帖,而是属于原创,本人可是吾爱未来的“原创精英”+“论坛大牛”呀。

如果想求破,可直接来逆缘免费求破,网址什么的就不发了,自己百度一下。

【详细过程】
  首先查壳,无壳,C++或者易语言编写。

  然后运行CM,点击注册,弹出错误提示。

  此时用到我们的F12暂停法,具体操作是:当弹出错误提示的时候(消息框),程序代码是在系统领空循环,

  等待用户点击确定按钮再返回到程序本身的领空。有编程经验的人都知道,你点信息框的确定后才执行信息框的下一行代码。

  所以,当出现信息框的时候,我们就可以把整个程序暂停下来,可以按OD快捷键F12,故称F12暂停法。

  此时EIP指向系统领空(EIP的值就是当前即将被执行的代码所在的地址),我们按下Alt+F9(运行到用户代码,也可以在内存中程序的代码段下断)。

  然后点击信息框的确定按钮,此时OD就会断在程序领空,而上一行必定是调用系统信息框的代码。

  01D212C0    FF15 A823D801   call dword ptr ds:[<&USER32.MessageBoxA>>; user32.MessageBoxA
  01D212C6    5F              pop edi                                  ; (Initial CPU selection)

  程序停在01D212C6,而上一行就是调用系统的信息框。

  此时我们查看代码上下行没有发现跳过这个错误提示的地方,其实这里还是子程序中的子程序,也就是CALL中的CALL。

  我们并没有走到关键的那层代码段,希望你们仔细琢磨,能懂这个意思。

  熟悉易语言的都知道,走两个retn回到的地方就是关键的代码段。

  01D21004    55              push ebp
  01D21005    8BEC            mov ebp,esp
  01D21007    68 04000080     push 0x80000004
  01D2100C    6A 00           push 0x0
  01D2100E    68 E832D801     push call.01D832E8                       ; 提示
  01D21013    68 01030080     push 0x80000301
  01D21018    6A 00           push 0x0
  01D2101A    68 20000000     push 0x20
  01D2101F    68 04000080     push 0x80000004
  01D21024    6A 00           push 0x0
  01D21026    68 ED32D801     push call.01D832ED                       ; 恭喜你失败~!努力吧~!
  01D2102B    68 03000000     push 0x3
  01D21030    BB 2012D201     mov ebx,call.01D21220
  01D21035    E8 B0000000     call call.01D210EA
  01D2103A    83C4 28         add esp,0x28
  01D2103D    8BE5            mov esp,ebp
  01D2103F    5D              pop ebp                                  ; 0012F118
  01D21040    C3              retn

  此时出现关键部分,这里就是正真调用错误提示的地方。一般情况下,这里都是有跳转可以跳过的,但是这里没有,而是一个很小的独立代码段。

  我们上下行找一下,发现下边就是提示正确的地方

  01D2105E    55              push ebp
  01D2105F    8BEC            mov ebp,esp
  01D21061    68 04000080     push 0x80000004
  01D21066    6A 00           push 0x0
  01D21068    68 E832D801     push call.01D832E8                       ; 提示
  01D2106D    68 01030080     push 0x80000301
  01D21072    6A 00           push 0x0
  01D21074    68 40000000     push 0x40
  01D21079    68 04000080     push 0x80000004
  01D2107E    6A 00           push 0x0
  01D21080    68 0433D801     push call.01D83304                       ; 恭喜你成功~!
  01D21085    68 03000000     push 0x3
  01D2108A    BB 2012D201     mov ebx,call.01D21220
  01D2108F    E8 56000000     call call.01D210EA
  01D21094    83C4 28         add esp,0x28
  01D21097    8BE5            mov esp,ebp
  01D21099    5D              pop ebp
  01D2109A    C3              retn

  调用方法一模一样,那我们直接把提示错误的地方改成提示正确的地方吧。

  01D21026    68 ED32D801     push call.01D832ED                       ; 恭喜你失败~!努力吧~!

  01D21080    68 0433D801     push call.01D83304                       ; 恭喜你成功~!

  替换掉这两个地址的代码,即可成功爆破!

  方法不止一种,第二种修改法:

  我们F8继续走出这个CALL,来到此处:

  01D210AA    E8 55FFFFFF     call call.01D21004
  01D210AF    5B              pop ebx                                  ; 002C93A8

  代码停在01D210AF,上一行就是调用错误提示的地方,我们直接把call 01D21004修改为call 01D2105E 就好了。

  01D2105E这里是正确代码开始的地方(也就是提示正确的子程序的入口地址),他本来调用的01D21004这里的提示错误代码的地方,用正确的代码段替换掉错误的就好啦!

  番外:

  当我们继续走出这个CALL的时候出现如下代码:

  004D20AD    E8 A8020000     call CrackerM.004D235A
  004D20B2    83C4 04         add esp,0x4
  004D20B5    837D F8 00      cmp dword ptr ss:[ebp-0x8],0x0
  004D20B9    0F84 24000000   je CrackerM.004D20E3
  004D20BF    8965 FC         mov dword ptr ss:[ebp-0x4],esp
  004D20C2    B8 01000000     mov eax,0x1
  004D20C7    E8 A0020000     call CrackerM.004D236C                   ; 调用失败
  004D20CC    3965 FC         cmp dword ptr ss:[ebp-0x4],esp
  004D20CF    74 0D           je short CrackerM.004D20DE
  004D20D1    68 06000000     push 0x6
  004D20D6    E8 8B020000     call CrackerM.004D2366
  004D20DB    83C4 04         add esp,0x4
  004D20DE    E9 1F000000     jmp CrackerM.004D2102
  004D20E3    8965 FC         mov dword ptr ss:[ebp-0x4],esp
  004D20E6    B8 02000000     mov eax,0x2
  004D20EB    E8 7C020000     call CrackerM.004D236C                   ; 调用失败
  004D20F0    3965 FC         cmp dword ptr ss:[ebp-0x4],esp
  004D20F3    74 0D           je short CrackerM.004D2102
  004D20F5    68 06000000     push 0x6
  004D20FA    E8 67020000     call CrackerM.004D2366

  大家可以在这层代码修改试试看,不管你会不会,反正我是不会。

--------------------------------------------------------------------------------
【经验总结】
  破解手法:F12暂停法(切入点)、push法(修改功能)

  破解经验:

  错误信息和正确的信息往往很近!我们可以在错误信息的周围找到正确的信息。


BambooQJ.zip (1.86 MB, 下载次数: 112)

第一篇地址:http://www.52pojie.cn/thread-199860-1-1.html

第二篇地址:http://www.52pojie.cn/thread-200080-1-5.html

--------------------------------------------------------------------------------
【版权声明】: 本文原创于【wonderzdh 】,转载请注明作者并保持文章的完整,谢谢!

                                                       2013年06月29日 17:51:06

免费评分

参与人数 1热心值 +1 收起 理由
Shark恒 + 1 希望看到你更多的作品。

查看全部评分

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

头像被屏蔽
Shark恒 发表于 2013-6-29 17:58
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| wonderzdh 发表于 2013-6-29 18:01
Shark恒 发表于 2013-6-29 17:58
由于本论坛不能留下QQ,所以我已经帮你删除了,希望以后看到你更多的作品!

多谢恒大提醒,也希望恒大的教程能正真带领我们走向大牛!

点评

你太谦虚了~我还在学习中,需要请各位多多指点!  发表于 2013-6-29 18:13
小雨细无声 发表于 2013-6-29 20:07
jlyadan 发表于 2013-6-29 20:35
偶表示看不懂
 楼主| wonderzdh 发表于 2013-6-29 22:56
jlyadan 发表于 2013-6-29 20:35
偶表示看不懂

写成这样还看不懂,如果是真的,麻烦指出哪里不明白,必回复。
 楼主| wonderzdh 发表于 2013-6-29 22:57
小雨细无声 发表于 2013-6-29 20:07
膜拜会破解的大牛,谢谢教程。

菜鸟作品,小雨哥见笑了。
我是冰冻的番茄 发表于 2013-6-29 23:11
- -!


                                    带我超神!
 楼主| wonderzdh 发表于 2013-6-29 23:12
我是冰冻的番茄 发表于 2013-6-29 23:11
- -!

文不对题关小木屋三年!
jlyadan 发表于 2013-6-30 00:50
wonderzdh 发表于 2013-6-29 22:56
写成这样还看不懂,如果是真的,麻烦指出哪里不明白,必回复。

不是说你写得不好,只能说偶很白很白  白到透明
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 13:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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