查看: 157|回复: 1

[转载图文] 植物大战僵尸:寻找召唤僵尸关键CALL

[复制链接]
发表于 2020-5-26 13:37:56 | 显示全部楼层 |阅读模式
  实验目标:通过遍历寻找召唤僵尸的CALL,通过调用CALL出现自定义的僵尸,加速僵尸的出现。
  
僵尸CALL的遍历技巧:
  我们可以通过僵尸出现在屏幕中的个数来遍历寻找僵尸出现的CALL
  首先打开CE->进入游戏开始新的游戏-> 直接搜索未知初始化数据
  等待出现第一个僵尸 ->CE搜索-增加的数值 -> 回到游戏中
  等待出现第二个僵尸 -> CE搜索增加的数值 ->然后杀死一个僵尸-> 搜索减少的数值
  CE中直接选择介于两者之间的 -> 输入 0 - 10 这个范围 -> 进一步筛查
  按照上面的步骤依次筛查 ,最终会看到两个数值!
  
1.首先打开CE工具,等待开始游戏以后,我们直接【搜索未知初始值】,因为结果太大所以地址栏不会显示。

植物大战僵尸:寻找召唤僵尸关键CALL

植物大战僵尸:寻找召唤僵尸关键CALL
  2.当屏幕上出现第一只僵尸以后,我们直接切回CE修改器,【搜索增加的数值】。

植物大战僵尸:寻找召唤僵尸关键CALL

植物大战僵尸:寻找召唤僵尸关键CALL
  3.等待出现第二只僵尸以后,我们再次【搜索增加的数值】,经过二次排查以后,地址栏的地址变得更少了。

植物大战僵尸:寻找召唤僵尸关键CALL

植物大战僵尸:寻找召唤僵尸关键CALL
  3.等待出现第三只僵尸以后,再次回到CE【搜索增加的数值】,经过第三次排查,地址又变小了很多。

植物大战僵尸:寻找召唤僵尸关键CALL

植物大战僵尸:寻找召唤僵尸关键CALL
  4.等待小推车自动的杀死一个僵尸,或手动杀死一只,(我是等待小推车推死的),然后回到CE【搜索减少的数值】。

植物大战僵尸:寻找召唤僵尸关键CALL

植物大战僵尸:寻找召唤僵尸关键CALL
  5.接着搜索未变动的数值,此时CE会显示连个地址,我们加入下方地址栏。

植物大战僵尸:寻找召唤僵尸关键CALL

植物大战僵尸:寻找召唤僵尸关键CALL
  6.在CE数据窗口选中第一个地址,右键选择是什么改写了它,然后等待出现僵尸,会发现一条汇编代码,我们记下地址【00471B57】

植物大战僵尸:寻找召唤僵尸关键CALL

植物大战僵尸:寻找召唤僵尸关键CALL
  接着在第二个地址上同样的操作,然后记下地址【0041DE07】。

植物大战僵尸:寻找召唤僵尸关键CALL

植物大战僵尸:寻找召唤僵尸关键CALL
  7.我们直接OD载入吧,载入以后运行起来,然后到程序领空,并在【00471B57】,【0041DE07】两个地指处下两个【F2】断点。

植物大战僵尸:寻找召唤僵尸关键CALL

植物大战僵尸:寻找召唤僵尸关键CALL
  8.回到游戏等待出现僵尸,观察发现第一个地址【00471B57】并不是出现僵尸的地址,我们取消这个断点,然后按下【F9】让游戏跑起来。

植物大战僵尸:寻找召唤僵尸关键CALL

植物大战僵尸:寻找召唤僵尸关键CALL
  接着回到游戏,再次等待出现僵尸,观察(如下)地址发现,只要出现了僵尸游戏就会被断在【0041DE07】地址处,那就非常肯定这就是关键地址了。

植物大战僵尸:寻找召唤僵尸关键CALL

植物大战僵尸:寻找召唤僵尸关键CALL
  上方代码,一般情况下应该不会有调用函数,因为这里是只是计数器,那么这个函数的作用应该仅仅只是一个僵尸计数函数,所以我们要返回到上一层。
  9.我们直接RETN返回到上一层,会看到如下代码,直接在PUSH地址上下一个【F2】断点,然后运行游戏,回到游戏等待出现新的僵尸,这里我为了演示方便重新开了一局。

植物大战僵尸:寻找召唤僵尸关键CALL

植物大战僵尸:寻找召唤僵尸关键CALL
  经过我的测试,上面的参数经过不同程度的修改确实可以控制僵尸的出现位置,和僵尸的类型,但这里传递的参数还是过多,而且很多参数我们都用不到,那么我们直接出这个CALL,去外层看一下。
  9.我们在以下位置直接下【F2】断点,等待出现僵尸OD会直接断下,我们经过单步调试然后记下这些地址参数。

植物大战僵尸:寻找召唤僵尸关键CALL

植物大战僵尸:寻找召唤僵尸关键CALL
  上图的EDI是一个动态地址,因为他是僵尸对象,所以每次程序运行都会发生变化,如果想用代码注入器注入代码的话,则需要找到EDI的基地址,接下来我们将使用CE搜索EDI的基址和偏移。
  10.这里我们使用X32dbg调试器,因为OD默认无法脱离进程,导致无法使用CE下断点,直接使用x32dbg附加游戏进程然后运行,并在【00413055】的位置下一个【F2】断点,回到游戏等待出现僵尸,然后x32dbg会自动断下,我们单步【F8】并记下【ESI寄存器】参数。

植物大战僵尸:寻找召唤僵尸关键CALL

植物大战僵尸:寻找召唤僵尸关键CALL
  如上我们只需要记下【143DF008】然后,选择文件,选择脱离进程即可。
  11.打开CE附加游戏进程,并搜索十六进制【143DF008】,多搜索几次排除一些干扰,然后选择几个看着顺眼的地址然后加入到下方地址列表。

植物大战僵尸:寻找召唤僵尸关键CALL

植物大战僵尸:寻找召唤僵尸关键CALL
  12.直接在第二个地址上下一个硬件访问断点,然后会发现有一堆数据,此处选择第一个然后单击【详细信息】,发现此处的偏移地址是【00768】然后记下EDI的地址【00FE40E8】,记下以后关闭窗口。
  13.此处我们已经发现了基地址,我们直接记下来吧 【006A9F38】偏移是【768】指向的就是僵尸的对象地址。
  14.使用代码注入器测试一下效果。
  转到召唤僵尸CALL:[00413055] 执行到返回出CALL
在004140C9的地方直接给mov eax,1


温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
论坛交流群:672619046

0

主题

7

帖子

0

精华

零级会员

Rank: 1

学币
7
荣耀
0
rank
0
违规
2

    发表于 2020-6-3 23:05:24 | 显示全部楼层
    体育图晕晕晕晕晕晕
    学逆向论坛-免费的逆向学习论坛
    微信公众号
    快速回复 返回顶部 返回列表