您的位置:>荒野行动>资讯资讯>

CE教程:《荒野行动》从内存数据修改到代码注入

开始吐槽

For:Ganlv

本教程仅供学习交流内存修改、反汇编、代码注入等学习用途使用,请勿用于非法用途。

教程不会继续更新了。
一、人物物品变黄色

2018年1月8日之后,某易似乎对hyxd的内存数据进行了简单的检测,原来的通过基址+偏移的方法改数据会被秒封。

”物品红色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

hyxd.exe+64F3EA - F3 0F59 86 EC000000   -

mulss

xmm0

,[

esi

+000000EC]

hyxd.exe+64F3F2 - F3 0F11 47 40         -

movss

[

edi

+40],

xmm0


修改后代码:7 + 6 * 1 bytes

mov

[

edi

+40], (float)1000.0

nop
nop
nop
nop
nop
nop


这个就是最简单的代码注入了。

4. 然后就是在CE中实现了

[

[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直接拷贝字节数组,这样可以一次性写入,防止程序崩溃。

[

[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

]

随便看看