zoukankan      html  css  js  c++  java
  • 转:阳光牧场外挂的主要编写思路介绍

    终于有点时间写这样一些文字,来介绍我前些时间写的搜狐阳光牧场外挂。
    其实这样的一个外挂没有什么高深的技术,只需要使用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,通过上面文字的介绍,相信各位已经明白了,这样的一个外挂是怎么工作的了。

  • 相关阅读:
    vs2015 系统找不到指定的文件(异常来自HRESULT:0x80070002)问题的解决方法
    Quartz定时任务和IIS程序池闲置超时时间冲突解决方案
    怎样设置IIS6.0的闲置超时时间
    C#窗体如何通过keybd_event()函数模拟键盘按键(组合键)产生事件
    安装完DevExpress14.2.5,如何破解它呢?
    IIS6.0发布后对路径“D:xxxxxxxweb.config”的访问被拒绝问题的解决方法
    CentOS7 nginx+tomcat实现代理访问java web项目让项目支持jsp和php
    col-xs , col-sm , col-md , col-lg是什么意思?什么时候用?
    Linux 防火墙命令的操作命令CentOS
    Linux(centos)新建,删除,移动,重命名文件夹和文件的命令
  • 原文地址:https://www.cnblogs.com/analyzer/p/1583506.html
Copyright © 2011-2022 走看看