[晴 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) | 阅读(80806)
bertyk Homepage
2010/07/12 23:00
非常感谢您的帮助
007
2009/08/08 06:29
我连程序都打不开啊
a Email Homepage
2009/08/05 18:52
开心网外挂怎么用啊
muhuoshan
2009/06/13 07:44
现在外挂一登上开心网001里的花园就无法使用了.提示"Root Element Missing".
turbozv 回复于 2009/06/14 18:39
请参考notemper2x的分支吧: http://www.zhaixudong.com/kaixin001/
Jin Email
2009/04/18 22:18
turbozv 你好
我试着抓包时发现,除了verify参数还有个 r 参数
GET /house/garden/seedlist.php?verify=21724919_1062_21724919_1240121642_3143ee46e8a36e2f25dec62db4eeb0e8&r=0.33425199473276734
这个 r 是怎么生成的呢
猩猩
2009/04/16 17:10
呵呵呵!楼主辛苦啦
zjjzjj
2009/04/14 23:46
能开发kaixoo上面得开心农场不?
qqq
2009/03/04 05:30
开发个送礼物的挂吧
lyda1221 Email
2009/02/25 17:48
我在执行开心网的外挂时,总是提示错误信息“若要安装应用程序,必须首先安装.Net Framework的以下版本之一 V2.0.50727"是为什么呀,能知道我吗
isme00174 Email
2009/02/13 01:28
老大有没有兴趣研究一下Kaixin.com开心农场的外挂?偶用Fiddler2抓了一下包,是二进制的,看不懂,很有挑战性啊
抢车位
2009/01/09 07:13
fear楼主,能开发个QQ空间里的抢车位么
Elliott
2009/01/03 18:48
很佩服LZzan
smccdd
2008/12/22 17:02
楼主啊,做个抢房子的外挂吧,现在换房间有钱赚了,实在是需要外挂啊。
互动卡多哈
2008/12/19 21:13
楼主,固定# 恢复体力的Id列表,不会去非列表里的人处休息# 如果需要自动找到不在列表内的好友处休息,要设置 *# RecoverList=9282315这个好像不能用 不去我设定的地方休息
支持飘渺
2008/12/16 03:13
我以为就我自己的朋友买卖不可以用呢,原来有这么多人shuai
LZ救救偶们~
2008/12/16 00:48
5555shuai好友买卖真的不能用了啊~~~
2008/12/15 15:33
我也发现了,朋友买卖辅助工具里面出了好多显示,好像没买卖成功!
111
2008/12/15 15:04
买卖朋友确实不能用了 puke
smccdd
2008/12/15 04:14
大家朋友买卖可以用吗?我刚才发现用不了了。
猪猪
2008/12/14 06:26
外挂都能用的时候 这里果然很冷清啊!!有没有教父的外挂啊,自动买地皮的
楼主辛苦了
2008/12/12 22:56
期待买房子外挂~
delphi
2008/12/10 22:56
要是delphii就好。原来你做咯。那我就不用了。indyhttp。post也是很方便的。我以前就做过刷票机。cookie么。伪造下就行了。
代码能给我个么。c#的。我sxping2@21cn.com
1234567
2008/12/09 17:52
其他都很好用啊~期待买房子外挂~zanenvy
guest
2008/12/07 03:47
好像整合在一起也不是很难的,为啥不放在一起。另外,建议在里面增加个LuaHelper 把部分游戏逻辑和获得页面后的处理放在Lua 脚本中处理,这个外挂就可以更通用些了。
参考:LuaInterface
粉丝
2008/12/03 21:53
老大,能不能开发个“买房子”的外挂啊?期待期待。
云宇
2008/11/16 18:39
我也想玩,可是在没有其他人的邀请下不能注册新的了.哪位朋友帮个忙啊.我的电邮是sunyongjiji@163.com
test@test.com
2008/11/13 22:47
我不会anger
H3C
2008/11/07 06:04
小弟佩服!
顺便问问,你的博客是自己花钱买的域名??
世纪新云 Homepage
2008/10/30 00:07
开心网争车位游戏中无法显示flash动画的解决办法:

进入注册表下面位置
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent]
把里面的Post Platform目录删掉后重启IE浏览器即可。

原因:被未知病毒或者插件修改了注册表导致无法显示。

此故障的特点:大部分网站的flash可以显示,就开心网的争车位无法正常显示。
idoudoum
2008/10/29 04:31
自动更新能否给份源码啊
分页: 1/5 第一页 1 2 3 4 5 下页 最后页