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

Android技术篇 尼古拉斯.赵四 1062℃

一、功能说明

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

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

 

二、逆向分析

当然这里有很多方式操作,可以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工具继续拦截操作。

 

三、Hook开启功能

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

第一步:运行设备的frida-server

第二步:转发端口号

第三步:运行脚本

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

           

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

 

四、抓包开启功能

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

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

然后在抓包看看效果:

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

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

 

本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去编码美丽小密圈自取,欢迎加入小密圈一起学习探讨技术

 

五、总结

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

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

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

当然本文里面说到的防止Xposed的功能下一篇文章我们把它干掉,本来不防护还没这个好奇心,但是既然做了防护,我们就有义务去研究一下。欢迎点赞转发哈。

 

《Android应用安全防护和逆向分析》

点击立即购买:京东  天猫  

更多内容:点击这里

关注微信公众号,最新技术干货实时推送

转载请注明:尼古拉斯.赵四 » Android逆向之旅—破解开启快手App的长视频拍摄权限功能

喜欢 (8)or分享 (0)