ce汇编脚本写到易语言游戏就崩溃
请问各位大佬这段ce汇编代码写易语言需要申请新内存么?我写的改完了游戏直接崩溃。。。研究好几天了,求个方法。 需要申请新内存,并在新内存写入相应的字节码,而且jmp过去需要动态计算偏移,jmp回来的偏移也要计算,很麻烦。不如找一下mov ,eax中的eax来源,想办法不使用jmp newmem,实现同样的功能。 首先我不确定你那个写法对不对,因为我不用易语言,不知道你那个是不是支持,直接,89 45 5C这样写,假设你这个模块支持
其次,你发贴,应该把汇编发出来,要不有些东西看不到.
不过你这个的问题,我到是发现了,你的目的我也知道了,想法是没啥问题,但是你那个E9,这说明你是把CE注入的JMP的汇编给写进去了,你是想实现
mov ,0b 这样的效果,你应该直接修改ASM,不用注入,注入的话,会出现跳转,你要跳过去,才是你想要的汇编的代码
另外能不能直接修改ASM,或者说你这个想法能不能像你这样实现,要看你修改后的指令长度,你这个如果是写入BYTE也就是,只写入一个字节,像当前的0XB,是可以的,但是如果是,2个字节以上,原指令的长度
就不够用了,不够用就得看后面的代码是有多大用,能不能破坏,要不就得JMP后修改再JMP回来
不知道你听懂多少!!!
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 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
明明跟自动汇编工具写的一样,我弄就崩。。 gunxsword 发表于 2023-2-26 17:09
首先我不确定你那个写法对不对,因为我不用易语言,不知道你那个是不是支持,直接,89 45 5C这样写,假设你这个 ...
代码错了{:1_925:} Aurelion 发表于 2023-2-26 17:29
代码错了
完全按照自动汇编的写也不行,在CE里只要跳转就游戏就崩了,是因为我没申请内存么?
自己在没有数据的地址写汇编是不行的么?{:1_908:} 易语言不是有个超级hook模块吗? zcalpd 发表于 2023-2-26 17:39
完全按照自动汇编的写也不行,在CE里只要跳转就游戏就崩了,是因为我没申请内存么?
自己在没有数据的地 ...
崩溃就是代码错了,我以前搞过手动算。。。不过还是直接用超级hook模块吧,简单
页:
[1]
2