CheatMaker 论坛

注册

 

发新话题 回复该主题

人造指针遇到MOVXS应该怎样写代码呢? [复制链接]

1#
人造指针遇到MOVXS应该怎样写代码呢?

上图是一个CE修改教程(全名为Cheat Engine 由浅入深修改游戏)中的第七课“”人造人指针

这位老师的目标是,让一个地址出现在其他空白的内存中,从而不需要一步步找指针即可知道地址。


上图是我特意放大的,里面的mov eax,[edi+00005578]是一个“谁访问了这个地址”看到的代码,再上面的push eax开始到pop eax我都懂,所以我找了另外一款游戏“帝国时代罗马复兴”进行练习,结果却被movxs卡住了。如下图

如果代码的格式也是老师mov,我当然知道怎样写代码,可是出现movxs,当我写自动汇编的时候却出现,如下图



当我删除word ptr,如下图



删除后是可以进行下去的,但出来的结果却和教程不一样,它是没有指针的,而且所对应的地址也不一样。如下图



下图是我脚本中指定的地址"00580020"内存情况




我应该如何写代码才能和老师的一样,能够正确人造指针,谢谢大家。

下面是我的代码,和视频老师的格式是一样的

(另外我听说可以通过共用特征码解决这个问题,具体我也不是很清楚,希望你们指点迷津)



我在这里放代码吧,谢谢大家。


[ENABLE]

alloc(newmem,512)

label(returnhere)

label(originalcode)

label(exit)


newmem:

push edx

lea edx,[edx+7C]

mov [00580020],edx

pop edx


originalcode:

movsx edx,word ptr [edx+7C]

mov [esp+0C],edx


exit:

jmp returnhere

"EMPIRESX.EXE"+B3CF4:

jmp newmem

nop

nop

nop

returnhere:


[DISABLE]

dealloc(newmem)

"EMPIRESX.EXE"+B3CF4:

movsx edx,word ptr [edx+7C]

mov [esp+0C],edx

分享 转发
TOP
2#

值得注意的是,这个游戏中,大部分的基地址都是发射出敌我双方的地址,举个例子:我方移动速度的基地址同时也是敌方移动速度的基地址,它会轮流显示我方和敌方的黑色地址
TOP
3#

写法上看不出错误,但是实际执行要分析游戏你选择的造指针地址对不对,如果是反复被调用的共用地址段,不可用于造指针
TOP
4#

回复 3楼银河漫步的帖子

按照你这样说,造不了指针,那么找出基地址,这个基地址也是变动的,那怎么办,难道每一次都是自己搜索数值去改吗?
TOP
5#

回复 3楼银河漫步的帖子

我想请教一下您,movsx edx,word ptr [edx+7C],EDX等于32,这代码是不是说,把[edx+7c]传给了前面的edx?如果是这样两个EDX不应该相同呀?
TOP
6#

楼主没有把问题说清楚,让一个地址出现在内存是,目 的是什么?这个地址有什么作用?  你的介绍看了一头雾水,最好说的详细一些。
TOP
7#

回复 3楼银河漫步的帖子

我想请教一下您,movsx edx,word ptr [edx+7C],EDX等于3......
MICHE 发表于 2019-12-5 12:20:15

edx只是寄存器,他只在程序执行过程中起作用,并不用来存东西,用来存东西的是内存地址
TOP
8#

回复 6楼yunyan99的帖子

人造指针课程中又说到,当你不想找麻烦的指针时候,你可以用人造指针方法,也就是,让当前可修改的地址,复制多一份,放在自己指定的地址,这样一来就可以在每次游戏开启的时候,知道当前的地址是哪一个地址,我都是看银河漫步的视频才知道的
TOP
9#

回复 7楼银河漫步的帖子

老师,咱们是越说越糊涂了,不如这样,这个贴不要管它,反正我的目标都是,输入秘籍之后,敌方双方都是快速砍树,变成只有我方快速砍树。
那么需要用到共用代码的知识,OK,这一步我懂了。
问题是:我如何知道输入秘籍后和平时的区别,我应该怎样找出这个变动,搞不好,这个秘籍一旦输入,多条代码同时改变呢?那我应该怎么办?
TOP
10#

你应该跳出秘籍的想法
先自己修改出快速砍树效果
然后再想怎么增加阵营判断条件
TOP
发新话题 回复该主题