1、申 请 I D:Ganlv
2、个人邮箱:
3、原创技术文章:
2018年1月8日之后,某易似乎对hyxd的内存数据进行了简单的检测,原来的通过基址+偏移的方法改数据会被秒封。
(以下的基址截止2018年1月11日有效)
物品红色gamma值地址:[[["hyxd.exe"+1B9A678]+AC]+E0]+E0,float类型,直接把该数值改成1000会导致账号被封,具体原因暂时不清楚。(这个地址是之前吾爱破解论坛里某帖发的,帖子中的给出的基址已经失效,也没后续更新,所以帖子沉了,很抱歉没法贴出原帖地址)
研究过程:
1. 首先这个游戏有简单的反调试,Cheat Engine 菜单 > Edit > Settings > Debugger Options,改一下设置Debugger method: Use windows debugger,Debugger interface config: Try to prevent detection of debugger,简单粗暴的反反调试就可以了,至于“Try to prevent detection of debugger”具体做了什么暂时不太清楚,有待进一步研究。
2. 然后就可以对这个地址进行“Find out what accesses the address” > “Find what accesses the address pointed at by this pointer” 可以看到两条指令
经过测试,第一条是真正有用的代码,第二条大约每1秒触发1次,可能就是用来检测数据异常的。
那么,不用内存数据修改的方法怎么办呢?
3. 代码注入
这三条指令,第一条是读取红色亮度,第二条是乘以白色亮度,第三条是存到[edi+40]。
代码注入原理很简单,就是二话不说,直接给[edi+40]赋值float的1000。
这块内存区域足够我们注入了,不需要申请新内存,直接在这块内存上修改即可。
原始代码:8 + 5 bytes
[Asm] 纯文本查看 复制代码
mulss xmm0,[esi+000000EC]
movss [edi+40],xmm0
修改后代码:7 + 6 * 1 bytes
[Asm] 纯文本查看 复制代码
mov [edi+40], (float)1000.0
nop
nop
nop
nop
nop
nop
这个就是最简单的代码注入了。
4. 然后就是在CE中实现了
[Asm] 纯文本查看 复制代码
[ENABLE]
"hyxd.exe"+64F3EA:
mov [edi+40], (float)1000.0
nop
nop
nop
nop
nop
nop
[DISABLE]
"hyxd.exe"+64F3EA:
mulss xmm0,[esi+000000EC]
movss [edi+40],xmm0
保存到代码列表即可。
然而CE的自动汇编似乎每条指令不是同时写入的,连续的开关这个代码注入有时直接导致程序崩溃,所以我改为使用db直接拷贝字节数组,这样可以一次性写入,防止程序崩溃。
[Asm] 纯文本查看 复制代码
[ENABLE]
"hyxd.exe"+64F3EA:
db C7 47 40 00 00 7A 44 90 90 90 90 90 90
[DISABLE]
"hyxd.exe"+64F3EA:
db F3 0F 59 86 EC 00 00 00 F3 0F 11 47 40
这样基本可以完成了,目前测试不会被封号。
附录:
人物站立搜1.65,趴下搜0.76,只剩下一个地址,这是跟随相机的高度。
不要直接修改这个数值,队友观战的情况下可以看到和你相同的画面。
对这个地址使用上述同样的方法,找出写入的代码,然后在原始内存上代码注入即可,比如设置成30,就可以拥有一个头上的无人侦察机了。
另外:不开镜搜39.4,二倍镜搜39.4/2,四倍镜搜39.4/4,同理。
附件是我自己的 Cheat Engine 存档文件。
总结:
这个游戏的反外挂系统还不是很完善,正好可以用来练练手,不过还是希望官方尽快完善反外挂系统,甚至不是从客户端入手,而是检测服务器数据。 |