开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 23491|回复: 119
收起左侧

[易语言纯源码] 易语言调用Flash中的函数及分析过程

[复制链接]
结帖率:100% (3/3)
发表于 2017-8-31 21:42:46 | 显示全部楼层 |阅读模式   日本
分享源码
界面截图: -
是否带模块: -
备注说明: -
本帖最后由 小堆 于 2017-8-31 22:35 编辑

  看到论坛有定制单,需要对某直播平台进行抓包分析。遂入手。
(第一次分析flash文件,有不对的地方还请指教==)
  第一步,开启wireshark抓包。一般直播平台,登录是HTTP协yi,而用户行为包括送花,发言等则是webSocket协yi,在充分利用资源的同时,提高了效率。在对这个直播平台抓包的过程中,只发现了登录的HTTP数据包,而并未发现送花、发言的webSocket数据包。但是发现了一个swf文件。猜想可能是利用flash文件,通过tcp协yi进行传输。
  下载swf文件。载入到JPEXS中进行分析。因为逆向出来的资源没办法直接导入flash中进行调试。所以下文仅涉及到静态分析,对于动态部分,若有人精通,请与我联系。
  首先,在js中寻找相关函数,没有什么大的发现,跟踪调试也比较麻烦,不如先直接通览逆向出来的swf文件。打开swf文件,发现目录说明较为齐全,代码也并未经过混淆,这带来了一个好的开始。
  着重关注脚本这一目标。
TOF4]3_E7AOH.png
file:///C:/Users/ZMoffice/AppData/Local/YNote/data/qqDA089A461B3E834A10A1D73EE2EC3604/638d246322834bc58aaf17b3c2fa4018/tof4%5D3_e7aoh.png
  首先在SPlayer中,进行了初始化,而SPlayer又是继承自simplemvc.view.SpriteView。跟进未发现有用信息。我们查看其他目录,在ggcj.player.service.SingleService中发现了几个可能有用的函数,首先是getCasListFromUrl函数。这个函数进行了HTTP请求获取服务器IP地址和端口,接着startConnectCAS函数便尝试连接获取到的第一个IP,连接成功则进行socketProxyConnectHandler,该函数调用了S1039函数,而S1039函数则携带用户信息进行了认证。在ggcj.player.service.SingleService中还发现了一些以P和S开头命名的函数,通过分析,P开头的函数,是flash推送给JS的消息,而S开头的函数则是JS推送给flash的消息。
S_SXWN3_]ZSS.png
file:///C:/Users/ZMoffice/AppData/Local/YNote/data/qqDA089A461B3E834A10A1D73EE2EC3604/489fc5863e494387abb1f2d01b794126/s_sxwn3_%5Dzss.png
  此外,还发现了jsCallFla及flaCallJs函数。这两个函数分别是js调用flash及flash调用js的函数。以jsCallFlash函数为例进行说明。
)BFB7JK{IZXS.png
file:///C:/Users/ZMoffice/AppData/Local/YNote/data/qqDA089A461B3E834A10A1D73EE2EC3604/7359e140e0df40c79a16f10630db17b2/%29bfb7jk%7Bizxs.png
  从代码中可以看到,一共实现了八个接口,那么在js中,也肯定有八个方法与其对应,这个随后进行分析。以发送消息即sendMessage为例进行分析,跟进sendMessage函数,
CXR}6]1}4A3Q.png
file:///C:/Users/ZMoffice/AppData/Local/YNote/data/qqDA089A461B3E834A10A1D73EE2EC3604/9129f2a200f842d8a20a87969978a5fb/cxr%7D6%5D1%7D4a3q.png
  发现最后调用了S1007函数,继续跟进S1007,具体的代码便出来了:
图片1.png
file:///C:\Users\ZMoffice\AppData\Roaming\Tencent\Users\244036962\TIM\WinTemp\RichOle\%2591%7D1ZHKWNFVF3SK%40)%5BVUF7.png
  这种传输协yi让我想起了QQ的传输协yi,很是类似。看到这儿便理解了S1007这个函数名,1007具体是代表了命令号。首先,设定_loc8这个字节数组的字节排序方式为小端排序。简单普及一下小端排序,即低位在前,高位在后。以十六进制0x12345678为例。大端排序,结果即为0x12345678,小端排序,结果则为0x78563412。接着呢,写入了一个短整数1007,而这个1007,正是函数名中S1007所涉及到的。服务器收到客户Duan的消息,首先判断开头代码是多少,是1007,即认为该条消息为发送信息的消息。具体其他分析添加在了注释里面。数据包封装完成之后,被传送到了下一步,即socketProxy.sendBytes函数,进入socketProxy.sendBytes函数,该函数调用encode函数完成了包头的添加,数据的拼装及加密的任务:
