三分钟破解奇迹热门外挂

三分钟破解奇迹热门外挂
 
■《黑客X档案》 辉月  ■辉月 加入时间:2005-2-3 11:04:37  点击: <script language="javascript" src="../admin/showhit.asp?id=121" type="text/javascript"></script>7457
 
三分钟破解奇迹热门外挂
                 ——破解过程手记
外挂破解一直以来都是热门话题,毕竟外挂是一种很特殊的东西,为了防止被破解掉,外挂一般都会加上猛壳,让人无法下手。不过有时候外挂并不是那么神秘,灵活的思考对破解是很有帮助的。今天小生就献丑了,说说我的破解过程。(注:为了方便我都是在V3.2b上取代码和截图)
 
一、软件信息和所用工具
程序名称:99奇迹V3.2b版
文件名:99mu.exe
文件大小:264,192 byte
加壳类型:ASProtect 1.2x - 1.3x [Registered] -> Alexey Solodovnikov
破解所用工具:Ollydbg V1.10 正式汉化修改版——flyODBG、PEiD v0.92、keymake1.73

二、破解过程

7月18日 第一天

    听说99奇迹19日0时开始收费,心里确实不爽,于是决心研究一下这个外挂,首先想到的当然是常规的方法。用PE打开99mu.exe,可以看到加壳类型为ASProtect 1.2x - 1.3x [Registered] -> Alexey Solodovnikov,习惯性的用插件查看OPE,结果并没能得到我想要的入口点地址,如图1。

 


    我个人经验,用ASProtect 1.2x加的壳都能找到OEP的,估计这个壳比较新,或者被手工修改过的。看来要手工找OPE脱壳了。不过这壳确实挺麻烦的,脱出来了,可IAT中有十多个API函数没办法修复,跟了一天都没结果。
    实在没办法了,第一天以脱壳失败告终。

7月19日 第二天

    今天没外挂用了,不死心,决定再突破一下。
    用OD载入99mu.exe,用插件隐藏调试标志(如图2),

 


在调试设置中忽略全部异常。载入后会停在以下代码处:

00401000 9>  68 01006C00         push 99mu.006C0001  //载入后停在这里
00401005     E8 01000000         call 99mu.0040100B
0040100A     C3                  retn
0040100B     C3                  retn
0040100C     D16B 84             shr dword ptr ds:[ebx-7C],1
0040100F     A8 CE               test al,0CE
00401011     98                  cwde
00401012     9D                  popfd

    直接F9,让程序运行起来(如图3),运行过程中有两次警告都不用理它。可以看到我们还在99mu这个模块中,这对我们来说是个好事,试了试常规断点:
bpx GetDlgItemText
bpx GetDlgItemInt
bpx GetWindowText
bpx GetWindowWord
bpx GetWindowInt

 


    没一个能断下来,郁闷,试试万能断点吧(OD下万能断点方法请参看2004年4月的X档案),N麻烦,不过对于我这样的菜鸟很实用。下短点“BPX *”,在所有命令上下断,很直接,程序马上就给OD断下来了,现在就要取消一些断点了,因为外挂的热键有F9所以不能用F9运行程序,要用鼠标点工具栏上的运行按键才可以,现在点一次运行按一次F2,取消一些程序加载时的断点,直到我们能随便移动外挂窗口而不被OD断下来为止。

    好的,现在我们在外挂的“99密码框”中随便输入几个字符,比如说78787878787878这样的,有助于跟踪的字符。然后点登陆,程序又被断下来。然后的过程很烦,一个CALL就断一次,我就得判断一次这个CALL是否对破解有用,跟得头都大了,当然,还好的是我来到了下边的位置:

004195FA     68 54EC4300         push 99mu.0043EC54             ; ASCII "%d.%d.%d.%d"  //IP地址的格式
004195FF     52                  push edx
00419600     E8 E1720100         call 99mu.004308E6             ; jmp to mfc42.#2818
00419605     83C4 18             add esp,18
00419608     8B45 08             mov eax,dword ptr ss:[ebp+8]
0041960B     50                  push eax
0041960C     E8 297B0100         call 99mu.0043113A             ; jmp to WS2_32.inet_addr
00419611     8B8E 48030000       mov ecx,dword ptr ds:[esi+348]  //在这里可以看到IP
00419617     8941 34             mov dword ptr ds:[ecx+34],eax

    看004195FA那里的%d.%d.%d.%d像什么?对的,像IP的格式,放慢速度,在0041960C这个CALL就是增加IP地址的函数,在00419611这里我们可以看到寄存器里外挂验证服务器的IP。看到这里就有信心了,跟下去,下边就是把我们的游戏帐号进行N次运算的过程,本来打算研究研究的,想通过修改验证服务器IP,然后根据算法写出个服务端,进行单机验证的,不过最后放弃了,毕竟我是菜鸟,有没耐心。决定碰碰运气,找验证的地方改跳转吧。继续向下看,没走多远,就遇到了一个跳转,代码如下:

00419723     E8 881E0100         call 99mu.0042B5B0
00419728     85C0                test eax,eax
0041972A     75 29               jnz short 99mu.00419755  //这个跳转值得研究
0041972C     8B8E 48030000       mov ecx,dword ptr ds:[esi+348]
00419732     E8 591E0100         call 99mu.0042B590
00419737     51                  push ecx
00419738     8BCC                mov ecx,esp
0041973A     8965 E0             mov dword ptr ss:[ebp-20],esp
0041973D     68 2CEC4300         push 99mu.0043EC2C             ; ASCII "can not pass authen"  //这里很有意思
00419742     E8 B7710100         call 99mu.004308FE             ; jmp to mfc42.#537
00419747     8BCE                mov ecx,esi
00419749     E8 52FBFFFF         call 99mu.004192A0

    本来对这个跳转没怎么注意的,不过看到“ASCII "can not pass authen"”字样我就乐了(图4),有什么说的,这个就是验证的地方了。把0041972A处的jnz short 99mu.00419755 改为je short 00419755 ,试试看,不出所料验证通过了。

 


    有了这些宝贵的资料,现在我们要做的就是怎么修改这个跳转的问题,因为没脱壳,不能用改代码的方法 ,不要说次次都开OD来改吧,这样太恐怖了。其实动态修改的方法我早想好了,做个内存补丁就OK了,请出keymake1.73,从菜单中的“其他→制作内存补丁”开始制作内存补丁,把“等到进程闲置时修改内存”给钩上,然后添加要修改的内存数据,修改地址就是0041972A这个跳转,由75 29可以知道数据长度为2,原始指令就是75 29了,修改指令为74 29,如图5,然后生成补丁就OK了。今天的成果不错哦。

 



7月20日 第三天

    今天下午1点,99奇迹更新3.2b版,呵呵,没什么说的,抄家伙,破掉它。直接用OD载入,让程序运行起来,搜索字符参考,找到“can not pass authen”,双击它,然后向上看,明摆着一个跳转指令在哪,动手,直接制作内存补丁。OK,整个过程不用三分钟,怎么样,爽吧?
三、总结

    破解这个外挂确实只需要三分钟,可我却用了3天时间,走了不少弯路,当然也学到不少,希望我的破解手记能给像我一样的菜鸟们带来些帮助。



www.yuesky.com独家推出,未经《黑客X档案》及本站授权,请勿转载。违者,本站将与《黑客X档案》共同追究其法律责任。
辉月 2005.2.3

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值