我的玻璃盒子

【原创】阳光牧场外挂的主要编写思路介绍

终于有点时间写这样一些文字,来介绍我前些时间写的搜狐阳光牧场外挂。
其实这样的一个外挂没有什么高深的技术,只需要使用2个辅助工具和1门你熟悉的编程语言就OK了。

废话不多说,我就开门见山直接介绍了。

你需要准备2个工具:HttpWatch(或HttpAnalyzer),以及JSONViewer(http://www.codeplex.com/JsonViewer)
HttpWatch(或HttpAnalyzer)是收费软件,JSONViewer是free的。另外你也可以安装Firefox的JSONView插件,也可以不用JSONViewer。

编写任何一个WEB应用外挂,第一步肯定都是登录。只有正确登录了,才能继续后面的操作。

我们先拿HttpWatch来分析一下搜狐白社会的登录过程。

第一部分:登录
1、打开http://bai.sohu.com,如果你以前已经登录了,先退出来到要求你输入email和密码的页面
2、按下HttpWatch的Record按钮,然后在页面上输入Email和密码,点登录。然后你会进入白社会首页。这个时候看一下HttpWatch记录的轨迹,如下:

上面的图中我添加了filter,把图片什么的过滤掉了。
3、通过上面HttpWatch记录的轨迹,我们很容易看到,登录的真实URL是:
http://passport.sohu.com/sso/login.jsp?userid=你的E-MAIL账号&password=密码串&appid=1062&persistentcookie=1&s=1248665199215&b=2&w=1440&pwdtype=1
上面地址中,userid是你登录时输入的email地址,password是经过md5加密的字符串,s是时间(1970-1-1到现在的秒数,应该是这个账号注册的时间。在C语言中可以用time()函数来产生),w应该是计算机屏幕X方向的分辨率,persistentcookie表示保存cookie,b和pwdtype是一个常量,不知道具体含义(我们也不需要关心)。

OK,通过上面我们看到的URL,就可以完成账号登录了。

第二部分:进入阳光牧场
1、打开HttpWatch的Record,点击首页左侧的“阳光牧场”,HttpWatch会将每个页面动作都记录下来。我们可以看到,阳光牧场的真实地址是http://bai.sohu.com/app/farm/。在HttpWatch中选中http://bai.sohu.com/app/farm/这条记录,在下方的Content页签中,可以看到这个页面的source code:

2、你可以把这个页面的source code复制出来,到dreamweaver或其他编辑器中查看,你会发现,这个网页其实包含了几个iframe。其中有一个iframe,才是真正的、中间那个阳光牧场的大flash的地址:<iframe src="http://sh_farm.rekoo.com/embed_swf/?so_sig_uid=6位数字&so_sig_session_key=UXdkRmZMaUxFQjg9&so_sig_sig=049fa15390e4c9acffbecac8870e83c1" frameborder="0" width="796" height="590" scrolling="no"></iframe>
在上面的地址中,so_sig_uid就是你在搜狐白社会网站的用户ID,这个ID对一般用户来说没什么用,是每个用户在数据库中的标识。但是对我们编写外挂来说,就很有用了,所以在这个地方,你需要将这个ID保存下来,以后要用到。

3、在浏览器中输入http://sh_farm.rekoo.com/embed_swf /?so_sig_uid=6位数字&so_sig_session_key=UXdkRmZMaUxFQjg9&so_sig_sig=049fa15390e4c9acffbecac8870e83c1,你会发现浏览器中只留下刚才我们看到的中间的那个大flash了,其他的通通都没有了。事实证明我们找到的这个iframe是正确的。(注:执行此步骤时,别忘了打开HttpWatch的Record)

4、在HttpWatch中选中上面的地址,观察一下返回的Content:


5、在上面我选中的高亮部分中,你能看到session_name、session_value、uid等一些信息。其中对我们非常重要的一个值就是session_value。有过web开发经验的朋友都知道,登录后,在站点中是有一个session在client端维护着用户的一些信息,并且这个session是每次登录都会产生的随机字符串,并且有一定的有效期(由管理权配置)。所以,我们要模拟web的动作,就需要拿到正确的session字符串,也就是上面我们看到的那个session_value。

其实到目前为止,我们的分析工作已经进行了一大半了。简单总结一下:
我们上面做了那么多事情,最重要达到两个目的:
(1)如何模拟用户登录
(2)获得正确的UID和sessionid

另外,关于sessionid的获取还有其他方法,例如,如果你使用的是Java,可以从cookie中读取到sessionid。

第三部分、分析阳光牧场各种操作
有了上面的基础,下面的分析简直是易如反掌了。
1、打开HttpWatch的Record,将上面的http://sh_farm.rekoo.com/embed_swf /?so_sig_uid=6位数字&so_sig_session_key=UXdkRmZMaUxFQjg9&so_sig_sig=049fa15390e4c9acffbecac8870e83c1 重新刷新一下。
2、在HttpWatch中,你会看到很多这样的地址:http://sh_farm.rekoo.com/get_api/,这个地址那可是相当的重要啊,几乎所有的命令请求都是往这个地方发。
3、选中http://sh_farm.rekoo.com/get_api/ ,在下面的POST Data中可以看到:

原来这是一个标准的http post请求,完整的URL就是:http://sh_farm.rekoo.com/get_api/?method=user.get_friends&rekoo_killer=你的6位UID&sessionid=刚才我们从页面上获取到的session_value
然后我们点击旁边的Content页签,看到服务器返回的内容如下:


上面是典型的JSON数据,接下来怎么做不用我说了吧。你可以把上面的内容复制到JSONViewer中,它提供了树形结构供你方便的展开每个节点,以分析父子关系、每个节点的类型等信息:

4、上面我们看到的是获取好友列表的请求,其他的诸如获取商店信息、杀虫浇水、播种、收割……请求地址都是http://sh_farm.rekoo.com/get_api/,只不过post的参数不同而已。将正确的参数post给服务器,服务器就会返回相应操作的JSON数据给你,有了这些数据,你就可以进行后期的分析处理了。

OK,通过上面文字的介绍,相信各位已经明白了,这样的一个外挂是怎么工作的了。


posted on 2009-07-27 12:38 深蓝色系统 阅读(9241) 评论(23)  编辑 收藏 引用

评论

# re: 【原创】阳光牧场外挂的主要编写思路介绍[未登录] 2009-07-27 12:45 megax

不错  回复  更多评论   

# re: 【原创】阳光牧场外挂的主要编写思路介绍[未登录] 2009-07-27 13:15 expter

:)
好像外挂一般都是通过抓包分析数据实现。

  回复  更多评论   