file:///C:\Users\ZMoffice\AppData\Roaming\Tencent\Users\244036962\TIM\WinTemp\RichOle\8SV%7DO01%5DR%7D2AYK8%5D3(_%60C%5DU.png
8SV}O01]R}2AYK8]3(_`C]U.png
图片2.png
通过对encode函数分析,发现数据包头都是由03020101220001开头,以060504结尾。中间则写入了是否加密,内容长度,短整数型0以及内容(也可能是加密过的内容,从encode函数开头可以看到,加密方式为AES加密,模式为ECB,NoPadding,密钥为:66CBC149-A49F-48F9-B17A-6A3EA9B4)。抓包也同样验证了这一点:
图片3.png
file:///C:\Users\ZMoffice\AppData\Roaming\Tencent\Users\244036962\TIM\WinTemp\RichOle\%7BL~5K%5DB1Q4TRQ36T%5D2M1%25D4.png
  到这儿,该swf文件分析已经比较深入了。在重构代码的时候,发现自己手头的AES算法与该文件中采用的AES有出入,因为对算法研究不是很深入。便放弃了自己重新写用户各种功能。如果可以直接调用flash文件,代码构建起来应该会很简单。
  有了这个想法,便想到了ShockwaveFlash对象。利用这个可以实现对flash函数的调用。想要调用ShockwaveFlash中的各种方法,我们首先需要明白,js调用flash,只能传递字符串。因此,在js端,肯定有函数负责将传递的信息编码为xml格式,然后调用flash。到这一步,需要深入去分析js文件了。在送花sendFlower函数下断点,在步入的过程中,发现了许多有用的信息。首先是各个接口:
图片4.png
file:///C:/Users/ZMoffice/AppData/Local/YNote/data/qqDA089A461B3E834A10A1D73EE2EC3604/c913c9e1ce2d4f87b255f6777f3ddc03/%5Dwz9%7B%5Dsnk%5B%24%5B41w%25%7D3bd54b.png
  在js中同样发现了jsCallFla及flaCallJs函数,与flash文件相交互的接口:
file:///C:/Users/ZMoffice/AppData/Local/YNote/data/qqDA089A461B3E834A10A1D73EE2EC3604/e8934e9c62ba4620a83d3e315fa9eaf7/2z5%5B4z%7Bwcoz%253%7Eweprq%5B_ib.png
2Z5[4ZWCOZ3WEPRQ[_IB.png
R5AW6`VAH0X8](226YA7~C5.png
file:///C:/Users/ZMoffice/AppData/Local/YNote/data/qqDA089A461B3E834A10A1D73EE2EC3604/375d4cdc50204f1cadf98876bd6c8618/r5aw6%60vah0x8%5D%28226ya7%7Ec5.png
  最后跟踪到了
file:///C:/Users/ZMoffice/AppData/Local/YNote/data/qqDA089A461B3E834A10A1D73EE2EC3604/5a7fb0e7d898438b84b2e1807c5571e4/ghkfha0iu%5D%247i%28cexfg%25b5j.png
  VM2144这个文件里面,就实现了对参数的xml格式化以及传递工作。
GHKFHA0IU]I(CEXFGJ.png
最后请求的例程如下:
<invoke name="jsCallFla" returntype="javascript"><arguments><string>OperateOtherUser</string><array><property id="0"><string>10754665956</string></property><property id="1"><number>5</number></property><property id="2"><number>10</number></property></array></arguments></invoke>
  可以看到首先定义了接口的名字是jsCallFla,返回类型是js。接着说明了调用方法为OperateOtherUser,后面array即为参数。
  分析到这儿,整个的流程便完毕了。
  也就可以调用接口进行数据处理  跪求好评   跪求精币
样本 样本.zip (35.33 KB, 下载次数: 228)

评分

参与人数 12好评 +10 精币 +30 收起 理由
钱乐 + 2 支持开源~!感谢分享
hehehero + 1 + 2 感谢分享,很给力!~
一曲离歌 + 1 楼主的分析文章,很是精彩
ANJIANTEST + 1 + 2 支持开源~!感谢分享
一瓶矿泉水 + 1 + 2 感谢大神的分享
剑轶 + 1 + 2 奉上小小红包希望笑纳
x纯洁的我x + 1 + 1 感谢分享,很给力!~
冰点 + 1 + 10 奉上小小红包希望笑纳
AdGame + 1 + 1 感谢分享,很给力!~
Love星空 + 1 + 1 恩?支持小堆大牛
大飛 + 1 + 5 奉上小小红包希望笑纳
第二人生 + 1 + 1 感谢发布原创作品,一定好好学习,天天向上

查看全部评分


本帖被以下淘专辑推荐:

发表于 2023-12-26 08:11:00 高大上手机用户 | 显示全部楼层   河南省郑州市
66一样66666
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 2 天

发表于 2022-5-17 14:22:48 | 显示全部楼层   山东省泰安市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

签到天数: 9 天

发表于 2021-9-1 11:28:25 | 显示全部楼层   重庆市重庆市

学习的好教材!!!
回复 支持 反对

使用道具 举报

结帖率:33% (1/3)
发表于 2021-6-24 18:37:42 | 显示全部楼层   河南省开封市

谢谢大佬分享
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2021-5-7 13:32:25 | 显示全部楼层   河南省漯河市
正在学习相关知识 感谢
回复 支持 反对

使用道具 举报

结帖率:100% (7/7)
发表于 2021-3-15 07:01:16 | 显示全部楼层   浙江省绍兴市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:40% (2/5)

签到天数: 9 天

发表于 2021-3-10 11:04:51 | 显示全部楼层   云南省西双版纳傣族自治州
6666666666666666666666666666666666666666666666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:67% (2/3)

签到天数: 12 天

发表于 2020-11-26 12:03:20 | 显示全部楼层   广东省广州市
这源码不对啊
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 4 天

发表于 2020-10-20 22:59:41 | 显示全部楼层   四川省泸州市
支持开源感谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表