Android逆向之旅-爆破开启快手App的长视频拍摄权限功能

1、功能说明

​ 在前几天有人问我快手发布了内侧发布长视频的功能,他找快手小助手申请了但是没有回复,所以我就有空通过代码层面让他有这个功能看看效果如何,这个其实网上已经有很多人在说这个功能了,我们百度一下就找到了这张演示图:

这个也是需要去快手官方申请权限的,这里看到如果要是成功了,在视频裁剪页面会有一个发布完整视频的按钮,所以我们通过这个入口操作接口。

2、逆向分析

当然这里有很多方式操作,可以apktool反编译通过这个文案找到入口,也可以通过ui工具获取当前页面的控件资源id信息作为入口,当然我们选择比较简单的直接获取当前页面的activity方式操作:

我们进入这个页面之后直接运行命令:adb shell dumpsys activity top

反编译之后的代码中全局搜索这个类:find . |xargs grep -ri “MixImporterActivity”

看到在第六个dex中,直接用jadx打开这个dex即可:

继续查看代码:

查看Fragment的代码:

看到快手用到的是MVP模式操作,直接看到有个长视频功能的:

看到有个按钮但是有个判断会把他设置不可见,那么直接看这个判断方法:

看到这里有很多个条件判断,第一个是判断进入的intent中的这个字段是否为true,不过这个默认值就是true,然后就是第二个方法了,全局搜索这个方法,在第5个dex中找到代码:

看到这里会读取一个字段值,继续看:

到这里看到这个应该是个服务端下发的开关,而这个应该是有ABTest操作,关于ABTest功能都是很多公司采用的操作,就是AB实验,有两个结果然后通过这两个结果观察数据对比,哪个值会更有正向的结果,比如这个开关开的话会增加投稿率?还是关闭会增加投稿率呢?不过看了这么多我们可以直接hook上面的方法即可:

运行之后发现不可思议的事情了,没有任何日志信息,期初肯定认为是hook代码写的问题,不过最后经过检查直接hook当前页面的Activity的方法也是无效,所以到这里可以很肯定内部做了防Xposed的操作,其实现在越来越多的公司会对自己的应用做一些防护了,关于如何干掉这个防护下篇文章会介绍,那么到这里有两条路可以走,第一个是基于abtest抓包然后map local操作把开关打开,关于map local操作不了解的同学可以去网上搜一下Charles的map local操作设置,就是把网络返回值改一下,操作很简单,这里不介绍了,还有一种方式就是利用其它hook工具继续拦截操作

3、Hook开启功能

当然到这里作为良心公众号,这两种方式我都会做,因为结果不重要,重要的是享受这个过程,首先看看怎么hook呢?他都做了防护操作,不过可惜的是他防护只对Xposed,而其他的hook工具并没有,因为我直接用了更好用的Frida工具直接操作:

1.运行设备的frida-server

2.转发端口号

3.运行脚本

​ 看到可以hook操作了,所以不知道为何他都对Xposed防护了,却没有对frida进行防护,其实想想可以明白,在之前的frida文章介绍中:Hook新工具Frida用法详解 中介绍了关于Xposed和Frida的区别,对于快手这样的应用,其他他的防护目的很简单就是防止你写插件进行一些违规操作,但是Frida是基于PC端操作的工具,而Xposed是可以安装到设备中随手可以操作所以从危险性和操作便捷上来说Xposed更危险,而Frida的操作成本更大。hook之后我们直接把方法返回值设置成false即可:

好了,我们到这里就有了长视频权限,其他也就是最多上传10分钟的功能,不过到这里还没结束,因为还有第二种方式操作,就是通过抓包替换服务端返回的数据进行操作

4、抓包开启功能

因为之前分析代码看到他的这个功能有一个类似于abtest开关的操作,所以我们通过抓包过滤abtest字样:

通过抓包看到这个字段值是0,表示关闭这个功能,我们把这个返回内容保存一下,然后把值修改成1即可:

然后在抓包看看效果:

服务端的值已经修改成功了,可以看一下效果也是可以出来长视频功能的,当然我们发现这里还有一个字段:

看到了这个是iOS的开关字段,不过好奇为啥Android和iOS的字段要用两个,我们可以把iOS抓包替换,然后也可以体验效果。所以看到我们通过分析代码发现有服务端下发字段开关,这样通过map local操作会更加方便。

5、总结

1、关于找到应用破解入口我们有无数种方法,抓包、获取资源id、文案信息、当前页面信息等都是可以的

2、现在很多应用对Xposed做了防护操作,不过hook工具不只是这一个,我们可以用Frida,当然还有其他的工具

3、现在很多公司都有ABTest开关下发操作,我们如果能够快速找到这个字段可以两端都可以查看效果,都不需要进行hook操作了。

6、参考链接

文章转载自微信公众号: https://mp.weixin.qq.com/s/4gjHJSO2Yv-CH-jlP4zQDg

作者: 尼古拉斯.赵四