zcalpd 发表于 2023-2-26 13:55

ce汇编脚本写到易语言游戏就崩溃

请问各位大佬这段ce汇编代码写易语言需要申请新内存么?
我写的改完了游戏直接崩溃。。。研究好几天了,求个方法。

939372735 发表于 2023-2-26 16:37

需要申请新内存,并在新内存写入相应的字节码,而且jmp过去需要动态计算偏移,jmp回来的偏移也要计算,很麻烦。不如找一下mov ,eax中的eax来源,想办法不使用jmp newmem,实现同样的功能。

gunxsword 发表于 2023-2-26 17:09

首先我不确定你那个写法对不对,因为我不用易语言,不知道你那个是不是支持,直接,89 45 5C这样写,假设你这个模块支持

其次,你发贴,应该把汇编发出来,要不有些东西看不到.

不过你这个的问题,我到是发现了,你的目的我也知道了,想法是没啥问题,但是你那个E9,这说明你是把CE注入的JMP的汇编给写进去了,你是想实现

mov ,0b 这样的效果,你应该直接修改ASM,不用注入,注入的话,会出现跳转,你要跳过去,才是你想要的汇编的代码

另外能不能直接修改ASM,或者说你这个想法能不能像你这样实现,要看你修改后的指令长度,你这个如果是写入BYTE也就是,只写入一个字节,像当前的0XB,是可以的,但是如果是,2个字节以上,原指令的长度
就不够用了,不够用就得看后面的代码是有多大用,能不能破坏,要不就得JMP后修改再JMP回来

不知道你听懂多少!!!

zcalpd 发表于 2023-2-26 17:19

gunxsword 发表于 2023-2-26 17:09
首先我不确定你那个写法对不对,因为我不用易语言,不知道你那个是不是支持,直接,89 45 5C这样写,假设你这个 ...

原代码是
mov ,eax
mov eax,esi
fstp dword ptr
mov
fld    dword ptr
如果直接改成 mov ,0B的话效果是有的,但由于少了两行代码,发射子弹的位置就错乱了。
所以我想用跳转,在一个空白的游戏模块地址写了一个原有的让代码跳转,但是一跳转游戏就直接崩溃是什么原因呢?
原代码
000000001 mov ,eax
000000002 mov eax,esi
000000003 fstp dword ptr


000000001 jmp 00000010
000000003 fstp dword ptr
····················
000000010 mov ,0B
000000011 mov eax,esi
000000012 jmp 000000003

zcalpd 发表于 2023-2-26 17:23

939372735 发表于 2023-2-26 16:37
需要申请新内存,并在新内存写入相应的字节码,而且jmp过去需要动态计算偏移,jmp回来的偏移也要计算,很麻 ...

用CE自动汇编脚本就没问题,但是写到易语言里直接修改字节集就不行,一跳转游戏就崩,不只要易语言应该怎么写才对。。。上面没找到EAX的来源,蒙死了

//code from here to '' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:
mov ,0B
mov eax,esi

exit:
jmp returnhere

"PlantsVsZombies.exe"+6C769:
jmp newmem
returnhere:





//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"PlantsVsZombies.exe"+6C769:
mov ,eax
mov eax,esi
//Alt: db 89 45 5C 8B C6

明明跟自动汇编工具写的一样,我弄就崩。。

zcalpd 发表于 2023-2-26 17:29

gunxsword 发表于 2023-2-26 17:09
首先我不确定你那个写法对不对,因为我不用易语言,不知道你那个是不是支持,直接,89 45 5C这样写,假设你这个 ...

Aurelion 发表于 2023-2-26 17:29

代码错了{:1_925:}

zcalpd 发表于 2023-2-26 17:39

Aurelion 发表于 2023-2-26 17:29
代码错了

完全按照自动汇编的写也不行,在CE里只要跳转就游戏就崩了,是因为我没申请内存么?
自己在没有数据的地址写汇编是不行的么?{:1_908:}

asd5478 发表于 2023-2-26 19:56

易语言不是有个超级hook模块吗?

asd5478 发表于 2023-2-26 20:00

zcalpd 发表于 2023-2-26 17:39
完全按照自动汇编的写也不行,在CE里只要跳转就游戏就崩了,是因为我没申请内存么?
自己在没有数据的地 ...

崩溃就是代码错了,我以前搞过手动算。。。不过还是直接用超级hook模块吧,简单
页: [1] 2
查看完整版本: ce汇编脚本写到易语言游戏就崩溃