只分享技术,不分享成品!
只分享技术,不分享成品!
一、抓包分析
首先打开抓包工具、软件,抓取访问数据库的url。我这里是在真机中安装vmos虚拟机,然后用真机上的HttpCanary抓虚拟中某碰视频App的包。你可以用pc抓手机/虚拟机的包,都是一样的。
iShot2020-05-2122.06.33.png (198.42 KB, 下载次数: 3)
2020-5-21 22:06 上传
iShot2020-05-2122.02.31.png (268.79 KB, 下载次数: 5)
2020-5-21 22:02 上传
iShot2020-05-2122.11.16.png (130.62 KB, 下载次数: 3)
2020-5-21 22:11 上传
iShot2020-05-2122.13.00.png (114.57 KB, 下载次数: 3)
2020-5-21 22:13 上传
1、请求某优的视频抓到的包
iShot2020-05-2122.14.05.png (83.7 KB, 下载次数: 5)
2020-5-21 22:15 上传
iShot2020-05-2122.17.15.png (122.31 KB, 下载次数: 5)
2020-5-21 22:17 上传
iShot2020-05-2122.15.33.png (87.95 KB, 下载次数: 4)
2020-5-21 22:17 上传
用Postman工具测试一下抓到的url,是否能够正确访问。
iShot2020-05-2122.26.03.png (109.26 KB, 下载次数: 4)
2020-5-21 22:26 上传
2、请求所有视频抓到的包
iShot2020-05-2122.19.50.png (90.98 KB, 下载次数: 5)
2020-5-21 22:21 上传
iShot2020-05-2122.20.28.png (157.28 KB, 下载次数: 2)
2020-5-21 22:21 上传
iShot2020-05-2122.20.53.png (168.35 KB, 下载次数: 3)
2020-5-21 22:21 上传
用Postman工具测试一下抓到的url,是否能够正确访问。
iShot2020-05-2122.28.50.png (123.42 KB, 下载次数: 2)
2020-5-21 22:28 上传
二、脱壳、反编译使用Xposed+反射大师脱某60的壳,我这里是在虚拟中配置的环境,如果是真机,还需要root。
1、打开反射大师
iShot2020-05-2122.37.00.png (38.26 KB, 下载次数: 4)
2020-5-21 22:50 上传
iShot2020-05-2122.38.53.png (76.91 KB, 下载次数: 5)
2020-5-21 22:50 上传
iShot2020-05-2122.39.21.png (57.32 KB, 下载次数: 4)
2020-5-21 22:50 上传
iShot2020-05-2122.40.06.png (63.24 KB, 下载次数: 4)
2020-5-21 22:50 上传
iShot2020-05-2123.12.32.png (74.62 KB, 下载次数: 3)
2020-5-21 23:12 上传
2、用反射大师脱出dex文件
iShot2020-05-2122.42.28.png (123.66 KB, 下载次数: 8)
2020-5-21 22:51 上传
iShot2020-05-2122.43.09.png (101.64 KB, 下载次数: 3)
2020-5-21 22:51 上传
iShot2020-05-2122.44.54.png (101.35 KB, 下载次数: 3)
2020-5-21 22:52 上传
iShot2020-05-2122.45.59.png (62.5 KB, 下载次数: 4)
2020-5-21 22:53 上传
iShot2020-05-2122.46.34.png (84.84 KB, 下载次数: 2)
2020-5-21 22:53 上传
iShot2020-05-2122.48.51.png (87.2 KB, 下载次数: 1)
2020-5-21 22:53 上传
3、反编译得到的dex文件
iShot2020-05-2122.59.01.png (54.61 KB, 下载次数: 3)
2020-5-21 23:00 上传
iShot2020-05-2216.40.25.png (71.12 KB, 下载次数: 3)
2020-5-22 16:43 上传
iShot2020-05-2123.01.59.png (62.26 KB, 下载次数: 2)
2020-5-21 23:02 上传
三、请求参数逆向分析
1、分析请求某优的视频的url参数构造
iShot2020-05-2123.23.01.png (45.6 KB, 下载次数: 5)
2020-5-21 23:25 上传
iShot2020-05-2123.22.39.png (173.99 KB, 下载次数: 2)
2020-5-21 23:25 上传
iShot2020-05-2123.23.56.png (137.84 KB, 下载次数: 5)
2020-5-21 23:26 上传分析请求头参数d的加密方式
iShot2020-05-2123.28.59.png (156.19 KB, 下载次数: 5)
2020-5-21 23:30 上传
iShot2020-05-2123.29.41.png (169.5 KB, 下载次数: 5)
2020-5-21 23:30 上传
iShot2020-05-2123.32.18.png (149.67 KB, 下载次数: 2)
2020-5-21 23:35 上传
iShot2020-05-2123.35.39.png (154.18 KB, 下载次数: 4)
2020-5-21 23:36 上传
现在我们跳到AES.encryptToBase64声明处,看加密方式
iShot2020-05-2123.38.03.png (126.68 KB, 下载次数: 5)
2020-5-21 23:41 上传
iShot2020-05-2123.39.06.png (112.26 KB, 下载次数: 2)
2020-5-21 23:41 上传
iShot2020-05-2123.39.51.png (65.43 KB, 下载次数: 3)
2020-5-21 23:41 上传
现在已经知道加密方式是AES/CBC/PKCS5Padding,但是我们还不知道加密秘钥、偏移量,回到此图
我们分别跳到EncryptUtils.getUmeng_kv()与EncryptUtils.getUmeng_iv()的声明,看看到底是什么字符串
iShot2020-05-2123.45.58.png (55.22 KB, 下载次数: 3)
2020-5-21 23:45 上传
这里需要反汇编so文件,暂且不提,先告诉大家我反汇编得到的结果加密秘钥 xPxo2S5uGPhKHx5g加密偏移量 0a1b2c3d4e5f6789现在我们拿着这个秘钥、偏移量去解密某优的视频的请求头中的参数d
iShot2020-05-2123.50.14.png (112.21 KB, 下载次数: 5)
2020-5-21 23:52 上传
iShot2020-05-2123.51.42.png (122.03 KB, 下载次数: 6)
2020-5-21 23:52 上传
[C] 纯文本查看 复制代码[/font][/align][align=left]
[font=-apple-system, BlinkMacSystemFont, "]解密结果[/font][/align][align=left]
[font=-apple-system, BlinkMacSystemFont, "]{"Connection":"close","app":"22","platform":"1","s":"ccb55292556c0f435c7aed54df225215","t":"78406572844305","token":"dmwyUFdwZzltVkk4dStaS1IyeTNZNGlleGp3aldHejZ5ei96V1pselRBRm9MVTNCYzQxSzNvWHc1ZUptZ3A0WWt3RzdzQ09nVlRUeUVQcDZQMUhjcWNuSWVxRXFiaWRkOWYyMGhkb085ZlUzbm9BUzljVkFEcWQxN0ZyM3hteEs=","version":"1.2.0","versionapi":"1.5.0"}秘钥、偏移量去解密某优的视频的请求响应
iShot2020-05-2123.54.45.png (101.66 KB, 下载次数: 4)
2020-5-21 23:56 上传
iShot2020-05-2123.56.44.png (116.5 KB, 下载次数: 4)
2020-5-21 23:56 上传
现在我们已经知道了解密的套路,其实经过测试,请求头中的参数d是不需要修改的,只需要修改请求的url
iShot2020-05-2200.00.18.png (138.06 KB, 下载次数: 3)
2020-5-22 00:00 上传总结一下:请求某优的作品列表url格式为http://www.xxxx.com/api/girls/videos/优id/页码 (比如某多野的id为1463,请求她的作品第三页链接为http://www.xxxx.com/api/girls/videos/1463/3),并且请求头中参数d不需要修改,一直使用第一次抓到的请求头即可。
2、请求所有视频参数分析
iShot2020-05-2208.53.10.png (149.94 KB, 下载次数: 4)
2020-5-22 08:53 上传
我们把url中的参数d提出来,
[C] 纯文本查看 复制代码pSr5p6QhATCH%2F....5W0VrA%3D%3D
看到%3D这种字符,盲猜是进行了url编码,先对其进行url解码得到
iShot2020-05-2208.57.19.png (90.39 KB, 下载次数: 5)
2020-5-22 09:00 上传
iShot2020-05-2209.00.06.png (83.76 KB, 下载次数: 4)
2020-5-22 09:01 上传
[C] 纯文本查看 复制代码[/font][/align][align=left]
[font=-apple-system, BlinkMacSystemFont, "]解密得到的结果[/font][/align][align=left]
[font=-apple-system, BlinkMacSystemFont, "]{"method":"views","order":"desc","s":"f55f22f136448d847f0a0824cabbf8b4","step":"1","t":"92752815308885"}[/font][/align][align=left]
[font=-apple-system, BlinkMacSystemFont, "]method、order的作用是根据观看量降序排列[/font][/align][align=left]
[font=-apple-system, BlinkMacSystemFont, "]step的作用是请求列表的第几页[/font][/align][align=left]
[font=-apple-system, BlinkMacSystemFont, "]t表示的是时间戳[/font][/align][align=left]
[font=-apple-system, BlinkMacSystemFont, "]s表示的其他参数md5值[/font][/align][align=left]
[font=-apple-system, BlinkMacSystemFont, "]
现在我们只要改变step的值,再进行AES加密、url编码,就可以访问到所有视频url
但是,注意这里s参数,有点特殊,我们先看请求头中校验参数s的来源
iShot2020-05-2209.13.30.png (164.56 KB, 下载次数: 5)
2020-5-22 09:13 上传那我们类推一下,在校验url中的参数s时,也引入了参数k,并且最后删除了参数k
iShot2020-05-2209.24.51.png (200.56 KB, 下载次数: 5)
2020-5-22 09:25 上传
总结:修改http://www.xxx.com/api/query/getQuery?d=pSr5p6...%2FyWIAPT05W0VrA%3D%3D中的参数d即可得到所有视频的url,其中参数d的拼接过程在上面已经介绍过了。(注意在两种请求方式中,请求头都不需要修改,每次需要修改url即可)3、根据视频id请求视频m3u8链接
iShot2020-05-2209.38.02.png (223.29 KB, 下载次数: 4)
2020-5-22 09:38 上传
iShot2020-05-2209.32.42.png (145.29 KB, 下载次数: 4)
2020-5-22 09:38 上传
iShot2020-05-2209.42.46.png (139.7 KB, 下载次数: 5)
2020-5-22 09:46 上传
iShot2020-05-2209.48.00.png (108.13 KB, 下载次数: 4)
2020-5-22 09:48 上传
iShot2020-05-2209.45.49.png (110.73 KB, 下载次数: 4)
2020-5-22 09:48 上传
iShot2020-05-2209.52.29.png (44.43 KB, 下载次数: 2)
2020-5-22 09:52 上传
总结:根据http://www.xxx.com/api/video/play/视频id请求视频的m3u8链接,请求头用前面的即可,无需修改
四、so文件反汇编
最后一步了,我们把刚刚遇到的两个加载so文件的类拎出来。
iShot 2020-05-22 10.17.21.png (63.69 KB, 下载次数: 3)
2020-5-22 10:19 上传
iShot 2020-05-22 10.19.56.png (66.38 KB, 下载次数: 3)
2020-5-22 10:20 上传
用解压缩工具打开某碰视频的apk文件,拿到Java动态加载的两个so文件
iShot 2020-05-22 10.23.04.png (293.99 KB, 下载次数: 2)
2020-5-22 10:23 上传
1、查看libbaseEncryptLib.so文件
iShot 2020-05-22 10.25.34.png (50.85 KB, 下载次数: 3)
2020-5-22 10:39 上传
iShot 2020-05-22 10.26.51.png (118.03 KB, 下载次数: 5)
2020-5-22 10:39 上传
iShot 2020-05-22 10.27.22.png (89.41 KB, 下载次数: 6)
2020-5-22 10:39 上传
iShot 2020-05-22 10.29.53.png (293.87 KB, 下载次数: 4)
2020-5-22 10:39 上传
iShot 2020-05-22 10.31.21.png (361.07 KB, 下载次数: 3)
2020-5-22 10:39 上传
iShot 2020-05-22 10.32.31.png (220.63 KB, 下载次数: 3)
2020-5-22 10:39 上传
iShot 2020-05-22 10.33.38.png (220.2 KB, 下载次数: 4)
2020-5-22 10:39 上传
2、查看libencryptLib.so文件
iShot 2020-05-22 10.35.14.png (246.6 KB, 下载次数: 3)
2020-5-22 10:42 上传
iShot 2020-05-22 10.36.10.png (324.44 KB, 下载次数: 5)
2020-5-22 10:42 上传
iShot 2020-05-22 10.37.20.png (220.52 KB, 下载次数: 4)
2020-5-22 10:42 上传
总结:通过IDA直接查看getUmeng_iv()、getUmeng_kv()、getUmengMv()函数的结果,主要是由于三个函数都是简单的返回常量的函数,如果是加密算法等比较复杂函数的话可以用unidbg,直接调用so文件中的函数。
最后一次总结: