网页游戏外挂分析及防范
最近在开发社区版网页游戏,其实在整个开发过程中碰到了不少问题。而这些问题也被很细心的用户们发现,并使用外挂程序钻了空子。例如我在前面曾写过的一篇博客《web开发安全守则之永远不要相信用户的输入》中介绍过,因为判断用户购买道具时,整个程序遗漏对负数的处理。今天借着另外一个外挂问题,讲讲网页游戏中的外挂。
网页游戏里面的外挂和网络游戏的外挂是截然不同的,需要技术也要简单很多。一般常用方法是使用模拟http的数据提交,当然这个过程需要知道前台(一般flash)的请求接口以及该请求接口的功能;使用程序自动地按序调用这些接口。
例如:在农场游戏中偷取好友的菜, 而这个操作需要访问http://www.aaa.com/steal.php,它需要传递参数a=B;c=D; 那么下面这段php脚本就能达到这么一个效果(注意一般程序都需要登录,这里你需要处理传递那边的session——id,具体可以使用下面提到的两个工具获得)
$rr_url = 'http://www.aaa.com/steal.php';
function curlCookie($url, $cookie, $post)
{$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HEADER, false);$cookie && curl_setopt($ch, CURLOPT_COOKIE, $cookie);curl_setopt($ch, CURLOPT_POST, true);$post && curl_setopt($ch, CURLOPT_POSTFIELDS, $post);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$res = curl_exec($ch);curl_close($ch);return $res;
}
$cookie = '';//这个是记录你登陆的session_id
$post = http_build_query(array('a'=>'B', 'c'=>'D'));
curlCookie($rr_url, $cookie, $post);
如果你把整个游戏的流程分析清楚了(要有耐心),那么写成一系列的这样的请求脚本,你就可以让程序自动跑了。至于怎么样去观察每个请求的详细信息,这个有两个工具,使用firefox的话,一般就用firebug;在ie下面使用httpwatch。
上面是进行网页网挂开发的基础知识,要知道更多的东西,就需要了解http的协议了,不过有上面知识你就入门了;于是不使用手动玩游戏,让外挂程序帮你实现。而要获取更大的好处,就需要寻找程序的漏洞,这可是是个需要耐心的活。举个例子,该游戏是一款足球游戏, 你每天可以与别人打比赛,但是每天比赛场次有限制,一天最多能打30场。而你想免费多打几场的话,就需要找漏洞:
1.最简单的方式:从打比赛的接口下手,首先尝试使用多并发的程序不停地访问这个接口,我们遇到的问题就是在php的fastcgi进行处理的时候,由于是一个人多个请求:
A:判断剩余场次
B:中间执行代码
C:更新比赛场次
两个请求出现了这么一种情况, i请求在执行B, 这个时候ii请求执行了A,这样他就可以多打比赛了,对于这样的操作我们可以设置标志变量;另外B的过程会很短,给利用的机会并不多。
php也有多线程的操作,下面是前面程序的多线程版本
function multiCurlCookie($url, $cookie, $post)
{$main = curl_multi_init();for($i=0; $i<THREADS; $i++){$ch[$i] = curl_init($url);curl_setopt($ch[$i], CURLOPT_URL, $url);curl_setopt($ch[$i], CURLOPT_HEADER, false);$cookie && curl_setopt($ch[$i], CURLOPT_COOKIE, $cookie);curl_setopt($ch[$i], CURLOPT_POST, true);$post && curl_setopt($ch[$i], CURLOPT_POSTFIELDS, $post);curl_setopt($ch[$i], CURLOPT_RETURNTRANSFER, true);curl_multi_add_handle($main, $ch[$i]);}$running = 0;do{curl_multi_exec($main, $running);}while($running > 0);for($i=0; $i<THREADS; $i++){$s .= var_export(curl_multi_getContent($ch[$i]), true) . "\n";}file_put_contents('curl', $s);curl_multi_close($main);
}
2。找更新比赛场次的地方。例如我们这款游戏, 就是在某一个地方更新比赛的场次的逻辑处理出了问题,而聪明的外挂者发现了这个问题,于是利用这个漏洞不断打比赛,打完以后又不定地将比赛场次更新大最大值。
下面说说如何防御这样的外挂:
1. 对程序进行详细地测试
2.对程序修改的时候,要考虑周全,绝大多数破坏行为是由于程序没有考虑周全,同时我们也不得不佩服这些外挂者的细心
3.对一些敏感的信息要做日志,方便以后观察
发现系统出了外挂,我们从那些地方找到入侵者的蛛丝马迹:
1.php的错误日志--检查用户是否有非法的输入,造成php错误
2.nginx/apache的访问日志记录,检查用户访问程序的顺序和具体的接口,看其中是否有可能存在的漏洞
3.自己的日志记录,一般的程序会对关键部分记录日志,以此观察某些操作是否正常---这一项在程序设计的时候就需要考虑
4.数据库里面的数据,观察用户更新了那些与他相关的数据
5.数据库语句的日志记录---例如mysql里面的bin.log文件
今天出现的这个问题 就是发现数据库操作日志文件中大量更新比赛场次的操作,调整思路,找出原来在更新比赛场次时的一个问题。也就是程序上的逻辑考虑不周全。
简单地说了这么多,其实核心就是程序设计的时候要考虑周全,留意用户的不正常行为。我们没有测试到的地方,外挂开发者们帮我找到了,于是尽快发现问题,解决问题。我这里的并没有提到其他方面的安全问题,例如服务器和数据库的操作权限造成的管理权限泄漏,php脚本的攻击。这些都是在程序一开始就必须做的基本安全防范。
转载于:https://www.cnblogs.com/kucongzhi/archive/2010/11/21/1848156.html
网页游戏外挂分析及防范相关推荐
- 网页游戏外挂的设计与编写:QQ摩天大楼【一】(基本技术)
http://ouyangjia7.iteye.com/blog/674834 网页游戏外挂的编写很简单,不需要研究其源代码,不需要懂得汇编知识,只需要分析发送到服务器和服务器发送到本地的数据包就可以 ...
- 网易云加密--Android安卓移动应用程序加密加壳保护方案防破解防逆向分析防游戏外挂
网易云加密--Android安卓移动应用程序加密加壳保护方案防破解防逆向分析防游戏外挂 一.服务简介 网易云加密为网易公司旗下产品,致力于为移动应用程序提供专业保护方案,让加固变得更简单,一键搞定.目 ...
- 一文带你了解对游戏外挂的逆向分析的详细步骤。
详细的逆向分析步骤,可以点击下面文字链接进行查看. 链接:游戏外挂样本逆向详细步骤
- 对网页游戏《卧龙吟》的分析3-----预登陆flash的源代码分析
获取到预登陆flash的ActionScript源代码,在flash builder4.7中调试. 这里顺便说一下网上说的flash builder4.7破解总是出现奇怪的问题,要么是破解完了就提示许 ...
- 登录网页无法连接服务器,网页游戏无法登录全面分析
根据最近一些玩家的反应,玩家正在进行游戏的时候突然掉线.卡加载进度条.黑屏.白屏.服务器不允许链接等,这些都是网页游戏的最为常见问题.下面由我介绍四种方法给各位玩家,请您们遇到问题可以按照以上方法尝试 ...
- [Mugeda HTML5技术教程之14]案例分析:制作网页游戏
本文档要分析的案例是一个爱消除的网页小游戏,从中可以体会一些Mugeda API的用法和使用Mugeda动画制作网页游戏的方法. (一)游戏规则: 1.开始游戏时,手机出现在最上面一行的任意一格: 2 ...
- C#使用 WebBrowser制作网页游戏辅助工具关键技术分析
使用WebBrowser控件,实现起来确实很方便,但灵活性差,比不上直接组包发包.对三国风云这款网页游戏来 说,WebBrowser用的好的话理论上可以实现想要的功能(我只实现了整点自动"举 ...
- FPS游戏外挂屡禁不止,如何破局?
据游戏工委发布的<2022年1-6月中国游戏产业报告>显示,2022年上半年,中国游戏市场收入排名前100的移动游戏产品中,射击类(FPS)游戏数量仅占比4%,在各大品类游戏中位列倒数. ...
- 自由Android安全研究员陈愉鑫:移动App灰色产业案例分析与防范
11月18号,2017看雪安全开发者峰会在北京悠唐皇冠假日酒店举行.来自全国各地的开发人员.网络安全爱好者及相应领域顶尖专家,在2017看雪安全开发者峰会汇聚一堂,只为这场"安全与开发&qu ...
- 如何打造一款游戏外挂
目录 前言 1.内存数据排查 1.1 例-植物大战僵尸 1.2 例-只狼 2.外挂程序编写 3.挂机类自动外挂 4.网络游戏外挂 前言 记得小学的时候玩页游把家里电脑弄坏了(怎么回事,页游还能弄坏电脑 ...
最新文章
- lisp的vla函数画矩形_难点解析丨反比例函数的图象和性质
- Problem G: 部分复制字符串
- 前端,校招,面淘宝,指南
- java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized
- echart 饼图每一块间隙_花10分钟做酱香饼,简单方便又美味,酥脆咸香比买的还要好吃...
- Java用户定义对象的LinkedList
- 【干货】10张GIF动图让你弄懂循环、递归、二分检索等概念
- hdu 4974 贪心
- 马化腾评 Facebook 加密货币;苹果或将 15% 产能移出中国;Python 新版发布 | 极客头条...
- 人脸检测(十九)--人脸检测综述(2018.2)
- java程序内存泄漏排查
- 一次基于Vue的Vedio.js使用
- C语言求阶乘与阶乘和
- 计算机cpu占用率高,CPU占用率高怎么解决?Win10系统电脑CPU占用率100%的解决方法...
- 神雕外挂 神雕ol外挂 http://www.shaguayou.com
- 单片机成长之路(51基础篇) - 023 N76e003 系统时钟切换到外部时钟
- 美国虚拟PSTN号码
- 2.Maven创建以及依赖、继承、聚合
- 退役旧数据节点-黑名单退役
- C++ 字符串拼接函数:strcat_s