危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2289 浏览18790399

打造《植物大战僵尸年度版》外挂程序

最近看了一些做游戏外挂的视频和文章,正好朋友有给我发来了一个《植物大战僵尸》年度版,这个以前很火的桌面游戏也让我着实迷恋了很长时间,并且用别人做的辅助工具也是玩的不亦乐乎,所以就产生了做个年度版的《僵尸大战植物》的辅助工具的念头,虽然在游戏中使用辅助工具会丧失一些玩游戏乐趣,但是这个研究的过程却让我学到了一些东西,于是危险漫步就将此过程记录下来同大家一同分享。

开始之前先介绍一下整个过程中用到的几款工具。

Cheat.Engine.V5.4.简体中文版(以下会简称CE)。

内存写入监视器V2.OOllyDBG(以下会简称OD)。

好了现在开始进入正题吧,我们先从分析阳光值开始,首先打开并进入游戏,记下阳光的数值(我这里是150)。然后运行CE程序并使用CE载人游戏结果。

使用CE搜索前面记下的阳光数,数值:”150”,扫描类型:选”精确数值”,数值类型:选4字节。点击“首次搜索”。

找到很多包含数值“150”的地址,现在回到游戏进行操作以使阳光值发生改变。然后再使用CE进行新值的搜索,经过再次筛选后只剩下一个地址(如果不确定当前结果是否正确可以再次进入游戏并改变阳光值,然后观察剩下结果与刚刚改变的值是否一致)双击该地址将其加入到下边的栏里并右击该地址选择“查找写入该地址的代码”调出监视窗口。再次回到游戏,试着改变当前的阳光值,这时会看到监视窗口里已经记录了改写该地址的指令了。选中该指令,点击“更多信息”。

指令:add[edl+00005578】,eax红色显示的这句代码指示将EAX中的值写入到EDI-l-00005578处的地址,并且下面提示这是一个指针的值(EDI的内容)。我们记下上面EDI显示的内容(EDI19651008),再回到CE中搜索“19651008”‘这个值,选中“HEX”,使用十六进制、四字节方式搜索。

找到了很多个包含此数值的地址,把最前面的几个地址保存到下面的栏中然后回到游戏选择“菜单”>“重新开始本关卡”,游戏初始化完毕后,查看刚刚保存的那几个地址的内容都发生了变化,再次按照前面的方式查找阳光的值并得到进行写入操作的那条指令,查看EDI的内容,会发现下边栏中的地址:010A9888的内容和EDI的内容相等。

右击这个地址选择“查找写入该地址的代码”调出监霞窗三:再次回到游戏选择“菜单”>“重新开始本关卡,初始化完毕后,查看监视窗口。

指令:mov [edl+00000868].eax,指令显示EDI还是一个指针的内容,我们再次记下EDI的内容(EDI=010A9320)并返目到CE中查找该值,将得到的结果中的前几个地址加入到下边栏中。

再一次回到游戏选择“菜单”>“重新开始本关卡”,游戏初始化完毕后,发现上面刚刚保存的地址中的数据没有变化。好吧,这次我们选择退出游戏。再次运行游戏并重新载人,根据提示选择“保存当前地址列表和代码列表”当游戏初始化完毕后。我们会发现CE地址栏中保存的内容依然没有改变。由此我们可以确定地址:007794F8就是我们要找的地址了。我们可以获取到金币数的存放位置(金钱的搜索方式:金钱数除以10,例如有1010A金币,搜索时要搜索101)最终我们就可以定位到代码了。代码有需要的朋友们可以来找我要。

通过多次中断观察这段代码我们发现地址:0044BAAE处的ESI中的值([ESI]-010A9320)始终是相同的,这个值和我们在查找阳光值时得到的地址:007794F8中取出来的数值相同,由此我们就可以得到公式。

通过使用CE对游戏每次购买道具时减少阳光的代码进行定位,同样也可以定位到代码。

我们用OD载人程序并定位到地址:00433F86处,通过分析程序购买道具这一过程我们定位到代码段。

程序会通过每种道具的代码号最终换算出这种道具的价值(即阳光值)然后通过起始地址:“0076C600+偏移量”的方式获取到该道具的价值以供下一步操作时使用。我们使用OD定位到地址00760600处。

运行游戏并打开CE将游戏载人,开始进行游戏并等待第一个僵尸的出现,当第一个僵尸出现的时候使用CE首次搜索,搜索类型为:“未知初始化数值”,数值类型为:“4字节”。

完毕后返回游戏中,购买一个“豌豆射手”道具并放在出现僵尸的那一行上,等待“豌豆射手”将子弹打在僵尸身上,迅速切换到CE中再次搜索。搜索类型为:“减少的数据”,数值类型为:“4字节”。反复这一过程。最终获得结果(僵尸在被打掉头之后的血量为68)。我们最终会定位到代码段。

通过修改的几个功能我们已经可以轻松的过关斩将了。这时又让我想起了老版本的“植物大战僵尸”的那个经典辅助工具,上面实现了很多等功能,研究一下这些功能是怎样实现的吧,于是又翻出老版本的游戏和辅助工具,然后使用一款ⅡQ做“内存写入监视器”的工具来查看辅助工具对游戏了些什么。先运行老版本的“植物大战僵尸”

游戏再打开辅助工具,最后打开“内存写入监视器”。“内存写入监视器”提供了两种监视方式来监视记录指定程序对其他程序进行内存写入操作情况,这里我直接使用PID方式。通过“任务管理器”查看得到辅助工具的PID并-填入到指定的文本框内,然后点击“开始监控”,返回游戏操作即可。危险漫步的这些文章到这里就结束了。

相关推荐