冰布 发表于 2019-3-29 19:09

某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已经没有执行了

至此引擎函数检测已经过掉了
本人技术有限只能写成这样,如有错误请大佬们指教。

本文章由冰布编写.










中国特井 发表于 2019-3-29 20:50

中国特井 发表于 2019-3-29 20:34

LoongKing 发表于 2019-3-29 19:27

本帖最后由 E_eYYF 于 2019-3-29 19:30 编辑

易语言有点骚,兄弟

冰布 发表于 2019-3-29 19:35

E_eYYF 发表于 2019-3-29 19:27
易语言有点骚,兄弟

没办法就会用易语言:rggrg

「青」 发表于 2019-3-29 20:01

ce共享下{:301_999:}

WGT 发表于 2019-3-29 20:04

虽然看不懂,但是的确厉害

linuxprobe 发表于 2019-3-29 20:09

这个HOCK是个注入器吗?

中国特井 发表于 2019-3-29 20:16

戏言跟班丶 发表于 2019-3-29 20:45

自从speedhackcheck以后就没玩过了以前倒是沉迷灾变
页: [1] 2 3
查看完整版本: 某CXOL游戏的引擎HOOK检测