满堂花醉三千客,一剑霜寒十四洲。这篇文章主要讲述手把手教你五分钟扒个源码写个无敌外挂相关的知识,希望能为你提供帮助。
前言文章转载:乐字节
交流裙:链接 备注:博客
前段时间群里分享了一个小游戏,多次怀疑自己的眼睛以后,尝试去写个外挂。中间的过程算是一个典型的分析网页源码的步骤,于是整理这篇文章分享出来。
游戏传送门:找方块
具体工作
1 打开资源面板
通过 f12
/ctrl + shift + i
/cmd + shift + i
打开检查,点击 sources
标签打开资源面板。
文章图片
2 了解系统结构
展开
res
文件夹,可以看到,整个小游戏的资源文件很少,主要就是相关图片以及一个负责主要逻辑的 game.min.js
文件。文章图片
3.定位判断逻辑
有群友想通过自动获取颜色不同的区域并点击来实现外挂程序,一开始我的思路也是这样,后来变了,如果我能找到游戏结束的判断逻辑,并让它一直保持成功,即可实现“无敌”。
于是我就通过以下几个步骤来定位游戏结束的判断部分。
3.1 格式化源文件
文章图片
在资源面板中点开
game.min.js
文件,通过图中所示,点击 Pretty print
格式化源代码,得到如下效果。文章图片
为了更好的查找代码,点击代码区域
cmd + a
/ctrl + a
全选所有代码,拷贝至 vs code
中。vsc
里 cmd + n
/ctrl + n
随便新建一个文件粘贴就行,无需保存。然后 cmd + k, m
/ctrl + k, m
选择 javascript
格式,高亮一下代码。也可以点击图中右下角的 plain text
进行切换。文章图片
3.2 查找资源链接通过
cmd + f
/ctrl + f
在源文件中搜索游戏结束的资源文件,可以得到如下结果。文章图片
通过这个变量定位出
gameEndAction
方法。文章图片
通过上面的方法,定位到判断逻辑处。
文章图片
分析一下
judgeIsBlockTouch
即可发现这里便是判断逻辑的关键处。4 拦截游戏
在
judgeIsBlockTouch
方法中增加一个断点,并任意点击一次游戏区域,这时我们就已经走到了这个方法中了。文章图片
分析该方法我们可以知道,方法逻辑是通过判断点击位置是否在矩形区域中,来决定玩家是否过关,我们把成功的后执行的代码拿出来,并在
console
中运行一次。文章图片
中断 debugger 你会发现,即使我们点击的不是正确位置,我们依旧进入了下一关。此时,我们便已经“无敌”了。
5 重写判断逻辑
到上一步,我们还只能每次点击以后,通过在
console
中执行一次成功逻辑来绕过判断,这样的外挂又怎么行呢,所以我们要想办法修改游戏内部运行逻辑,也就是 judgeIsBlockTouch
方法。而想要修改它,我们得知道它定义在哪个对象里的。
一开始我是找到控制整个游戏的对象,也就是
cc
上,可是发现里面的逻辑需要花时间进行梳理。然后我决定从 judgeIsBlockTouch
定义上进行分析。沿着代码一直上滑,可以看到它是定义在 GameLayer
上的。我们在控制台中打印这个对象,发现是个方法,那么即使我们不知道
cc.Layer.extend
里做了什么,我们也知道 GameLayer
是个类方法了。文章图片
我们现在有两种方式来修改
judgeIsBlockTouch
方法。第一种是修改 cc
上的实例对象,这个不好拿,得逐步分析。第二种,直接修改 GameLayer
这个类。尝试一下获取这个方法。文章图片
拿到了就好办,执行下面的代码,然后验证。
文章图片
OK,至此,在游戏里任意点击都能过关了
【手把手教你五分钟扒个源码写个无敌外挂】
文章转载:乐字节
推荐阅读
- Linux系列(‘单引号“”双引号斜杠命令使用方法)
- Linux系列(shell脚本中$$$#$?$* $@表示意义)
- Linux系列(变量运算使用方法)
- MySQL 安装,Linux/UNIX 上安装 MySQL你会了吗()
- [设计模式系列] 抽象工厂
- Linux系列($命令$参数使用方法)
- 2020年Linux工程师要求!!!!!
- Bootstrap卡/卡列断裂
- WordPress中的粗体字幕