34.x86游戏实战-XXX过检测代码分析

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

本次游戏没法给

内容参考于:微尘网络安全

工具下载:

链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3

提取码:6tw3

复制这段内容后打开百度网盘手机App,操作更方便哦

上一个内容:33.x86游戏实战-喊话CALL

之前分析的时候,ctrl+f9之后游戏会弹一个框,然后点了弹框里的确定游戏就会崩溃,然后在弹框的函数里打断点,反到调用弹框的位置发现它附近都是加密混淆的代码,然后当时就没搞,现在就要搞它,跳过这种位置

然后这个游戏只要打硬件访问断点,它就会被检测,然后弹框,然后退出游戏,接下来就用硬件访问断点来触发游戏检测,然后来分析绕过崩溃弹框的方法

接下来打开CE,随便搜索一个值

然后在这么多数据里随便找一个,这里就用下图红框的地址

然后打开OD并附加到游戏,然后在OD内存区

然后先跳转到MessageBoxW函数(之前找的,游戏用的MessageBoxW函数弹的框)里打断点,这里有个东西MessageBoxA和MessageBoxW函数是操作系统提供,其它程序把它改了,会影响我们逆向,所以在逆向之前把其它不用的软件关一关,比如加密程序、加密的视频播放器

在下图红框位置打断点

然后在CE中找到内存地址打硬件写入断点(这个游戏几乎所有内存打硬件写入断点都会被检测到)

一下硬件写入断点就弹框,然后崩溃,如下图

然后点了弹框里的确定,MessageBoxW里的断点就会触发

然后取消断点,按F8,然后就会来到下图位置,也就是之前看到有代码混淆、VM的代码

然后这种怎么分析?代码没法看,运行就崩溃,怎么办?怎么才能绕过?可以绕过的关键代码肯定就在附近,怎么找?这里就用到了栈,在调用函数的之后,也就是在执行call的时候,它会把call的下一行的代码放到栈里,这就有了突破口,所以接下来找栈里的数据,找call下一行的地址,如下图有返回到什么来自什么,这种一般就是call下一行的地址(不是100%准确,只是一般是这样)

然后右击它选择反汇编窗口中跟随

然后就来到了下图位置

然后下图红框是一个条件跳转,它正好跳过崩溃弹框的函数,它很满足检测的写法,检测到自身被入侵,执行代码的时候去判断是否有入侵,有就去执行崩溃函数,下图有cmp有je很明显,cmp判断有没有被入侵,je被入侵了就不跳转,不跳转就会执行崩溃弹框,没入侵就跳转

然后je的硬编码是0x74,然后0x74 0x5这意思是跳5个字节

然后把0x74改成0xEB,也就是jmp,jmp执行是无条件跳转指令(只要执行就跳转)

然后记住地址,也就是0x755B88这个地址,然后OD右击选择下图Detach,解除附加

然后再回到CE,这时游戏崩溃了,打开游戏使用CE附加,如下图操作

然后以十六进制显示

十六进制显示之后就是0x74,也就是je

然后双击1位置,然后写EB也就是jmp的硬编码,然后点确定

点了确定之后,这时OD下硬件写入断点就不会触发崩溃弹框了

改了之后,通过OD

然后再随便找一个地址

然后再下硬件访问断点

然后就会发现不会崩溃弹框了,到这就绕过了检测


img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值