秘境1杀怪数量的修改_天天热点

2023-03-26 18:55:24 来源:哔哩哔哩

游戏是用lua脚本处理这数据的,它存储的形式其实是一个双浮点数,所以我们先把搜索的数值类型改为“双浮点”,进秘境后先搜索0,杀一怪后再搜索1,一般就能搜索出数值存储地址。

如果想简单修改,直接修改这地址的数值就行了。我们继续吧,要实现杀一只怪就能下秘境2层。继续对此地址下断,看谁改写它,最终我们能找出是以下语句:

lua51vc12.dll+2B10 - 89 68 04              - mov [eax+04],ebp { ebp =  浮点数,杀一只 +0.125 }


(资料图片仅供参考)

这是lua脚本语句,如果要修改它,我们应该按共用函数的形式来处理。

通过对此语句下断追踪,我们获悉,它是杀怪得经验函数这个函数里调用的调用lua脚本

下面是调用lua脚本语句的具体地址:

gamesvr.exe+CD2B0 - FF 15 2C967F00        - call dword ptr [gamesvr.exe+18962C] 

所以第一个脚本可以是这样:

[ENABLE]

alloc(newmem,2048)

label(returnhere)

label(originalcode)

label(exit)

label(flag_mjing1)  // 标志

registersymbol(flag_mjing1)

newmem:

mov [flag_mjing1],1

originalcode:

call dword ptr [gamesvr.exe+18962C]

mov [flag_mjing1],0

exit:

jmp returnhere

flag_mjing1:

db 00 00 00 00

"gamesvr.exe"+CD2B0:

jmp newmem

nop

returnhere:

[DISABLE]

dealloc(newmem)

"gamesvr.exe"+CD2B0:

call dword ptr [gamesvr.exe+18962C]

第2个脚本:

[ENABLE]

alloc(newmem,2048)

label(returnhere)

label(originalcode)

label(exit)

newmem:

mov ecx,[flag_mjing1]

test ecx,ecx

je originalcode

cmp ebp,40490000   // 50.00 双浮点的后4位的数值

jae originalcode

mov ebp,40490000

originalcode:

mov ecx,[edx+ecx*8]

mov [eax+04],ebp

exit:

jmp returnhere

"lua51vc12.dll"+2B0D:

jmp newmem

nop

returnhere:

[DISABLE]

dealloc(newmem)

"lua51vc12.dll"+2B0D:

mov ecx,[edx+ecx*8]

mov [eax+04],ebp

//Alt: db 8B 0C CA 89 68 04

需要注意的地方就是:

脚本的启用顺序是第1个,然后是第2个

修改数量时,操作的双浮点数,不是写8个字节,它只写后面的4个字节

标签:

企业要闻

新闻快讯