某CXOL游戏的引擎HOOK检测
本帖最后由 冰布 于 2019-3-29 19:35 编辑在CXOL游戏里HOOK引擎可以做到纯透人物和KZ之类的功能,但是HOOK引擎是有检测的下面我们来分析一下。
我们首先搜出引擎函数相应的指针,通过修改指针的方式指向我们自己的函数。
我拿下面的HUD_playermove做例子!
1.找到函数
我们先打开CE的查看内存搜索hud_playermove找到函数位置.
如图
2.搜索函数指针
我们右键函数头部点击转到地址复制到CE使用4字节HEX模式搜索
这样我们就得到了函数的指针
3.编写函数并修改指针指向自己函数
具体过程就不发了,粗略截图一下源码.
这样修改之后我们会发现游戏崩溃了,这是为什么?
4.分析检测
我们首先看看有没有代码访问指针,打开CE右键我们找到的指针基质.
右键是什么访问了这个地址
我们可以看到这几句汇编访问了指针的内存
我们打开访问指针的汇编地址通过下断点简单的分析发现
游戏会通过对比函数地址是否在合法范围内来检测是否被修改
以下是我尝试对抗检测的方式
1.
尝试把地址修改在合法地址段内进行lnline Hook跳转到我们的函数
这样修改之后确实游戏没有崩溃但是没过一会就被检测了
应该是CXOL的CRC检测
2.
我们避其锋芒,尝试直接把检测关闭
通过单步分析返回到上一层CALL
可以看到call前面通过一通计算最后lea eax,不等于0的话便跳走
我们可以让这段计算永远大于0这样就不会执行检测CALL
这里idiv esi 意思就是eax除以esi,商放在eax中,余数放在edx中
可以想到只需要让余数永远大于0就能避免eax为0
做到这个只需要复制前面imul里面的基质锁为-1
具体实现原理可以看上图的判断里面的算法
锁定之后再对指针下访问断点发现检测CALL已经没有执行了
至此引擎函数检测已经过掉了
本人技术有限只能写成这样,如有错误请大佬们指教。
本文章由冰布编写.
本帖最后由 E_eYYF 于 2019-3-29 19:30 编辑
易语言有点骚,兄弟 E_eYYF 发表于 2019-3-29 19:27
易语言有点骚,兄弟
没办法就会用易语言:rggrg ce共享下{:301_999:} 虽然看不懂,但是的确厉害 这个HOCK是个注入器吗? 自从speedhackcheck以后就没玩过了以前倒是沉迷灾变