粉丝4586获赞4.1万




大家好,我是月神,今天给大家讲一下游戏漏洞入门的这个挖掘技巧吧。 然后一共是分为了四部分,第第一个是游戏漏洞的技术介绍,然后第二个是漏洞分析,漏洞思路, 然后最后是如何绕过手游防外挂检测,这里看一下免责声明。嗯,这次录制就没有这个实战的演示了,因为没有授权,不太好演示, 就只能给大家讲,然后大家去想,因为大家都玩过游戏,也不难去这个想象。 游戏漏洞顾名思义就是指我们普通玩家做不到的事情,但是我们通过一些特殊的办法可以做到,如何实现呢?是有两种办法,其实和测外部和 app 差不多,也是抓包和修改内存。呃,抓包的话大家都有了解, 直接抓包去修改它参数啊,修改一些,比如金额数量,嗯, 游戏里边就包括什么技能 id, 副本 id 啊什么的,然后 app 可能有充值 id 啊,或者房间 id 这种类似的东西,只不过大家修改的东西不一样,但是基本上思路还是通比较通用的吧。 然后就是修改内存,修改内存我们可以理解为就是修改本地数据。嗯,游戏中就是举个例子,游戏里边比如我们要将道具数量, 我们要买负一个道具,那抓包的话,直接把这个 number 的 参数改成负一,然后给服务器发一个包就好了,对吧?服务器这时候就就收到了,我要买负一个道具,但是修改内存的话,我们就是用这个工具。 嗯,这里也不太方便拿什么东西演示了,我就随便加载一个进程,就是大家想象一下, 想象一下,比如这个是一个游戏,然后这个这里边,比如我现在要买一个道具,我现在比如这是一个商店,我现在要买十个道具,这时候我在这个工 c e 修改器啊,这个是网上都能下载, 我在工具里边搜索时,然后他会把游戏中所有内存地址是十的值全部找到,这个是十禁制的, 会把所有是十的值全部找到,然后这时候我把游戏的道具数量改成二十,改成二十之后,然后这时候我们在这个修改器里边,因为他从十变成了二十,所以我们要再次扫描,把十变成二十,然后点击,点击再次扫描 啊,正常来说如果还是很多值的话,为为什么要再次扫描?就是为了确定哪个地址是这个值,要是还是很多值的话,我们就要通过不断的这个再次扫描变换这个值,最后我们可能能确定哦找到了这个内存地址,这个值, 这个内存地址的值就代表了这个游戏数量。然后这时候可能我们直接把这个有内存地址改成了负一,和我们抓包修改负一是一样的,因为它本地变成了负一,这时候我们点击购买,它给服务器请求的就是我要购买负一个道具,其实都可以, 就是用内存或者抓包都可以,只不过有一些我们经常会遇到,遇到一些签名,对吧?大家经常会遇到一些包里边有签名的东西很难搞, 想搞这个签名也很也很麻烦,需要去做一些工具去绕他,对吧?这时候我们可以用内存修改器,比如我经常在测这个直播的时候,直播直播间, 直播间通常都会加这些签名啊,什么防止,防止别人去修改?然后这时候我在测这个送礼物的时候,我就可以这样去用,用这个 c 一 修改器去加载这个进程, 直播间的进程之后去搜索,比如我现在选择一个礼物,然后我首次扫描它就会把这个直播间里边所有的一全部找到,然后这时候我把礼物数量改成十, 然后我在输入时再次扫描,他可能会找到这个礼物数量的这个地址,就是我要送多少个,因为当前我选中的多少个,然后这个时候我我再改成这个复数, 然后我再点赠送,这时候就就可以去正常一个测试他,如果有漏洞的话,我就赠送成功了负十个礼物,对吧?但是,呃,赠送成功负十个礼物一般的效果就是我们背包会多出十个限量的礼物,然后主播应该也不会去扣, 因为他可能没有这个礼物。嗯,我要说的呢,就是就是修改内存呢?可以做到这个一个辅助的一个一个可以做到这个一个辅助的项目吧?就是说我们可以把它当成一个, 比如抓包,有有这个签名不太好,不太好绕过的时候,我们可以去通过修改内存去, 这这样就避免了他这个签名,对吧?因为签名生成是我在点击这个购买的时候,他会把本地的一些参数就像一起打包起来啊,我不太确定准不准确啊,因为我从来没有学习过这些专业知识,全是个人理解 我的,在我的理解中呢,我在购买的时候他会把所有的参数全部打包起来,然后生成一个签名,所以导致了我们没 生成签名之后没办法去修改他单独一个参数。但是修改内存的时候,我已经我在他生成签名的之前已经把这个数量改掉了。他比如我改成了复时, 他是拿我这个复时去生成的这个签名,所以自然而然他这个签名就对我来说没有任何意义了,我可以随便去修改。通过内存的话,因为是在生成签名之前,我就把数量改掉,然后这里再讲一个点, 如果内存感觉很麻烦的话,我们可以抓包去修改他的返回值,对吧?呃,比如,哎,卧槽,一会这块剪掉。呃,比如我们在直播间里边,我们进入直播间的时候肯定会加载了很多参数,对吧?我们在送礼物的时候,比如送礼一般都有, 都有一个这个什么数量可供你选择,一个什么数量可供你选择,有一些特殊的数字供你选择, 然后这些数字通常都会在这个我们加载的时候,在这个返回包里边返服务器返回给我们,这时候我们就可以在这个加载的时候把返回值改掉, 改掉返回值之后,我们加载出来的一六六六五二零的这些数量,就可能我们全改成负十,就全部变成了负十。然后当我选择 不管选择一或者六六六五二零的数量,他都是默认的是复时,因为我本地的数量已经被改掉了,对吧?然后我发现很多这个审核不理解, 不理解为什么修改本地的值会影响到服务器,这个其实很好理解,因为我我本服务器返回给我的值变了,然后我把我把服务器返回给我的值修改掉了, 那这个时候我再发送给服务器的值不是自然而然也变化了,对吧?本来服务器给我返回的是六十六个礼物数量,就是我,我点击送礼的话可能会送出六十六个,因为我选择的是六十六个,但是我把这个六十六改成了负十,这时候我再点击的话, 就是本地已经变成了我选择了负十个礼物数量,然后这时候我再送就是负十个,可能有点绕啊,但是其实理解的话倒是不太难理解吧。 呃,换个例子吧,就是比如,比如优酷会员充值,这只是比如哈,随便比如了一个优酷会员充值,然后它有一个新用户,新用户充值是首月一块钱,然后它的 product id 是, 比如是六六六啊, 他设置了一个特殊的 id 六六六,然后普通用户充值的 id 是 一,这时候他加了签名,对吧?加了签名我没办法把一直接改成六六六去 去尝试充值这个优惠的 id, 对 吧?这时候我就可以通过我加载的时候,我把返回值中的一改成六六六,这时候他我我本地的这个 这个商品 id 自然就变成了六六六,对吧?啊,这时候我在充值,他充的就是这个优惠的 id, 这 时候就能去尝试他是否成功了,所以这个其实很好理解,不是说我改本地就是我,我只能自己看啊,我改本地其实最终的目的就是为了让他这个发送的, 让他这个最后发发送给服务器的数据改变了这个因为我提交漏洞,每次只要一改返回值就会被忽略,然后就要每次都要去解释这个东西很麻烦。 然后改返回值其实也有很多好处,就是这里再说一下讲偏了,因为想到了,想到了就说一下。嗯,我们在比如想测试一些 vip 啊,或者有一些需要满足条件的情况下,没办法,没办法去尝试,比如这个直播间, 我,我需要我高级 vip 会有一个很很大的一个功能,比如我可以禁禁言别人,但是这个公安功能按钮我看不到,看不到,这时候我就可以去通过修改返回值,可能是在返回值里边被隐藏了,我修改返回值中的我 vip 等级,或者有一些返回值是 false, 我 修改为 true, 他就把把假修改成真,他有可能就把一些普通那个隐藏的按钮显示出来了,这时候也会更方便。我们测试这个题外话题讲到这里还是继续去说这个游戏。这这这没什么, 没什么好说的了,就是一个修改内存,一个抓包,其实两个能达到目的都是一样,就看你怎么怎么方便怎么来。