关注吾爱破解论坛一年多了,一直都在默默向各路大神学习,也就想着自己也来申请个账号方便交流,
偶然看见了申请账号除了付费之外可以靠帖子申请,我窥屏这么久还是学到了微不足道的一点破解方法,于是就试试水……=W=
在硬盘中找了找,刚好有两个月前下载的【骑马与砍杀:战团】的游戏,在论坛搜了下发现没有这个游戏的破解教程,于是就拿这个吧,当时我下了游戏之后打开发现居然是没破解过的,在网上找了很多个说是
破解了的exe文件结果都无效(可能我找东西的能力不太成……),最后就自己动手丰衣足食了……
废话不多说,直接上OD
一般来说国外的exe基本上不太会加壳什么的,毕竟技术手段的保障确实没有法律手段的保障来的好用,果然这个骑马与砍杀的exe是没加壳的。
然后接下来的话平时我可能会先试试搜索字符串什么的,不过搜索字符串论坛里面有很多,
而且这种游戏的exe的字符串不太可能写死中文,一般是有语言包或者其他的本地化策略的,所以就直接跳过了这一步。
那么怎么办呢? 先试试中断法吧(是叫这个名字来着?)
我们看到现在弹出了这个验证的界面,上面是网络验证,下面是离线本地激活?
那么我现在要弄哪种验证呢?算了,先试试能不能跳过这个验证的窗口吧。
我们点击OD左上角的暂停按钮。
然后点击菜单栏的【查看】——【调用堆栈】
关键字【Dialog】,嘛,应该就是这个了。
选中user32.DialogBoxParamA,然后直接回车跟进去,打断点。
你可能会问“诶,这不是user32.dll里面的函数么,又不是exe自己的函数”
我当然也知道这是系统dll的函数来着,我们只是看谁调用了它,因为按照逻辑,肯定是程序发现这个exe没有注册过所以才会弹框,所以跟出去的话应该会发现一些蛛丝马迹。
打断点,然后关掉CDKey界面(用不着关程序,而且很多地方都调用这个弹框的函数的话,重启程序就很麻烦了)然后再次点进入游戏,好断点命中了!
当前是user32的范围就不用看了,直接执行到返回一直到主程序为止。
这里就是返回的地方了,我们在附近很轻易的就看到了一个很有意思的地方,
[Asm] 纯文本查看 复制代码 005CD07B . 50 push eax
005CD07C . 68 F4A88100 push mb_warba.0081A8F4 ; 00000182
005CD081 . E8 9C9E0400 call mb_warba.00616F22
005CD086 . 84DB test bl,bl
005CD088 . 74 1F je short mb_warba.005CD0A9
005CD08A > 68 E09EDD02 push mb_warba.02DD9EE0
005CD08F . 68 54118200 push mb_warba.00821154 ; last_module_warband
005CD094 . B9 E4449100 mov ecx,mb_warba.009144E4
005CD099 . E8 0295EBFF call mb_warba.004865A0
005CD09E . 68 05040000 push 0x405
005CD0A3 . 56 push esi
005CD0A4 . E9 52040000 jmp mb_warba.005CD4FB
005CD0A9 > 8B8D 70030000 mov ecx,dword ptr ss:[ebp+0x370]
005CD0AF . 6A 00 push 0x0 ; /lParam = NULL
005CD0B1 . 68 30435900 push mb_warba.00594330 ; |DlgProc = mb_warba.00594330
005CD0B6 . 51 push ecx ; |hOwner = E7EE44D7
005CD0B7 . 68 AB000000 push 0xAB ; |pTemplate = 0xAB
005CD0BC . 6A 00 push 0x0 ; |hInst = NULL
005CD0BE . C685 65030000>mov byte ptr ss:[ebp+0x365],0x1 ; |
005CD0C5 . FF15 64437C00 call dword ptr ds:[<&USER32.DialogBoxPar>; \DialogBoxParamA
简单的说就是首先压入eax和0081A8F4传入方法00616F22,然后得到方法的结果之后进行对比,如果ZF=1则跳转到刚才的弹框,如果ZF=0则通过jmp跳转到一个别的地方。
这个JMP是一个大跳(总而言之跳得很远就是了),一般来说这应该就是判断是否过验证的地方了。
我们在test bl,bl打断点,然后关掉验证的界面重新点进入游戏,果然命中断点了。
按F8单步,此时Z标记为1
好,直接双击Z将它的值改为0,然后直接跑一跑试试看。
真的进游戏了……(说实话骑马与砍杀的开发者果然不愧是土耳其人,直性子……)
(这里我本来是想调成窗口模式截图的不过好像没有,就直接这样截图了)
接下来就简单了,重新运行程序到断点,直接将 je short mb_warba.005CD0A9 改成nop,保存文件,成了
说实话我弄之前真的没想到这么简单…… 希望能过…… |