# re: 【原创】阳光牧场外挂的主要编写思路介绍 2009-07-27 14:26 evoup

膜拜,够黑客级了  回复  更多评论   

# re: 【原创】阳光牧场外挂的主要编写思路介绍 2009-07-27 22:50 grafield

为什么开心网的登录和你这上面讲不一样呢?
他上面只有一个UID,没有你后面讲的这些东西
http://passport.sohu.com/sso/login.jsp?userid=你的E-MAIL账号&password=密码串&appid=1062&persistentcookie=1&s=1248665199215&b=2&w=1440&pwdtype=1
上面地址中,userid是你登录时输入的email地址,password是经过md5加密的字符串,s是时间(1970-1-1到现在的秒数,应该是这个账号注册的时间。在C语言中可以用time()函数来产生),w应该是计算机屏幕X方向的分辨率,persistentcookie表示保存cookie,b和pwdtype是一个常量,不知道具体含义(我们也不需要关心)。

  回复  更多评论   

# re: 【原创】阳光牧场外挂的主要编写思路介绍 2009-07-27 23:36 pear_li

不错,改天过来好好看  回复  更多评论   

# re: 【原创】阳光牧场外挂的主要编写思路介绍 2009-07-28 08:19 guest

开心网怎么会一样呢?不同程序员开发的,思维肯定不一样。要重新分析。  回复  更多评论   

# re: 【原创】阳光牧场外挂的主要编写思路介绍 2009-07-28 20:57 88

@grafield


别问这样的问题,不同的人做的能一样么  回复  更多评论   

# re: 【原创】阳光牧场外挂的主要编写思路介绍 2009-07-29 10:40 深蓝色系统

这个不是开心网的外挂啊,我明明写了是搜狐白社会的阳光牧场么,呵呵。
开心网现在已经有很多很好的外挂了,分析手段应该差不多,都是用http分析软件了解页面请求,然后用编程语言模拟这些请求,然后对数据做解析。

