以《向僵尸开炮》为例,达成秒杀怪物的效果
ce吧
全部回复
仅看楼主
level 8
我们以微信小游戏:《
向僵尸开炮
》为例,讲一下ce的简单使用方法。
目标是达成秒杀的效果。
目前的思路是:利用扣除血量的代码,让怪物被击中就死亡
现在开始:
打开游戏,打开ce,附加进程。
2025年12月09日 13点12分 1
level 8
我们首先要找到血量
不小心截图失败了,直接从4字节重新开始
这是因为我们虽然选择了游戏进程,但是这个微信app并不是一个单独的进程,里面有很多子进程
2025年12月09日 13点12分 2
哥们加下微信教我下ce
2026年05月20日 02点05分
前排说明,会封号的。一个没有出过问题的账号用这个还有行,一旦修改过分被封了号(例如修改几十亿伤害),账号就在服务器上挂名了, 从此这个账号下所有角色,修改任何东西都会封联网玩法,即便是将掉下去的血量改成满血,也会返回封号提醒
2025年12月16日 00点12分
@q20184832 ce没啥可以教的,基础教程网上很多,剩下的就是找个游戏练习了。而且,同样的学习时间,用来学习od、ida更好
2026年05月20日 13点05分
改了数据没有固定,还是会变是什么原因,
2026年05月21日 07点05分
level 8
重新选择进程,打开进程列表后,会发现有好几个进程,至于哪一个是真的,可以使用高级选项的暂停功能来判断,如果点完暂停后,游戏画面开始不动了,说明有可能是
正确的
进程。
有些游戏即便是表面暂停了,但是仍然是错的进程,不过这样的进程都比较少,一般也就两个。遇到后可以搜索一些简单的数值来判断进程的真假
还可以从人物管理器里面的cpu,内存,网络等使用率来判断。有些游戏体积很小很小,甚至比微信挂机状态消耗还低,可以两个方法结合起来判断。
2025年12月09日 13点12分 3
电脑上看不了大图,不知道什么毛病,只能再手机上看
2025年12月23日 15点12分
level 8
经过几次搜索后,终于剩下两个地址,其中一个是真是血量地址,另一个是显示地址。
可以通过锁定来判断,锁定后血量一直不掉或者抽搐回复,解锁后再挨打血量正常往下掉。说明是真的。挨打了血量没变,但是还是死了就是假的。
如果不小心被打死了,就得重新搜索,因为这两个地址都是临时的。想要每开一局都有固定的地址(基址),就得用到指针了。这方面我不太懂。另外这个游戏由于编写代码的特性,导致几乎找不到指针。
2025年12月09日 14点12分 4
level 8
简单判断后找到血量地址,接下来需要的是找到:到底是什么导致血量发生变化。
由于qq截图截不到右键菜单栏,我就不截图
右键血量地址——查找写入地址的内容,会弹出附加提示框,点:是
让怪打一下,让血量发生变化。
可以得到一条汇编代码,这句代码就是让血量发生变化的地方。
挨了3次打后,得到了同一条地址。
6213A58F6E9 - 44 89 7C 02 60 - mov [rdx+rax+60],r15d
双击出现额外信息,乱七八糟的看不懂。
仔细观察后发现
rdx+rax+60 = 24C00000000+15479F00+60 = 24C15479F60 正好就是血量地址
r15=1644 这是16进制的,经过换算后是5700,正好就是最大血量。
明明改了999,却将5700写入到了血量地址。说明代码对当前血量有校验,即便改动了,最后也会将血量限制到最大血量。
2025年12月09日 14点12分 5
level 8
点击显示反汇编,出现一个窗口,最上面就是刚才的代码,先添加一份到列表里,会出现在点暂停的那个高级选项里面,之后双击可以回到这个地方。
然后将这串代码抹掉试试。
怪物在拼命的打,伤害不停的冒,血条都空了,中间小护士丧失在暴毙。是因为这个怪会加血,但是由于代码没了加血可能运行错误导致变成了扣血。
但是这里出现个问题,怪打不死我了,但是我也打不死怪了。
2025年12月09日 14点12分 6
level 8
这时配合上面的图分析一下这串代码的作用。
6213A58F6E9 是这条语句在内存中的地址
44 89 7C 02 60 是下一句翻译成字节的结果,看不懂,不管他,
mov [rdx+rax+60],r15d 汇编代码,几乎看不懂
mov:将逗号后面的数据,传给前面的地址
rdx+rax+60和r15d 都是内存中的地址,他们中间分别存着不同的值,就像快递柜的编号,其中r15d可以看成r15,至于为啥我也不懂。
[]:方括号,取这个地址的值
[rdx+rax+60]:取这个地址(当前血量地址的值,即9999)。取对应编号快递柜中的货物(一区+南门+三柜+四排+五列……)
mov [rdx+rax+60],r15d :将r15d中的值(5700),传给rdx+rax+60这个地址的值(99999),不管原来的值是多少,都换成新的值。
将编号r15d快递柜中的货物取出来,放进编号rdx+rax+60的柜子里,柜子里原来的东西扔了。
如果理解了这局代码的意思,就可以尝试改变这句代码,让它按照我们的需求来改变
例如:将mov的赋值效果改成add的增加效果,这样怪物打我们就变成加血了。
2025年12月09日 15点12分 7
level 8
说干就干,动手试一下再……
这是为啥?
mov [rdx+rax+60],r15d 将r15的数值放入血量地址中,我改成add(增加)效果应该是,将r15的数值增加到血量中去呀?为什么还会掉血?
2025年12月09日 15点12分 8
level 8
重开一局试试,这次下个断点试试,选中扣血的代码,按F5下个断点。
下断点的意思就是,在这句代码放个标记,当代码运行到这个地方是,让它立刻停下来,这样可以观察代码中所用到的数据,用来分析代码的功能。
2025年12月09日 15点12分 9
level 8
于是我从头开始,搜血量,查访问,然后发现,两次用的的代码居然完全不一样啊!这游戏的代码居然是动态的啊!这么一个小游戏搞的这么复杂干什么啊?
原来的代码是是:mov [rdx+rax+60],r15d
新获得的代码是:mov [r11+r12+60],eax
好在基本的逻辑没变,仍然是将逗号后面的值放进血量地址中去
改一下试试
虽然成功了,但打了半天后发现,怪确实打不死我了,可是我也打不死怪了
2025年12月09日 15点12分 10
level 4

