[晴 2008/09/17 08:38 | by turbozv ]
开讲。

做一个Web游戏外挂需要的准备知识:
1) 需要有耐心
2) 熟悉HTML, JavaScript,特别是FORM
3) 熟悉HTTP协议,特别是Cookie, URL的编码方式和POST, GET内容格式
4) 熟悉游戏本身,能抽象出最优的赚钱/升级的数学模型
5) 掌握一门语言,白菜萝卜都可以,我比较喜欢用Python和C#
6) 需要一些抓包的工具,比如Fiddler

好了,来个例子,开心网争车位.

首先,我们看看一个正常用户玩的时候是怎么玩的。
1) 浏览器输入 www.kaixin001.com ,输入用户名,密码,点登陆
2) 登陆后选择左侧的“争车位”,进入到争车位
3) 看看谁在我的车位里,一一贴条
4) 看看自己的车哪些停车时间操作15分钟了,一一找个空的不免费的车位挪过去
5) 登出开心网,关闭浏览器

看看让程序怎么来实现1-6。
1) 登陆开心网
在Fiddler的帮助下,我们知道登陆是把FORM提交到/login/login.php,POST内容是url=%2F&email=xxx@xxx.com&password=xxx
用C#可以方便的完成这个POST操作,然后得到服务器的返回,然后根据返回的内容里找一个关键字就可以判断这次登陆操作是否成功了。(比如我找的就是"<title>我的首页 - 开心网</title>")

2) 登陆争车位
这次是一个GET操作,URL是/app/app.php?aid=1040。
需要说明一下的是,这里没有提供用户名密码,服务器怎么能知道是哪个用户呢?Cookie在这里就发挥了它的作用。
C#里存放Cookie的方法是new 一个CookieContainer,然后所有的HttpWebRequest的CookieContainer都用它。
好了,取得这个页面以后,我们能得到很多信息:(这些信息是JSON格式)
a) 好友列表,每个好友的状态(在线/车位满)
b) 自己的车库信息,停了那些好友的哪些车,分别赚了多少钱
c) 自己的汽车信息,多少辆车,分别停在哪里,赚了多少钱
根据这些信息,我们可以得到一个停放的列表(车位不满的好友列表)

3) 贴条
贴条是一个POST操作,URL是/parking/post.php,内容是verify=xxx&parkid=yyy&p=1&_=
parkid很好理解,车库信息里直接可以取到,那么verify怎么得到的呢?
我当初的第一反应是Cookie数据通过某种运算得到的,不过后来我看了登陆争车位的html后才发现原来这个verify是这样写的:
...
<script language=javascript>
var fs2_pars = "f1";
var g_verify = "383639_1040_383639_1221703779_49963b942199e94b88e405d0f7b1651d";
var g_first = parseInt("0");
var g_touid = parseInt("0");
var g_checkswf = 0;
.....
很好,直接去这个从HTML取得的值就好了。

4) 挪车位
这个操作稍微复杂了一点点,具体的HTTP请求大家可以去分析一下,我分析的结果如下:
a) 是否是免费车位
在JavaScript里有代码:
v_park_free = (v_parkid >> 16) & 0xff;
      if (v_park_free)
      {
        v_mycar += '免费车位';
      }
      else
      {
        v_mycar += '私家车位';
      }
c) 读取邻居家车库信息
URL: /parking/neighbor.php
POST内容: verify=xxx&puid=yyy&_=
d) 读取邻居家车库信息
URL: /parking/user.php
POST内容: verify=xxx&puid=yyy&_=
e) 停车
URL: /parking/park.php
POST内容: verify=xxx&park_uid=xxx&parkid=xxx&carid=xxx&neighbor=xxx&a=1&first_fee_parking=0&_=

5) 登出
GET URL: /login/logout.php

恭喜你,基本的操作你都明白了。

时间晚了,该睡觉了,一些高级主题改天再写~

--------------Google Code 分割线-------------
http://code.google.com/p/kaixin/
---------------------------------------------------

