1.游戏漏洞介绍
随着当下各种SRC业务漏洞已经被挖掘殆尽,游戏漏洞挖掘是一个新赛道
游戏漏洞对于SRC漏洞挖掘来说是一个巨大的缺口,目前很多厂商都有游戏业务,但是能挖掘游戏漏洞的人寥寥无几,更别提能挖到很多漏洞了
其中比较有特色的是溢出漏洞
溢出漏洞总结
溢出攻击“就像是将很多沙子倒入装满水的容器时,水就会溢出来一样。
一、内存溢出就是你要求分配的内存超出了系统能给你的系统不能满足需求,于是产生溢出
二、内存越界:
何谓内存访问越界,简单的说,你向系统申请了一块内存,在使用这块内存的时候,超出了你申请的范围,
三、缓冲区溢出:
缓冲区溢 出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上。
四、栈溢出:
栈溢出就是缓冲区溢出的一种。 由于缓冲区溢出而使得有用的存储单元被改写,往往会引发不可预料的后果。程序在运行过程中,为了临时存取数据的需要,一般都要分配一些内存空间,通常称这 些空间为缓冲区。如果向缓冲区中写入超过其本身长度的数据,以致于缓冲区无法容纳,就会造成缓冲区以外的存储单元被改写,这种现象就称为缓冲区溢出。
常见溢出方式
1、负数溢出常见的单字节负数范围为99~FF计算机数值一般统计为21亿为正数 ,最大值超过21亿为负数我们用到游戏里有一些偏差所以默认正数最大值网上偏差一些大约是25亿左右25亿~42亿为负数,但是每个游戏设置的最大值都不一样截取出售物品的封包数量123 修改数量代码FF FF FF FF进行溢出只要在80 00 00 0O~FF FF FF FF之间就可以的负数最大值溢出 FF FF FF FF -1/价格或者数量
2、出售溢出截取出售物品的分包分析a,常见数量为正常溢出方法,正负数溢出,0溢出。定值溢出。b,出售倍数溢出,将出售的物品的倍数进行修改,达到不同比例的效果c,批量出售,将批量出售的数量改小,达到小的损耗溢出效果。
3、正数溢出常见的单字节溢出负数80~FF 常见的正数00~7F游戏无法用负数溢出可以试试正数溢出截取封包分析数量位置 修改数量发送封包正数最大值溢出 7F FF FF FF -1/价格或者数量 66
4、加字节溢出常用的加字节规则04 01加3个字节04 00 00 00 01 308 01加7个字节08 00 00 00 00 00 00 00 01 3~710 01加15个字节10 00 00 00 00 00 00 00 00 00 01 3~15加字节换算10进制16-1=15字节
5、格子溢出(拆分溢出)a,格子溢出 格子位置代码 格子类型代码递进 欺骗溢出 b,相同格子拆分物品达到位置叠加溢出c,将格子的数量为改为负数,有的时候可以达到付出溢出d,0拆分溢出,正负数溢出。
6、特值溢出特定值溢出就是只有几个溢出代码可以溢出分辨不出溢出范围的要使用递进快速的找到溢出代码截取合成的封包找到数量代码例如00 00 00 01就修改为00 00 00 00递进最前边的00进行溢出另一种就比如01 00 00 00这种可以采用四组点红,同时递进达到溢出。正数最大值7F FF FF FF负数最大值80 00 00 00负数最小值FF FF FF FF=-1
7、扫荡溢出a 0扫荡溢出,正负数溢出。b,有动态验证的要使用滤镜,截取封包分析有无动态验证用滤镜修改后溢出O0 FF FF FF若修改为4组FF没有效果
8、商城溢出商城溢出元宝截取买一个的封包找出数量代码修改4组FF重发看效果0溢出,定制溢出,挖量溢出。常规溢出方法有7FFF FF FF/2/单价(数量)7F FF FF FF/单价(数量)7F FF FF FF/单价(数量)*2-要刷的个数=正数控量溢出的数值
9、合成炼化溢出合成截包,7F FF FF FF/合成数量=溢出值0溢出。在溢出是可以替换物品代码,或者替换物品级别可以跨类型跨级别溢出。
10、POST加字节溢出可以配合CE修改数量,达到0,正负数溢出。
11、功能代码溢出字符转换% =25 2=32 D=44 代表负符号
12、属性点溢出一般为00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 五个属性保持总数据值=0即可溢出。
13、ascll码类型加字节正数溢出0溢出,负数溢出
14、文本溢出a对于加密游戏,可以使用CE的文本修改,通过将数量为改为-号,加数量港出。b.将数量改为当前可有数量最大上限,在-1个增加数量达到2字节,再相同可加到多字节溢出效果。
15、邮件交易等溢出在游戏中,将各种币种,数量等改为正负数最大值溢出。
16、另类溢出法+++=挖量溢出。---=挖量溢出
2.浅谈游戏漏洞挖掘利器
1.CE修改器
CE修改器是由美国程序员David Feinstein开发的一套游戏辅助工具,最早应用于《魔兽争霸3》等游戏的内存修改,后来,CE修改器逐渐发展壮大,支持了更多的游戏类型,如《侠盗猎车手》、《生化危机》等,目前,CE修改器的最新版本为8.6版,已经支持了大量的游戏。
CE修改器安装与配置
1、下载CE修改器
访问CE修改器的官方网站(http://www.cheatengine.org/ ),在下载页面选择适合你操作系统的版本进行下载,下载完成后,解压缩文件,得到CE修改器的可执行文件和相关插件。
2、配置CE修改器
打开CE修改器的可执行文件,进入主界面,在主界面中,可以看到一个名为“Processes”的列表,这个列表显示了当前正在运行的游戏进程,如果你想使用CE修改器修改某个游戏的内存数据,需要先找到该游戏对应的进程并添加到“Processes”列表中,点击右下角的“Find”按钮,在弹出的对话框中输入游戏进程的名称或ID,然后点击“OK”,这样就可以将游戏进程添加到“Processes”列表中了。
3、设置CE修改器参数
在CE修改器的主界面中,点击左上角的“Options”按钮,进入设置界面,你可以设置CE修改器的各种参数,如内存搜索范围、数据类型识别等,根据你的需求进行相应的设置即可。
CE修改器基本操作
1、读取内存数据
在CE修改器主界面的“Processes”列表中选中目标游戏进程,然后点击右侧的“Read Memory”按钮,这将打开一个新的窗口,显示当前选中进程的内存数据,你可以查看和编辑任何类型的内存数据,如数值、字符串等。
2、写入内存数据
在CE修改器主界面的“Processes”列表中选中目标游戏进程,然后点击右侧的“Write Memory”按钮,这将打开一个新的窗口,用于编辑要写入内存的数据,你可以输入任意类型的数据,如数值、字符串等,完成编辑后,点击“Write”按钮将数据写入目标进程的内存中。
3、搜索和定位数据
在CE修改器主界面的“Processes”列表中选中目标游戏进程,然后点击右侧的“Search”按钮,这将打开一个新的窗口,用于搜索和定位内存数据,你可以使用各种搜索和定位功能,如正则表达式搜索、地址区间搜索等,找到目标数据后,可以将其导出到新的窗口进行编辑和保存。
4、分析和处理数据
在CE修改器主界面的“Processes”列表中选中目标游戏进程,然后点击右侧的“Analyzer”按钮,这将打开一个新的窗口,用于对内存数据进行分析和处理,你可以使用各种分析工具,如堆栈分析、调用链分析等,分析完成后,可以将结果导出到新的窗口进行编辑和保存。
2.wpe封包套装
原理
利用将模拟器的流量转发给ccproxy
,wpe
监控cc进程,实现封包抓包。(不太好用,还得是封包监听工具1.13)
一. 我们看到的所有东西,在计算机真正运行的时候都要转成二进制机器码才能被计算机识别计算机只认识0和1
二. 电子计算机只认识0和1,因为还有些计算机不是电子计算机。不采用二进制的计算机,光子计算机、量子计算机。
三、WPE抓的包都是都是16进制的,,商城买东西的数量能跟计算器算出来的一样就没加密,无规律就是加密了;
四、为什么溢出时候是 7F FF FF FF ,FF FF FF FF,有些游戏名称;正数最大值7F FF FF FF负数最大值80 00 00 00负数最小值FF FF FF FF=-1
可行性分析
wpe所要改的,不是[游戏里面的数值],而是[伪造信息封包]。 什么意思咧??就是我们用wpe所要改的,并不是”生命力由100变成10000"之类的东西,这种东西无法用wpe改,我们要改的可能是把"我卖了一个500元的东西“改成"我卖了一个50000元的东西或把“我得了10的exp“改成“我得了10000的exp"之类 的,或者是明明身上没东西还一直卖"500元的东西“或没怪物还"一直打10的exp"。
因为wpe是个一封包截取软件,它能截取网络上的数据封包,《传奇》采用了Cient/server模式,我们的信息全在服务器上面想从服务器上修改我们的个人用户信息,可能性为微乎其微,客户端安装在你的机器上,玩游戏的时候,你发出指令,其实就是向服务器发送封包,服务器接收到封包后进行分析,然后返回结果,结果也是以封包的形式发送到你的机器上,你的机器接收到後就可以看到结果了.
这就给我们修改造成了机会,如果我们把封包里的数据改了会怎么样呢??比如我发了一小火球,截取到代码,然后改成闪电的代码,那么我在机器上的效果应该就是闪电的效果了(已经试验过,可行)。这种方法理论上是可行的,可是为什么有时实现不了呢??因为服务器还有应对措施,对一些重要的数据往往需要检测多项,我们修改的时候只是修改了其中一项,是不行的。而且往往数据包是加密传输的,这也给我们找正确的数据制造了麻烦。
但是服务器的监测工作是有限度的,因此不可能全部都由服务器完成,很多耗资源的监测都放到了客户端上,早期的免腊,半月穿人都是在本机上进行了监测,服务端并没有相应的监测机制,只有最近的更新才加入了一些监测,但也造成了整个服务端的狂慢所以对一些服务器并没有监测的东西我们还是可以修改的,当然这些东西需要大家一起探索。
案例
传奇 的c/s通信采用了字节流套接字,这种通信可靠,双向,顺序,因此,封包只要按照原来的顺序就可以了。游戏采用了32位加密(crc/32),故我们不能随便篡改其中的信息,否这服务器在校验时,发现出错,就会断开服务器连接哦,故采用李代桃疆之法更有效。身份认证信息的篡改当然没问题了(通一台机器,同一用户嘛!)我们发送的数据含有坐标码,改包时不要改坐标哦。
强大的功能
一、WPE重发
利用:重复领取礼包,和物资,类似web的并发功能
二、WPE递进
在许多游戏中重复发包时字节流会呈现递增或递减,这个时候可以对改变的检验值进行递增递减发包操作
三、WPE滤镜
用于实时修改!类似脚本
普通滤镜:数据比较少并且比较短
但是游戏可能有些数据是实时变化的,所以需要注意一下不要过滤他们:
四、WPE高级滤镜
高级滤镜:效果类似于普通滤镜
自动识别这些数据,并修改(最好长一点)
五、WPE拦截
作用对象:一些游戏的检测机制
如果能够拦截掉,对自己的检测流量,就可以实现规避检测!
wpe技巧总结
01.礼包 礼包ID
递进、重发 包括在线礼包 vip礼包 以及论坛领取的兑换码礼包
02.任务 接 取 递进、重发
1看能否实现无限完成同一个任务
2能否实现自动完成以后的任务
3还可以通过滤镜使完成任务变为接受任务
03.学习技能 技能代码
技能升级次数代码 滤镜、递进、溢出、滤镜可以实现学习不能学习的 技能 或者学会你想要的技能 递进可以实现技能升级,升级你现在所不能升级 的技能。
04.装备强化 强化动作、次数 重发 递进 滤镜
实现多次强化 一次强满 或者强化溢出
05.打 坐 打坐起来的动作 重发 递进 拦截
实现无限领取打坐奖励,这就是传说中的经验封包 或者是一直保持打坐状 态 但能做其他事。
06.抽 奖 抽到物品 抽奖格子代码 功能代码 重发、滤镜
多次获得奖品,谁说一天只能吃三餐 滤镜可以实现获得你想要的奖品
07.回合游戏 遇怪封包、怪物代码 重发、递进、滤镜
可以实现刷BOSS,刷特殊怪 或者意想不到的怪 活动抢boss输出 无限刷 boss
08.挂机 遇怪打怪 重发 递进 滤镜
这个可以实现无限打怪的动作 比一般挂机更快 因为可以调发送速率 不用 考 虑怪物刷新时间(有些boss也许会有这些bug) 或者打不同的怪物
09.帮派捐献 金额代码 次数修改,
可以实现用最少的钱得到最多的帮贡
10.装备强化 金额代码 溢出
超过服务器认知了,强化装备不用钱 或者 它还给你钱
11.宠物资质 资质代码 递进、修改
可以刷资质丹 或者修改资质 不消耗资质丹 但仍然可以实现资质提升
12.商场商店1 物品代码 递进
递进物品id可以实现得到很多别的物品甚至是没有公布的物品
13.商场商店2 数量、价格代码 溢出
超过价格的上限 服务器看不懂了 指不定乱收费 不收费 给你钱 数量溢出 也可实现购买刷钱的效果
14.使用物品 物品代码 滤镜
物品的id可以随便跟换 我吃了个小血药变成我吃的是经验书!
15.离线奖励经验 修改
对比找到经验代码,改大后发送 在线时间、祝福奖励
16.宝 石 数量、种类 滤镜
合成、镶嵌宝石时,修改宝石种类,可实现:用闪避宝石合成攻击宝石、减 少合成宝石需要的数量,镶嵌闪避宝石加攻击等 增加人物、宠物属性的道具 或者跳级合成
17.人物属性 点 数量 溢出
截取人物加点的封包,找出加的攻击、防御、气血等属性及剩余属性点的 数量代码,溢出攻击 宠物加点、一切能分配资源的系统 技能加点也可以这么
18.放 技 能 等级代码、种类代码 滤镜、重发
实现只会1级法术,释放10级法术。战士放法师远程技能。技能无CD。 放 宠 物技能,BOSS技能
19.死亡惩罚 惩罚代码 重发、修改
若有死亡等不利系统,减少宠物资质、属性等,可以重复发送,负负得正,达到宠物最高资质、属性。又或者是装备强化失败封包 任务死亡掉经 验掉装备 掉钱等等
20.交易系统 金钱代码 滤镜
交易时,修改金钱代码,身上没有钱,显示交易给对方100W。 交易所、发 送假封包
21.对话封包 NPC代码 滤镜
和有些不会出现对话框的NPC对话会出现对话框,购买装备,领取任务
22.好 友 人物ID 递进
在服务器加所有人为好友,找到GM的ID,冒充GM说话
23.系统邮件 邮件ID 递进、重发
递进邮件的ID,收取所有邮件,拿出附件 官方补偿封包 无限领取服务器 发放的奖励
24.双修系统 递进
和一人多重打坐或和多人一起打坐,实现多倍经验。
25.组 队 人物ID 修改
与不是同一阵营的玩家一起打怪,用于共享杀怪任务,共享掉落物品
26.修炼 数量代码、物品代码 滤镜、溢出
不消耗丹药,替换消耗品,修改修炼种类
27.地 图 地图代码 滤镜
可以实现飞图 塔防三国直接飞各个章节的图 思逆讲的rpg可能会飞到隐藏地 图或者gm图 从而修改玩家数据 得到一些意想不到的东西
28.限时活动 活动代码 滤镜、重发
一个限时活动一般会很快下架 所以很有可能有bug 需要自己去寻找
29.武将招募 武将id 滤镜
可以招到任何你想要的武将 前提你要花大量时间去收集武将代码 这个需 要你有耐心 会进制转换
30.竞技场 排名代码 滤镜
打低级的人得到高级的排名 获取更好的奖励 无限连胜等等
31.发邮件 邮件代码 修改、溢出
你截取到一个你发送给别人的封包,然后你把里面的金额数量或者物品数 量给溢出了。接受邮件的那个人就是得到很多的金币或者很多的物品!
32.自我交易 交易代码 溢出
你跟别人交易或者你开两个号自己跟自己交易,你交易的那个号本身背包里 美那么多钱,但是你把交易的金额溢出了,就可以使得交易的那个人得到钱, 但是有可能你的另一个号钱会变成负数。
33.仓库存取 物品代码 溢出
你截取存取物品的封包,然后改数量代码溢出。使得你存取了很多物品。
34.物品购买 物品代码 修改
这个简单一点,直接截取到游戏里面你买物品的封包然后修改数量代码,把 数量代码改成0,有些游戏这样就能无限买物品,而且不需要钱!有一些游戏 呢就是要找特定的代码才能无限买物品不用花钱,找特定的代码就需要你们 自己去找了。一般从封包最后一个开始递进找特定的代码。
35.物品拆分 物品代码 溢出、修改
把物品拆分的数量改成0看看有什么效果!有些游戏该成0了还是可以拆 分。或者溢出拆分的数量!有一个游戏就是这样,你先点开拆分的画面, 改成0然后跟别的物品对调一下位置按拆分,这样就会得到一个物品。
36.副本奖励 副本代码 重发
对扫荡结束包、副本通关包、杀怪结束包这一类的奖励封包进行重发从而到 达无限领取的通关奖励的效果
37.自动副本 副本代码 重发
截取三个数据包 进图截取一个进图包 遇怪截取一个遇怪包 杀完截取一个拿 经验包,截取完三个包后 分别保存 全选然后三个包连续发送 就可以无限完 成三个动作进图遇怪拿经验了
38.背包修改 背包代码 滤镜
通过使用滤镜修改背包格子内的物品从而到到修改数量 物品复制 更换物品 等效果
39.日环周环 任务代码 递进
将接取任务 完成任务或者接取任务 放弃任务的代码归为一组 添加到发送列表 可实现自动进行日环周环任务 节省大量时间。
3.GG修改器
gg修改器也叫做GameGuardian,是国外专门为游戏玩家而设计的一款游戏作弊/黑客/篡改工具,功能十分强大且出色,无论是新游、页游、mod、经典、动作射击、体育格斗、角色扮演等各大分类的游戏都能在这里找到。有了它,你可以修改金钱、HP、SP 等等,你可以享受游戏的有趣部分,而不会受到其不合时宜的设计的困扰。同时软件操作起来非常容易,只需要简单搜索,即可找到你想修改的数值,便捷修改,无需任何多余操作,帮助你轻松修改游戏数值,修改人物数据,让你成为游戏中轻松制胜。
不仅如此,gg修改器还支持在线修改精确数值和自动锁定数值,以及改变变速齿轮的功能,让你更好的体验游戏中的乐趣,享受其所带来的快乐。
原理
内存修改器的原理
安卓内核,也就是Linux底层,会为每个运行中的游戏,动态分配内存空间,用于存放游戏中产生的各种临时数据。这些数据,可能就是RPG游戏中,人物的HP/MP,塔防游戏中的金币,赛车游戏中的氮气量。
因为这些数据,在游戏启动后,会被分配给一个固定的内存位置,所以,我们可以通过数值的变化,定位到该数值在内存中的地址。
这样,在游戏的运行中,我们就可以锁死该地址的值,实现人物无敌、塔防钱不变等等特殊功能。当然,因为Linux底层内存分配机制的设计,每次游戏全新运行,地址空间都会变化,这就要求,每次游戏都要重新搜索定位地址,无法保存复用上一次的搜索成果.
应对闪退
由于GG修改器本身强大的功能,经常会因为庞大的搜索导至游戏闪退,
这里提供一个防止闪退的思路
1.减少内存范围:
一般选A够用:
2.隐藏处理
一般2,3,4进行隐藏
搜索技巧
1,面板搜索:我们一般是会用到d类搜索和e类搜索比如我们的血量是25555,那么我们d或者e类搜索25555,然后改成你想要的血量可以攻击啊,金钱啊什么的1适用性:低,多用于单机游戏
2,等级修改:用到的也是d类和e类比如等级是1,升一级,写2,点击搜索面板的右下角的改善,重复几次步骤,剩下几个数值,改成你想要的数值1适用性:适用于单机和网游,改了之后有的是会面板属性跟着等级提高
3,技能等级:1同上
4,技能伤害修改:
通常是e类
比如技能伤害是180%,那么我们转化成小数,就是1.8,直接搜索1.8然后修改,有的数值是需要把这个转化的小数*10倍或者100倍甚至10000倍才能搜索到,所以都可以试一下
1适用性:高
5,技能伤害修改:
如果技能带数值的话,我们可以用e类或者d类之后搜索伤害数值,然后进行修改,建议数值大一点再搜索↑适用性:中
6,联合搜索的使用:
当我们需要搜索两个数据的时候,一个一个搜索起来的话数值会很多,容易奔溃,那么我们就可以用到联合搜索比如生命值是555,攻击力是222
那么我们就在搜索面板输入555;222,就是一个数值加一个分号然后再加另一个数值,分号在搜索面板有
7,改善的作用
当我们联合搜索两个数值或者多个数值的时候,我们只想改一个数值,另一个数值不想改,那么我们就可以用到改善,我们联合搜索了555222,然后只想修改222这个数值,我们就在搜索面板输入222,然后点击改善,就会把555这个数值过滤
4.应对雷电9代理工具
ProxyDroid
proxydroid汉化版是目前安卓手机平台上使用最多的一款手机代理软件,中文又叫做代理机器人,能够支持全局代理和局部代理,支持HTTP/SOCKS4/SOCKS5代理,但需要root权限。
结合该代理工具可以有效使用wpe套装/CE进行外部修改有效规避检测!
3.漏洞思路
1.直接修改
根据属性点/物品的增减,多次进行搜索,直接定位指针:
应用场景:初始化时的属性/物品/数量定义
案例:微信小游戏
该游戏特性,初始会有属性点分配,多次更改从而定位到四个属性:
进行直接修改:
2.联合查询修改
当我们需要搜索两个数据的时候,一个一个搜索起来的话数值会很多,容易奔溃,那么我们就可以用到联合搜索
比如生命值是555,攻击力是222
那么我们就在搜索面板输入555;222,就是一个数值加一个分号然后再加另一个数值,分号在搜索面板有
应用场景:多个连续在一起的数值:累计充值/累积任务/累积进程
还是上面的案例
购买界面是连续的四个数值:400;400;400;600
这里利用GG联合查询:
400;400;400;600
由于每一个商品都对应一个地址,所以直接暴力修改全部
当然这里部分做了隐藏,所以可以多尝试几次:
3.修改倍速
遇到游戏需要刷时长/个别网盘,可以直接进行修改倍速进行加速:
案例:
某度网盘BaiduNetdisk_7.20.2.2及之前版
安装好某度网盘之后立刻退出防止自动更新:
找到某度网盘的安装目录,删除文件夹AutoUpdate,文件kernelUpdate.exe、autoDiagnoseUpdate.exe
打开某度网盘随便下载个文件,然后进资源管理器查看有网速的 BaiduNetdiskHost.exe进程的pid号
然后利用CE选择进程进行修改倍速:
此时百度悬浮的速度会变成几kb或十kb就成功了。进入任务管理器就会显示真是的速度应该是满带宽的
CE加速前后对比:
VS
4.整数溢出
整数溢出是指当算术运算的结果超出用于存储该结果的数据类型的容量时发生的现象。简单来说,就是当一个数值变得过大(对于有符号整数来说,也可能是过小),无法被正常存储,从而导致意外结果。
举个例子,假设有一个有符号的32位整数,其存储范围为 -2,147,483,648 到 2,147,483,647。如果你试图给最大值(2,147,483,647)加上 1
,数值会回绕到最小值(-2,147,483,648),这在关键系统中可能引发严重后果。
案例:某手游
在购买界面,
利用修改单价X数量超过:16进制总数7FFFFFFF->十进制:2147483647
造成溢出漏洞:
正常利用修改数值确定地址:
2147483647(总数)/488(单价)=4400581
44002581+1+4400582就会造成溢出操作
最终元宝溢出一个2147483647
5.异或X4改差值
首先都是异或搜索,在数值后面加上X4,注意X不是乘号搜索找到一个很大的值,一般是十位数且开头为1或2找到后转到,上面也有一个很大的值,两个值的差就是我们想要修改的值
案例:某手游
商城购买界面进行搜索
对数值进行异或X4搜索
搜索出来的数值一般都是唯一的
转到对应的地址
发现真实的数值是195998-25=195973
修改上面的数值为0并冻结,直接造成0元购