2025年12月09日 15点12分 11
level 8
一时间也没啥好办法,下个断点试试。
这次成功的断下来了。右边冒出个框,一堆看不懂的东西,不过里面的东西跟之前的那个额外信息挺像的。
所以经过一番对比后,开始猜测
太巧了,这次截到的数据我刚刚看过,血量地址+血量 eax可以看作rax,至于为啥我不懂
r11 = 24C00000000 r12 = 17E6AF00 rax = 00001644
按F9再次运行一下看看,得到一组新的数据(这次图就不放了,直接开始对比)
r11 = 24C00000000 r12 = 17E6AD20 rax = 00001644
之前的是人物血量地址,那么这个就应该是怪物的血量地址?
添加一下试试看
还是护士小姐姐好,打我都是520[爱心]
2025年12月09日 16点12分 12
level 8
既然这条路行不通,换个办法试试
原来的代码不是将一个数值放进血量地址吗?我直接把这个数值改成0,那不就直接死亡了吗?
试试
然后游戏卡死了
2025年12月09日 16点12分 13
饿死我了,吃碗米饭压压惊
2025年12月09日 16点12分
level 8
经过仔细对比后,我发现改成0之后,下面的两行代码被覆盖掉了,导致游戏卡死
既然不行就换个方法,在经过尝试改成sub(减去),没啥好的结果,之后,我的实力就已经到头了。
仔细思考后发现,eax是代表了一个地址,但并不是真正的地址,我改成0,虽然数值只有0,但是却是一个地址,这个地址是00000000,占了8个字节,所以空间不够,就覆盖了后面的代码。
代码的意思是将eax的值交给血量地址,既然不能改变eax,那我就把eax的值改成0,这样就可以将0传递给血量地址了
试试。
试了半天后发现,我好像没法直接将eax的值改变,我想尝试找到eax的来源,就像查找指针那样,但是努力了半天还是失败了
2025年12月09日 16点12分 14
level 8
直接改似乎陷入了死胡同,只好请出自动汇编了,还好我看新手教程比较认真[哈哈]
重新搜索血量,查找访问,找到扣血代码,然后使用自动汇编。
里面的内容看不懂,不管它,反正都是固定流程。
按照之前的mov用法,写出一句代码:mov edx,0
将0放进edx中,接下来的语句就是将edx的值放入血量地址中。虽然绕了个弯,但是可以达到目的。理论上……
2025年12月09日 17点12分 15
1 2 3 4 5 尾页