最近在开发社区版网页游戏,其实在整个开发过程中碰到了不少问题。而这些问题也被很细心的用户们发现,并使用外挂程序钻了空子。例如我在前面曾写过的一篇博客《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

网页游戏外挂分析及防范相关推荐

  1. 网页游戏外挂的设计与编写:QQ摩天大楼【一】(基本技术)

    http://ouyangjia7.iteye.com/blog/674834 网页游戏外挂的编写很简单,不需要研究其源代码,不需要懂得汇编知识,只需要分析发送到服务器和服务器发送到本地的数据包就可以 ...

  2. 网易云加密--Android安卓移动应用程序加密加壳保护方案防破解防逆向分析防游戏外挂

    网易云加密--Android安卓移动应用程序加密加壳保护方案防破解防逆向分析防游戏外挂 一.服务简介 网易云加密为网易公司旗下产品,致力于为移动应用程序提供专业保护方案,让加固变得更简单,一键搞定.目 ...

  3. 一文带你了解对游戏外挂的逆向分析的详细步骤。

    详细的逆向分析步骤,可以点击下面文字链接进行查看. 链接:游戏外挂样本逆向详细步骤

  4. 对网页游戏《卧龙吟》的分析3-----预登陆flash的源代码分析

    获取到预登陆flash的ActionScript源代码,在flash builder4.7中调试. 这里顺便说一下网上说的flash builder4.7破解总是出现奇怪的问题,要么是破解完了就提示许 ...

  5. 登录网页无法连接服务器,网页游戏无法登录全面分析

    根据最近一些玩家的反应,玩家正在进行游戏的时候突然掉线.卡加载进度条.黑屏.白屏.服务器不允许链接等,这些都是网页游戏的最为常见问题.下面由我介绍四种方法给各位玩家,请您们遇到问题可以按照以上方法尝试 ...

  6. [Mugeda HTML5技术教程之14]案例分析:制作网页游戏

    本文档要分析的案例是一个爱消除的网页小游戏,从中可以体会一些Mugeda API的用法和使用Mugeda动画制作网页游戏的方法. (一)游戏规则: 1.开始游戏时,手机出现在最上面一行的任意一格: 2 ...

  7. C#使用 WebBrowser制作网页游戏辅助工具关键技术分析

    使用WebBrowser控件,实现起来确实很方便,但灵活性差,比不上直接组包发包.对三国风云这款网页游戏来 说,WebBrowser用的好的话理论上可以实现想要的功能(我只实现了整点自动"举 ...

  8. FPS游戏外挂屡禁不止,如何破局?

    据游戏工委发布的<2022年1-6月中国游戏产业报告>显示,2022年上半年,中国游戏市场收入排名前100的移动游戏产品中,射击类(FPS)游戏数量仅占比4%,在各大品类游戏中位列倒数. ...

  9. 自由Android安全研究员陈愉鑫:移动App灰色产业案例分析与防范

    11月18号,2017看雪安全开发者峰会在北京悠唐皇冠假日酒店举行.来自全国各地的开发人员.网络安全爱好者及相应领域顶尖专家,在2017看雪安全开发者峰会汇聚一堂,只为这场"安全与开发&qu ...

  10. 如何打造一款游戏外挂

    目录 前言 1.内存数据排查 1.1 例-植物大战僵尸 1.2 例-只狼 2.外挂程序编写 3.挂机类自动外挂 4.网络游戏外挂 前言 记得小学的时候玩页游把家里电脑弄坏了(怎么回事,页游还能弄坏电脑 ...

最新文章

  1. lisp的vla函数画矩形_难点解析丨反比例函数的图象和性质
  2. Problem G: 部分复制字符串
  3. 前端,校招,面淘宝,指南
  4. java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized
  5. echart 饼图每一块间隙_花10分钟做酱香饼,简单方便又美味,酥脆咸香比买的还要好吃...
  6. Java用户定义对象的LinkedList
  7. 【干货】10张GIF动图让你弄懂循环、递归、二分检索等概念
  8. hdu 4974 贪心
  9. 马化腾评 Facebook 加密货币;苹果或将 15% 产能移出中国;Python 新版发布 | 极客头条...
  10. 人脸检测(十九)--人脸检测综述(2018.2)
  11. java程序内存泄漏排查
  12. 一次基于Vue的Vedio.js使用
  13. C语言求阶乘与阶乘和
  14. 计算机cpu占用率高,CPU占用率高怎么解决?Win10系统电脑CPU占用率100%的解决方法...
  15. 神雕外挂 神雕ol外挂 http://www.shaguayou.com
  16. 单片机成长之路(51基础篇) - 023 N76e003 系统时钟切换到外部时钟
  17. 美国虚拟PSTN号码
  18. 2.Maven创建以及依赖、继承、聚合
  19. 退役旧数据节点-黑名单退役
  20. C++ 字符串拼接函数:strcat_s

热门文章

  1. 蓝桥杯B组 杨辉三角
  2. jquery实现注册表单验证
  3. 米兔机器人恐龙拼图手册_米兔积木机器人(多形态组合、自平衡系统、App联动)...
  4. 桃子CCD视觉高速喷射点胶机,用它你就会爱上它
  5. css中的counter计数器
  6. 基站定位(Google API)
  7. 关于NaN、undefined、null——基础必懂
  8. 本地服务启动慢问题及dubbo测试方法记录
  9. LINUX下更新flash
  10. Beaglebone Black——开机自动运行程序