xposed安卓分析源码破解视频APP的原画特权
本文主要目的是交流学习Xposed的使用技巧,以及给大家分享一下分析问题的思路。
有一天在用某视频APP看视频的时候,发现“高清”的清晰度也很糊,看得脑阔痛,就想选择更高的清晰度,结果告诉我需要激活特权
。
可是要软妹币啊,本来人就穷,没办法,只有自己动手去搞一波。
因为准备使用xposed去修改代码执行逻辑,所以得需要知道原先的代码是怎样的。首先,准备好jadx用于反编译APK文件,开开心心选择安装包。结果
用了360加固,瞬间懵逼。只得google一下:https://blog.csdn.net/u014476720/article/details/83383659,一番折腾后,终于拿到了它的dex源码
现在拿到了dex源码,jadx也准备就绪,得先掐住它的七寸,知道它的关键代码在哪里。
我的方法是利用Android studio 的Layout Inspector,随便打开一个项目
这样就能知道是哪个Activity,而且在后面分析页面上的控件时用处也很大。
现在打开TVIJKPlayNewActivity:由于是多dex文件,这个Activity可能需要一个一个地用jadx反编译dex才能找到,反编译完成后通过jadx File->Save as cradle project,保存下来(我们的安装包.apk也要执行一下此操作,因为dex不包含资源文件,我们后面要使用到这些资源),后面再用Android Studio打开会方便使用。PS:后面在TVIJKPlayNewActivity查找关键方法失败了,在此记录下查找过程。
将dex反编译保存完成后,我们还需要再次jadx反编译安装包.apk,
双击resources.arsc,把里面的内容全选复制,另外保存到文本中,这里面包含了布局文件、viewId、drawable等元素的id,后面用文本编辑工具可以方便地进行查找,用id查找文件名,或用文件名查找对应的id。
现在准备工作完成,可以继续下一步。
前面说到,播放页面是在TVIJKPlayNewActivity,那么我们打开之后,又找不到从何下手,不知道如何才会触发到切换清晰度的方法。我的做法是继续Layout Inspector生成手机屏幕快照,
可以看到id/tv_projector_video_quality,那我们打开刚刚的记事本,查找tv_projector_video_quality,可以看到记录是 0x7f110355 (2131821397) = id.tv_projector_video_quality: false,括号里面的2131821397就是我们需要的真实id,
由此就能知道在这个点击事件里面有点东西
继续找到myMediaController,去寻找它的showQualityLayout()方法。从字面意思就知道,这个方法是展示清晰度的布局,继续跟进。
看到2052行的view.setVisibility(0),0是代表显示,那猜测this.llQuality就是清晰度在的地方。
找到它被初始化的地方
反推出这个控件的布局id就是2130969697
去记事本查找2130969697,找到 0x7f040461 (2130969697) = layout.player_controller_full: res/layout/player_controller_full.xml,知道它的布局文件名为player_controller_full。这个布局文件里面的mediacontroller_ll_quality就是包含清晰度的控件( 查找2131823211, 0x7f110a6b (2131823211) = id.mediacontroller_ll_quality: false)
胡乱都能猜测出mediacontroller_tv_quality_super是原画的控件。
知道是这个控件后,回到IjkMediaController,找到这个控件的点击 0x7f110a6c (2131823212) = id.mediacontroller_tv_quality_super: false,id为2131823212,
找到点击事件为qualitySuperListener,在
分析在365行,进入PlayerAction查看
,但是后面的d.b
是阿里的啥代码,反复查找都找不到相关的逻辑处理
结果都是
溜了溜了。
刚才通过播放页面去查找关键代码的方式失败,转变思维,想一想它不仅在播放的时候可以切换清晰度,在缓存的时候同样也可以切换清晰度,那么我们就从缓存去下手。
继续用屏幕快照,
打开这个Activity
总代码不到200行,分析也会方便很多。
一眼就找到关键字tv_quality:清晰度,似乎这个就是选择清晰度的控件了
映入眼帘的@BindView,这似乎是ButterKnife的风格,而且它的可见修饰符是default,那么在同级包下肯定有东西会访问到这个控件。
果不其然,有一个ViewBinder的类,继续打开往下分析:
一眼就看到了showSelectDialog()有点东西,那么继续回到DownloadDramaActivity,去寻找这个方法
继续往下
到这里就有点东西了,一看就能猜出来点击清晰度后执行的方法是boolean a(int i)。跟进SelectDialogFragment
并找到关键代码
Boolean a(int i)返回 true就切换成功,反之就切换失败,那回到showSelectQualityDialog,
看到在118行,mPresenter.a(i)还会执行操作,继续跟进。发现mPresenter被强转为b类型,那我们就还要找到这个b,
进入b类并找到a()方法
似乎b(i)返回true后,整个方法块也就返回true了,继续找到b(i)
看来还要继续往前跟进到utils.b类的e()方法
到此处似乎足够了,已经看到了原画的影子,如果继续走到d里面,那下面的f还会受到影响。先到此处不要走动。我们去写Xposed把这个方法修改一下返回值试试。
开始编写Xposed模块
由于安装包.apk是使用过360加固过的,要注意它的classLoader不能直接使用https://blog.csdn.net/qq_21051503/article/details/53870621,需要从Application中获取,我这里是通过ᵢˋ(context)方法去拿到context,再通过context.getClassLoader()取到classLoader,完整代码如下
安装到手机上,打勾生效重启手机。
发现播放可以选择原画了
从下载页去比较,
这是高清画质的文件大小
这是原画画质的文件大小
原画选择还是成功的。
xposed安卓分析源码破解视频APP的原画特权相关推荐
- TVMovie JAVA源代码1.2.4版原生安卓tv源码电视盒子APP开源全前端无后台
b站视频教程:高清版可点击进入观看>> 高清演示视频看下方: 原生安卓tv源码电视盒子app TVMovie JAVA源代码 APP开源全前端无需后台 AndroidTV.机顶盒.电影 ...
- 查看安卓APK源码破解
原文:查看安卓APK源码破解 工具准备: <1>.android4me的AXMLPrinter2工具 <2>dex2jar <3>jd-gui 工具下载:http: ...
- 安卓10源码开发定制(29)手电筒控制源码分析
一.前言 最近突发奇想,想做一个项目.将闲置手机变成可以利用的智能家居设备,比如在家里面通过手机App控制另一台手机的手电筒开和关(当做电灯泡)等等操作.先从最简单的功能开始研究,控制手电筒开始. 二 ...
- 【安卓系统源码学习之permission】 系统源代码AndroidManifest.xml分析之permission解读
上一节,我们讲到了怎么去查找安卓源码中AndroidManifest.xml文件,打开这个文件,你会发现里面有很多<permission ... />的标签,如下图所示: 这个是用来做什么 ...
- 360影视php视频系统源码,全新360影视2.0完整源码 双端APP+三级分销 附视频搭建教程...
源码资源说明: 演示环境Linux+mysql+PHP5.6+伪静态支持这个程序基本环境要求不是很大,但有的地方还是要注意一下说一下需要的东西: 1.主机 2.域名 3.源码(会给大家打包,包含前后端 ...
- 全新 安卓项目源码 校园跑腿帮APP android stu dio项目可调试 附说明文档
全新 安卓项目源码 校园跑腿帮APP android stu dio项目可调试 附说明文档,录屏 基于Bmob后端云,material design风格设计,支持登录注册,任务发布,修改,上拉加载,下 ...
- python 抓取解析接口数据_[干货]用python抓取摩拜单车API数据并做可视化分析(源码)...
原标题:[干货]用python抓取摩拜单车API数据并做可视化分析(源码) 在APP中能看到很多单车,但走到那里的时候,才发现车并不在那里.有些车不知道藏到了哪里:有些车或许是在高楼的后面,由于有GP ...
- android 自定义相机源码,Android 自定义相机及分析源码
Android 自定义相机及分析源码 使用Android 系统相机的方法: 要想让应用有相机的action,咱们就必须在清单文件中做一些声明,好让系统知道,如下 action的作用就是声明action ...
- Android自定义底部弹出窗-dialog(2种实现分析+源码)
Android自定义底部弹出窗-dialog(2种实现分析+源码) 上线项目功能抽取,在项目开发中,我们会在许多地方会用到底部自定义弹窗,比如设置:个人账户退出,切换,照片的拍照或者相册的调出,或者一 ...
最新文章
- phpStudy for Linux (lnmp+lamp一键安装包)
- c语言中count的头文件,求助C语言大佬 , 只会写到一个.c文件里 ,不会用.h头文件...
- Qt Creator管理C ++后端对象
- 智能音箱 之 麦克风参数介绍
- android中的BitMap(二)从网络和资源文件中获得一个BitMap
- 机器学习XGBoost 算法概述
- java宠物商店管理系统
- 关于在tomcat9中配置server.xml中URIEncoding=UTF-8无效的解决方法
- PID参数调节的经验
- android 倒水动画,Android 模拟圆形水杯倒水的效果
- kindle paper white部分优化
- iOS学习之路-简单汤姆猫
- oracle 删除原有的数据,oracle数据库删除数据的两种方式
- Python数据分析 2.Matplotlib绘图—常用统计图
- c语言程序设计医院就医,C语言程序设计(医院信息管理系统)附源代码[精品].doc...
- 宝塔安装nextcloud
- 256种编程语言的大清单
- java计算机毕业设计教学互动跟踪系统源码+mysql数据库+系统+lw文档+部署
- 排查链接是否失效_锅炉主保护系统隐患排查与治理
- 读书笔记-别说你懂写网文