最近朋友抱怨某软件的下载很慢,想在电脑上面直接下载观看。
众所周知此领域竞争激烈,所以安全意识普遍较高,分析起来较为困难,颇具挑战性。
目标以尽量以最快速度解决战斗,下面分享我的分析过程:

静态分析

不够暴力,略。

动态分析

网络协议是永恒的话题,数据流转的起点与终点,也是我们三板斧的开始。

在此简单总结下安卓网络框架现状:

okhttp:

大众框架,网上资料多,见过最多,例如本样本。
hook方案
可以选择插入HttpLoggingInterceptor,此方法网上很多,最早是珍惜的xposed模块,后来进化的frida模块,增强抗混淆xposed模块。
此方案反制方法太多,本人更喜欢直接hook

java.net.SocketInputStream.read([BII)I
java.net.SocketOutputStream.write([BII)V

缺点就是解析起来很麻烦。

cronet:

性能优于okhttp,网上资料不多,大厂很多都用,例如字节,某手。
hook方案:
框架操作多数在native,java层没有像okhttp那样请求响应的读写点,如果java层hook建议分别hook,涉及类

java.net.HttpURLConnection
org.json.JSONObject
java.io.InputStreamReader

HttpUrlConnection:

旧时代产物了,多老版本使用。
hook方案

com.squareup.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream()
com.squareup.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream()

这个还有可能其他实现类。

统统HOOK,打印结果

样本使用的是okhttp,但内容没有什么线索,数据都做过加密处理。
这时使用第二板斧,因为内存中会存在读写操作,猜测会存在一个下载列表,那就内存漫游起来
HOOK 几个关键类

java.io.InputStreamReader
java.nio.DirectByteBuffer
java.io.ByteArrayOutputStream
java.io.OutputStream

结果在java.io.InputStreamReader(Ljava/io/InputStream;)V有意外惊喜:发现了m3u8文件!

编写插件

拿到了m3u8文件就好办了,
文件里面有解密的key的存储位置,将他从手机中导出来。
下面就使用python编写脚本先下载m3u9文件里面的链接,再将其解密,最后再拼接起来就是一个完整的ts文件,具体代码如下

下载:

def download(ts_urls, download_path, num_tar, key_path):key = open(key_path, 'rb').read()for i in range(len(ts_urls)):ts_url = ts_urls[i]num_f = int(ts_url.split("/")[-1].split("-")[1])if num_f < num_tar:continuestart = datetime.datetime.now().replace(microsecond=0)s = requests.session()try:response = s.get(ts_url, stream=True, verify=False)if response.status_code != 200:print("返回异常:" + str(response.status_code))return num_fts_path = download_path + "/{0}.ts".format(i)ts_temp = download_path + "temp.ts"with open(ts_temp, "wb+") as file:for chunk in response.iter_content(chunk_size=1024):if chunk:file.write(chunk)else:print("下载失败")with open(ts_path, 'wb+') as fw:try:fw.write(aes_decode(open(ts_temp, 'rb').read(), key))except:print("error ts_temp = " + ts_temp)os.remove(ts_temp)except Exception as e:print("异常请求:%s,num = %d" % (e.args, num_f))return num_fend = datetime.datetime.now().replace(microsecond=0)print("耗时:%s" % (end - start))return -1

解密:

def aes_decode(data, key):cryptor = AES.new(key, AES.MODE_CBC, key)plain_text = cryptor.decrypt(data)return plain_text.rstrip(b'\0')

拼接:

def combine(ts_path, combine_path, file_name):boxer = get_sorted_ts(ts_path)file_list = []for ts in boxer:file_list.append(ts_path + "/" + str(ts) + '.ts')file_path = combine_path + file_name + '.ts'with open(file_path, 'wb+') as fw:for i in range(len(file_list)):try:fw.write(open(file_list[i], 'rb').read())except:print("error i = " + str(i))

结果,起飞

总结

出了一期比较无脑的逆向文章,希望给大家提供另一种思路。
如果后续有感兴趣的朋友我可以继续出一篇改机无限观看功能文章,共同学习。

某bobo在线视频APP下载暴力流逆向相关推荐

  1. 腾讯视频app下载2019_腾讯视频主设备如何设置

    很多人都使用腾讯视频,播放器家园网小编给大家分享一下腾讯视频app下载2019_腾讯视频主设备如何设置相关内容.腾讯视频的主界面资源分类最广,为用户提供最新.最热的电影.电视剧.综艺.动漫.体育等视频 ...

  2. mysql能不能存储图片_韩魔方视频app下载免费_电脑知识学习网

    直播带货的内容会让大家觉得感兴趣,这里的一些商品都会更好的推广出去.各种各样的短视频内容还是非常多样化的,直接在这里浏览相关的内容也是很方便简单的 趣缘app最为真实,安全,可靠的相亲交友平台,保证所 ...

  3. 一款在线视频 App,基于 Material Design + MVP + RxJava + Retrofit + Realm + Glide

    Ghost 项目地址:GeekGhost/Ghost 简介:一款在线视频 App,基于 Material Design + MVP + RxJava + Retrofit + Realm + Glid ...

  4. 一款纯粹的在线视频App,基于Material Design + MVP + RxJava + Retrofit + Realm

    跟大家分享一款纯粹的在线视频App,目前项目中主要使用到的技术点有: 使用RxJava配合Retrofit2做网络请求 使用RxUtil对线程操作和网络请求结果处理做了封装 使用RxPresenter ...

  5. python电脑推荐_kk视频app下载安装|腾讯视频app下载_电脑知识学习网

    视频编辑一点通app是一款好用的视频剪辑软件,视频编辑一点通app操作简单,支持多种剪辑工具,小白也能轻松使用,通过视频编辑一点通app可以轻松剪辑出有趣的视频成片. 搜索视频,并下拉短视频列表.当你 ...

  6. python 2到100的素数_po视频app下载安装|西瓜视频app下载安装_电脑知识学习网

    陈MM最近迷上某电视剧,任何相关视频都不放过.睡前用好看视频看了几个后,惊喜地发现好看读懂了她的喜好,开始推荐和该剧有关的所有视频-并且还能自动连播!看着看着,天就亮了...人生难得知己,看好看视频, ...

  7. android小视频应用程序,要的短视频app下载-要的短视频app安卓版下载v1.0.2 - 非凡软件站...

    今天小编给大家带来一款非常优质的短视频软件<要的短视频>,这款软件中有着海量的短视频资源,各个类型的短视频全都有,包括生活的方方面面,都是实时更新的,还会推送一些非常精彩的视频给你,此外软 ...

  8. 在线视频解析下载教程合集(值得收藏)

    一.工具篇 1. 今日头条.西瓜视频解析下载:http://toutiao.iiilab.com/ 2. 微博.秒拍视频解析下载:http://weibo.iiilab.com/ 3. 美拍视频解析下 ...

  9. android电视视频app下载,央视频APP智能电视版下载-央视频电视版客户端 1.9.0.53139 安卓版-玩友游戏网...

    Tags:影视娱乐 央视频电视版客户端是央视旗下权威直播工具,社会新闻.最新资讯.国际信息.前沿科技.民生工程.政策法规,你都可以在这里通过短视频查看,涵盖央视旗下多个电视台,支持多个品牌的智能电视, ...

最新文章

  1. java 短路判断_随笔 | 奇淫技巧 | Java:记 return 和短路运算符的妙用
  2. SQL Sever联接查询
  3. 正则表达式—leetcode10
  4. 首届Hadoop技术社区中国meetup来袭!对外报名正式启动!
  5. MSSQL数据库C#操作类(SQLHELPER类的修改版)
  6. 【CodeForces - 485C】Bits (二进制相关,数学,贪心)
  7. MYSQL出错代码列表大全(中文)
  8. Mongoose之 SchemaTypes 数据类型
  9. Redis缓存安装Version5.0.7
  10. kvm、qemu-kvm、ibvirt及openstack,之间的关系
  11. icmp的报文,Destination Host Unreachable
  12. Spring Cloud限流详解(内含源码)
  13. 样条曲线、样条函数、python绘画样条曲线
  14. 电子专业必懂的焊接知识与技能!
  15. Mac Mini换固态硬盘
  16. 微信 JS-SDK 说明文档
  17. Tracup丨先进的工作流程管理如何为你节省巨额花销?
  18. HTTP详解(更新完结)
  19. python fun函数、求4x4整型数组的主对角线元素的和_求一个4×4的整型二维数组主对角线元素之和...
  20. Python视觉深度学习系列教程 第一卷 第21章 案例:使用CNN破解验证码

热门文章

  1. 织梦联动枚举字段添加一级分类如果超过132个自动变成二级解决方法
  2. [渝粤教育] 重庆工商职业学院 生活中的大数据 参考 资料
  3. 区块链技术在食品行业供应链管理中的用途
  4. 抖音seo源码 短视频seo源码二次开发,怎么使用抖音seo源码,视频seo源码私有化部署?
  5. 服务器如何释放虚拟内存,服务器如何释放虚拟内存
  6. 外媒曝光:小米新奇想专利让超广角拍摄不失真
  7. 哈密顿插值c语言,哈密顿系统有限元方法的长时间性质研讨——冯康猜想的证明.pdf...
  8. 复杂大脑网络的结构和功能
  9. python用表格中的数据画柱状图_Python数据可视化:5种绘制柱状图表的方法(附源码)...
  10. matlab 控制命令,Matlab绘图基本控制命令