查看: 74|回复: 0

[转载图文] 植物大战僵尸:寻找阳光掉落Call调用

[复制链接]
发表于 2020-6-4 11:31:40 | 显示全部楼层 |阅读模式
  实验目标:通过遍历阳光产生的时间,寻找阳光产生的本地Call,使用代码注入器注入,自定义生成阳光
  阳光CALL遍历技巧:
  进入植物大战僵尸-> 当出现阳光后->马上搜索未知初始数值
  返回游戏->  马上切回CE->  搜索减少的数值 -> 掉一点搜一点
  最后排查出它的掉落地址-> 锁定1即可实现无限掉落
  1.首先CE打开游戏,然后进入植物大战僵尸,当出现阳光后我们暂停游戏,并马上搜索未知初始数值。

植物大战僵尸:寻找阳光掉落Call调用

植物大战僵尸:寻找阳光掉落Call调用
  2.返回游戏,让阳光下落一点点, 马上切回CE,搜索减少的数值 -> 掉一点搜一点。

植物大战僵尸:寻找阳光掉落Call调用

植物大战僵尸:寻找阳光掉落Call调用
  3.经过我的不断排查,最后排查出以下结果,我们将其加入到地址列表中,依次将我们找到的这几个地址锁定为1,看是否有反映。

植物大战僵尸:寻找阳光掉落Call调用

植物大战僵尸:寻找阳光掉落Call调用
  4.此处我已经找到了。

植物大战僵尸:寻找阳光掉落Call调用

植物大战僵尸:寻找阳光掉落Call调用
  5,我们直接在找到的地址上右键,选择找出是谁访问了这个地址,或选中这一行按下【F5】也可以,如下我们需要记下【00413BCB】这个内存地址,然后直接关闭CE,接下来我们要使用OD调试了。

植物大战僵尸:寻找阳光掉落Call调用

植物大战僵尸:寻找阳光掉落Call调用
  6.打开OD直接附加植物大战僵尸进程,【F9】让程序跑起来,按下【Ctrl + G】输入【00413BCB】,定位代码,然后在该位置按下【F2】下一个断点。

植物大战僵尸:寻找阳光掉落Call调用

植物大战僵尸:寻找阳光掉落Call调用
  此时往上找,有一个JNZ的跳转指令,我们双击在此处下一个【F2】断点,然后运行游戏,此时会断下,此处的JNZ如果成功跳转则不会生成阳光,那么我们把此处NOP掉看看会出现啥结果。

植物大战僵尸:寻找阳光掉落Call调用

植物大战僵尸:寻找阳光掉落Call调用
  7.如上图,如果我们将其NOP掉的话,回到游戏会发现无限的出现阳光了,也就是说阳光的CALL就在他跳过的这些指令当中。

植物大战僵尸:寻找阳光掉落Call调用

植物大战僵尸:寻找阳光掉落Call调用
  8.观察它跳过的代码片段,我们找一下有没有阳光生成的CALL,如下我发现了一些带有参数传递的CALL,这可能就是阳光的生成CALL了。

植物大战僵尸:寻找阳光掉落Call调用

植物大战僵尸:寻找阳光掉落Call调用
  9.在PUSH的位置上下【F2】断点,然后运行程序并等待阳光生成,生成后会断下【F8】单步跟随,将其中的寄存器参数记录下来。

植物大战僵尸:寻找阳光掉落Call调用

植物大战僵尸:寻找阳光掉落Call调用
  10.使用代码注入器测试效果,默认的PUSH参数是4出现的是正常的阳光,如果我们将其改成6则会出现一个大的阳光。

植物大战僵尸:寻找阳光掉落Call调用

植物大战僵尸:寻找阳光掉落Call调用
  11.如果将注入的参数改为 push 1 和push 3 那么屏幕上将出现钻石。

植物大战僵尸:寻找阳光掉落Call调用

植物大战僵尸:寻找阳光掉落Call调用
  也可以下钻石雨!很漂亮但很危险,容易崩溃!

植物大战僵尸:寻找阳光掉落Call调用

植物大战僵尸:寻找阳光掉落Call调用
  详细分析笔记,猛戳这里:https://blib.cn/post/4ed8.html


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