不过千橡的山寨开心网和其他的有些不同,它的那个开心农场应该是用as3开发的,诸如种植、浇水、杀虫、收割这些都是内嵌在as3中的代码(应该是一个类的方法在接收内部的一些请求命令),不是普通的http请求方式,所以这些行为不太好通过常规手段模拟。

  回复  更多评论   

# re: 【原创】阳光牧场外挂的主要编写思路介绍 2009-07-29 21:56 hnnling

在巡视获取数据时,偶尔会发生光标不能准确定位的情况,也就无法打字,不知道是什么原因,这样就不能一边工作一边挂机,这是一大缺憾  回复  更多评论   

# re: 【原创】阳光牧场外挂的主要编写思路介绍 2009-07-30 21:20 曾经白云飞

阅读博主的文章大有所悟, 根据你的原理分析了开心网的争车位, 确实可以成功.
多谢博主, 呵呵, 根据你的思路我写了开心网争车位的外挂思路
开心网争车位外挂制作的编程思路
http://www.cppblog.com/summericeyl/archive/2009/07/30/91654.html  回复  更多评论   

# re: 【原创】阳光牧场外挂的主要编写思路介绍 2009-07-31 15:41 blgzs QQ249062253

没发现我需要的东西。
如果通信走的https,数据包都是加密的,截取的包都是密文,这个方法就不行了  回复  更多评论   

# re: 【原创】阳光牧场外挂的主要编写思路介绍 2009-08-04 21:16 不戒大师

我想问一下JSON这里你是怎么读取的啊,今天看了一下TinyJSON,感觉不怎么方便呢  回复  更多评论   

# re: 【原创】阳光牧场外挂的主要编写思路介绍 2009-08-05 10:15 深蓝色系统

回复 不戒大师:
我今天抽空写一篇关于TinyJSON使用的文章吧。
  回复  更多评论   

# re: 【原创】阳光牧场外挂的主要编写思路介绍 2009-09-05 14:14 乔丹

能否实现这个功能:好友的某种果实成熟后,马上通知外挂去采摘?  回复  更多评论   

# re: 【原创】阳光牧场外挂的主要编写思路介绍 2009-09-08 14:13 yyy

0904版今天不能获取阳光牧场的页面了,每次重试三次后都不行。  回复  更多评论   

# re: 【原创】阳光牧场外挂的主要编写思路介绍 2009-09-16 17:29 alan

老大能不能搞一个池塘边的外挂啊?  回复  更多评论   

# 校内网的阳光牧场外挂的主要编写思路是怎么样的? 2009-10-01 23:29 笑看人间

校内网的阳光牧场外挂的主要编写思路是怎么样的?能介绍一下吗?谢谢!  回复  更多评论   

# re: 【原创】阳光牧场外挂的主要编写思路介绍 2009-10-17 16:01 小刀

最近看了下这篇文章很好,自己是新手,有很多地方不是太懂,而且开心网花园玩的人是最多的了,如果哪位朋友能从头分析教大家作作外挂就最好了,希望中~  回复  更多评论   

# re: 【原创】阳光牧场外挂的主要编写思路介绍 2009-10-21 15:22 学会等待

自己平时比较喜欢编程,,想学学编外挂,,能不能把阳光牧场外挂的封包前的文件发给我学习一下,这个外挂确实不错。可以的话发到我的邮箱yefeng1860@163.com谢谢。或者我的qq,342871756  回复  更多评论   

# re: 【原创】阳光牧场外挂的主要编写思路介绍 2010-02-20 22:57 上海MFC

能不能把阳光牧场外挂的封包前的文件发给我学习一下,这个外挂确实不错。可以的话发到我的邮箱mounaiqiu@163.com谢谢  回复  更多评论   

# re: 【原创】阳光牧场外挂的主要编写思路介绍[未登录] 2011-01-02 02:15 xxx

@blgzs QQ249062253
脑残呀!
这涉及到浏览器的兼容性的问题,以及,现在不少浏览器引擎都是开源的!!!加密可以解密!!!  回复  更多评论   

# re: 【原创】阳光牧场外挂的主要编写思路介绍 2011-01-29 07:43 金牛

我的神呀 现在不能用了 请再次施展法术吧  回复  更多评论   

# re: 【原创】阳光牧场外挂的主要编写思路介绍[未登录] 2011-07-01 00:54 K

你的文章都写得挺好的,我的网站www.qungege.com  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2009年8月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

统计

常用链接

留言簿(75)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