一、前言
本文写的目的很简单,因为微信封了抖音短视频分享功能,但是这个对于用户来说都是不好的体验,当初3Q大战,损害的是用户利益,现在也是用户最后都是最受伤的一个。而这两次都和企鹅有关。先看看企鹅为了微视封了的应用:
![](https://app.yinxiang.com/shard/s43/res/6ae31fa6-4220-4b03-83b6-62b174845b6c/1.png)
看到这是被封的名单,可以看到企鹅这一次是动真格的了,而且看到企鹅**的一面,本文不讨论企鹅和头条的任何其他关系,我们看到抖音是如何做这种提示:
![](https://app.yinxiang.com/shard/s43/res/1fbc13ba-9299-4059-b35c-b786bbd2ff25/2.png)
这种举措其实对于用户来说体验很差,当用户点击去上传其实只是打开微信而已,但是对于用户来说就是想分享一下这个视频而已,所以从这里看到损坏的还是用户的利益。那么说了这么多,我们现在要做的就是不要弹出这个框,并且直接跳转到微信分享页面即可。
二、逆向分析
这里我们在之前的一篇文章已经介绍了:抖音短视频去除水印问题分析;我们知道抖音会把当前视频下载到本地,然后在弹出这个分享对话框,让用户选择本地视频进行下载的流程。那么我们的思路其实很简单,只要拦截到他分享下载视频完成之后的时机,然后我们直接把本地视频启动微信分享即可。而对于微信直接分享本地视频这个之前已经介绍很多次了,微信分享本地短视频的页面可以用 adb shell dumpsys activity top 命令获取:
![](https://app.yinxiang.com/shard/s43/res/bc3921d9-061d-4d99-968c-69f0a88d6fed/3.png)
然后我们可以拦截这个页面启动,把这个页面的需要的Intent中的参数全部打印出来:
![](https://app.yinxiang.com/shard/s43/res/8ee9dad5-c4ff-42eb-9fb3-cd33c49aa035/4.png)
运行之后看看打印的结果:
![](https://app.yinxiang.com/shard/s43/res/f723660a-8d51-4eb3-b4bd-2f9e4e3af653/5.png)
这里有几个重要的参数:
Ksnsupload_type=14:固定值表示分享的是短视频类型
sight_md5:短视频文件的MD5值
KSightPath:短视频本地路径
KSightThumbPath:短视频的封面图
从这里看到,如果我们有了短视频地址,那么可以自己写代码生成封面图,计算MD5值的,这样需要的参数就都有了,那么接下来我们先看看如何获取抖音分享下载的视频地址,这个很简单,通过UI分析工具获取对话框弹出的位置:
![](https://app.yinxiang.com/shard/s43/res/5cd4a03e-13e3-4c44-a112-9a57bbf17826/6.png)
然后去反编译之后的public.xml中进行查找这个id值:
![](https://app.yinxiang.com/shard/s43/res/22689495-5567-4554-85b2-dd7b6184f30d/7.png)
转化成整型值然后去Jadx中进行搜索:
![](https://app.yinxiang.com/shard/s43/res/8a1a1315-a08e-42b4-a3ea-a826327c24a8/8.png)
通过逐一分析发现是这个地方,点击进入查看:
![](https://app.yinxiang.com/shard/s43/res/8d8f8cc1-53dd-455c-9c43-4765878a3ec1/9.png)
继续点击进入查看:
![](https://app.yinxiang.com/shard/s43/res/1926dfda-fbe3-4046-86a6-d21e5d8b9757/10.png)
看到这里的确是一个对话框,但是因为抖音已经分包了,所以多个dex中打开查找这个类调用地方太麻烦,之前说过一个简单的办法就是hook方法然后打印堆栈信息跟踪会更快:
![](https://app.yinxiang.com/shard/s43/res/7a024652-367a-47b7-a9cc-71324805419e/11.png)
然后运行展示对话框看看打印日志:
![](https://app.yinxiang.com/shard/s43/res/4761fd21-884d-4c0a-8d91-f86fe1190dc3/12.png)
通过堆栈信息找到最顶端的方法:
![](https://app.yinxiang.com/shard/s43/res/be0dcf69-948b-4c1c-94a3-27733ef69872/13.png)
然后我们就在这个类中发现了这些信息:
![](https://app.yinxiang.com/shard/s43/res/4843a65c-6129-49b6-9011-360bc761c8d5/14.png)
的确是这个目录,但是这里的文件名却不固定,所以我们要想得到这个视频的具体全路径,需要获取到文件的名字,继续看上面那个类代码:
![](https://app.yinxiang.com/shard/s43/res/6e362170-ce31-4e08-94e8-7879240b74fa/15.png)
这里有一个方法可以获取mp4前面的文件名信息,我们hook这个方法看看打印值:
![](https://app.yinxiang.com/shard/s43/res/c6b67e2c-5cf3-488b-91a2-ec2f2ba90c81/16.png)
运行看看日志:
![](https://app.yinxiang.com/shard/s43/res/ce2c7872-fa5b-463f-b17b-f6476fc86336/17.png)
这个方法可能执行多次,我们只需要保存最后一条信息:
![](https://app.yinxiang.com/shard/s43/res/1cc1db25-eaa4-4d66-b6fb-cff355722e72/18.png)
这个文件名的确是这个,所以我们有了文件名和固定路径,这样本地视频的全路径就有了,接下来就需要得到抖音展示对话框位置,而且需要把对话框干掉不展示了,这个直接用Xposed的替换方法代码即可:
![](https://app.yinxiang.com/shard/s43/res/2f0940f9-3750-4de6-89ba-71c59a71def4/19.png)
把当前保存的短视频路径通过Intent传递给微信,这里记住不要用static变量来保存,因为这里是从抖音进程中到微信进程,变量是不能跨进程访问的,最方便的就是通过Intent进行传递最好,这里为什么要启动微信首页而不是分享页面呢?因为微信为了安全把分享页面SnsUploadUI设置成export=false了,外界应用无法直接启动。所以需要通过首页启动来中转即可:
![](https://app.yinxiang.com/shard/s43/res/ad6cbffe-a4ca-4bdf-85a9-825fde98db13/20.png)
然后在拦截微信的启动页面,判断是否有抖音短视频路径值,如果有就获取判断文件是否存在,获取视频的封面图等,最后直接在微信中启动分享页面即可:
![](https://app.yinxiang.com/shard/s43/res/4d2986b1-6eab-41ab-9de9-c66affc94259/21.png)
为了更好的体验,微信分享界面的文本框中可以自动填充我们想要的内容信息,可以用反射修改分享页面:
![](https://app.yinxiang.com/shard/s43/res/99dfa920-9a77-437d-9f04-a6c0b9039d9e/22.png)
这个所有的工作都做完了,我们就可以走一遍了:
![](https://app.yinxiang.com/shard/s43/res/47d3be62-8b70-449e-ada8-3095b3a1ae0f/23.gif)
看到了,这里从抖音点击分享按钮之后一气呵成,直接到微信朋友圈,其实最好一点是都不用微信用户自己点击发表,而是自动发表,这个留给感兴趣的同学自己操作吧。到这里我们就把抖音短视频不能分享到朋友圈的问题解决了,这样的使用就会方便多了,而且抖音视频有水印其实,不过这个结合之前的文章可以把水印去掉的。这样就一步到位,发表视频到朋友圈装逼啦。
本文的目的只有一个就是学习逆向分析技巧,如果有人利用本文技术进行非法操作带来的后果都是操作者自己承担,和本文以及本文作者没有任何关系,本文涉及到的代码项目可以去编码美丽小密圈自取,欢迎加入小密圈一起学习探讨技术
![](https://app.yinxiang.com/shard/s43/res/89a33436-e6cd-4888-8663-f454118044ac/xiaomiquan.png)
三、总结
本文其实没有什么新的知识点,都是以往的跟踪代码技术,以及微信和抖音的逆向技巧,只是这一次把抖音和微信都搞了一下,方便自己使用,不过从微信分享封闭策略来看,的确和以往相比抖音的导量受到一定影响,但是从封闭开始,抖音的数据不降反而上升,其实可以看到抖音不在依赖微信这一个传播路径了,或者说之前抖音的导量渠道中微信获取没起到很大作用,但是不管怎么样,不要损害用户的利用。
《Android应用安全防护和逆向分析》
点击立即购买:京东 天猫
![](https://app.yinxiang.com/shard/s43/res/9f47715c-0ff5-4c35-8a1b-601add068434/book.png)
![](https://app.yinxiang.com/shard/s43/res/974faab0-7538-4be3-84f8-0805edc78531.gif)
更多内容:点击这里
![](https://app.yinxiang.com/shard/s43/res/15eada2f-3ee6-4919-afac-c83cca1704a5/qrcode.jpeg)