所有代码都上传到了 http://code.google.com/p/kaixin/
大家可以发信给我申请writer权限,或者直接把写好的代码发给我由我来merge。
我的Email: turbozv(at)gmail.com
程序 | 评论(121) | 引用(0) | 阅读(80083)
我是游客
2008/09/18 05:51
开心改了Script,站长不准备更新下吗?
Max
2008/09/18 05:46
汗自己一个,虽然也是程序员,不过搞的是cobol, pl1这些恐龙语言的开发。唯有仰首顿拜大侠了。
555
2008/09/18 05:25
v_park_free = (v_parkid >> 16) & 0xff;
      if (v_park_free)
      {
        v_mycar += '免费车位';
      }
      else
      {
        v_mycar += '私家车位';
      }

这段现在GET不到了

开心网停车现在变为SWF FLASH了
turbozv 回复于 2008/09/18 05:47
是一个js文件~
www
2008/09/18 05:04
原来基本条件我都符合的,我也要尝试做开心网外挂
POP
2008/09/18 04:53
如果没有新版本,那我们只能买辆最贵的车,从此不玩了
POP
2008/09/18 04:52
等待啊,万众期待啊,新版本快出来啊,开心网魔高一尺,飘渺峰道高一丈啊
turbozv 回复于 2008/09/18 05:47
已经升级到V0.9了:)
www
2008/09/18 04:49
开心网 急了  parker不起作用了
POP
2008/09/18 04:34
树大招风了,期待下一版本了
POP
2008/09/18 04:34
争车位的外挂 挂了
火腆
2008/09/18 04:31
拜托老大不要再把创作思路公布拉!
哈落
2008/09/18 04:14
挣车位0.8好像不好使了cry
冷冷
2008/09/18 04:05
老大麻烦更新啊,现在开心网不给用外挂挪车了
.
2008/09/18 03:58
已经不能用了.虽然显示已经ok,但实际上并没有挪成功...估计是开心网那边做了更改了...
jetic
2008/09/18 03:56
建议修改个python 版本的,可以代码放在googlecode上面,比如
ogrobot.googlecode.com, 这样既有源代码管理,还可以按照安全的方式发布代码,只在运行时产生编译文件,还可以跨平台
小宝
2008/09/18 03:56
外挂不能用了
qq
2008/09/18 03:32
老大 能不能让外挂隐身啊 然后按个组合键在调出来 好多外挂都能的那种。。。
呵呵
2008/09/18 01:27
91now.com/down/soft/184025.htm

有个新外挂出来了,多合一的,很直接方便
呵呵
2008/09/18 01:27
http://www.91now.com/down/soft/184025.htm

有个新外挂出来了,多合一的,很直接方便
海贼
2008/09/18 00:41
JS的返回需要System.Net.Json.dll类吧
2008/09/18 00:38
博主,一定帮忙发一个啊,V1.0的外挂
2008/09/18 00:08
博主,能把外挂软件发到我邮箱么?我下载了之后无法解压缩,报错啊!vsuoyuv@sina.com
拜托拜托了!
guoke
2008/09/17 20:44
大佬 搞程序多少年了 能达到这样的境界?????????cool
guoke
2008/09/17 20:41
zan 佩服的全体投地!  支持
郁闷啊
2008/09/17 20:09
C#就能获得执行JavaScript后的返回值.....Delphi得不到 烦......
xixi
2008/09/17 18:43
发个老版本的代码给我们学习呗
111
2008/09/17 16:22
今天外挂不能用 是不是封了
platinum
2008/09/17 12:59
C# 的可移植性太差了,讲讲 Python 比较好,可以跨平台使用
没关系
2008/09/17 12:21
zan老大的帖子严重支持一下呵呵,
不过老大,暖被窝那个不管用啦,安抚不了啦,解决一下哈。
寄信人
2008/09/17 09:04
写的不错呀,受益匪浅。
不过发现咬人0.4里面好像保护某个好友不起作用。
鱼头
2008/09/17 08:42
老大能不能做个新外挂啥的,刷贴车的,现在最多网速快的时候刷6次,不知道能不能多点呢
分页: 4/5 第一页 上页 1 2 3 4 5 下页 最后页