对于我来说 基本上一个版本如果好好的 我会用到烂为止都不会去更新。
再则只要不影响使用 我不会去优化到极致,除非我走心了。
所以今天的教学就以懒人的方式展示吧。自从习惯了mt,已经很久没用电脑进行反编译了。可是很多时候手机无法胜任,又不想用电脑,所以只好琢磨一些懒人的姿势。
今天要演示的软件是一款看剧app 【阿哥美剧】
这款软件有梆梆加固(网上脱壳教程很多) 这里不演示。
封包数据经过加密(破解过程无需对数据算法进行分析) 这里也不演示。
软件有不少广告(去除广告的方式也就那样) 这里也还是不演示。
此软件有会员制,看剧需要开通会员(搜索isvip赋值的事情) 这里依然也不演示。
当上面步骤都处理完成之后,却发现高清影片无法观看,看来仅仅本地赋值vip会员并不能破解高清影片呀。
所以今天要讲解的就是这里 把高清影片给弄出来。
首先先简单说明软件的功能,此app有2种影片模式,480p和1080p(会员),当完成赋值isvip后,480p影片是可以正常播放的,但1080p却显示如下。
Screenshot_2023-02-18-00-09-27-24_023708f0b270306506eeca974723d166.jpg (27.46 KB, 下载次数: 0)
下载附件
2023-2-18 12:58 上传
从过往的破解经验中可以知道,肯定不是本地破解的问题了,所以猜测了软件有联网验证,当服务器判断为真实vip会员的时候,会返回高清影片数据,当不是真实会员的时候,就无法获取到影片数据而导致软件无法正常播放。
所以这时候就需要进行抓包把数据拦截下来看看,可是如下图所示,数据都被加密了。
-68a3b96931315675.jpg (32.35 KB, 下载次数: 0)
下载附件
2023-2-18 12:57 上传
从正常的逻辑上来说数据之间的调用食需要先进行解密后才能进行解析。然而我们需要的是解密后的明文已查看数据内容,并不需要加解密的过程。所以只需要把明文打印出来即可。从上图重可以知道加密数据的键名是encrypt_data,所以只需要搜索这键名即可定位到算法部分。
Screenshot_2023-02-18-00-23-39-48_9e8df3d0c7c1f50248b6ee043a653d26.jpg (50.93 KB, 下载次数: 0)
下载附件
2023-2-18 12:58 上传
得出结果有3个,经过阅读代码定位到第三个类
然后只需要把p1明文打印出来即可
Screenshot_2023-02-18-00-25-04-03_9e8df3d0c7c1f50248b6ee043a653d26.jpg (91.31 KB, 下载次数: 0)
下载附件
2023-2-18 12:58 上传
Screenshot_2023-02-18-00-26-33-14_9e8df3d0c7c1f50248b6ee043a653d26.jpg (171.42 KB, 下载次数: 0)
下载附件
2023-2-18 12:58 上传
这里使用mt的注入日志功能对此类的字符串进行打印。
Screenshot_2023-02-18-00-29-37-69_9e8df3d0c7c1f50248b6ee043a653d26.jpg (77.08 KB, 下载次数: 0)
下载附件
2023-2-18 12:58 上传
Screenshot_2023-02-18-00-29-13-41_9e8df3d0c7c1f50248b6ee043a653d26.jpg (184.42 KB, 下载次数: 0)
下载附件
2023-2-18 12:58 上传
这里选择播放扑克脸,这时候就可以到日志目录查看明文内容。由于输出日志繁多,我们需要进行搜索关键词进行定位,数据内容里的中文字会以Unicode方式展示,所以需要将扑克脸转成unicode内容以进行定位日志的位置
Screenshot_2023-02-18-00-37-20-27_023708f0b270306506eeca974723d166.jpg (45.95 KB, 下载次数: 0)
下载附件
2023-2-18 12:58 上传
Screenshot_2023-02-18-00-42-16-61_21da60175e70af211acc4f26191b7a77.jpg (48.09 KB, 下载次数: 0)
下载附件
2023-2-18 12:58 上传
IMG_20230218_014239.jpg (404.71 KB, 下载次数: 0)
下载附件
2023-2-18 12:57 上传
现在已经找到我们需要的内容了,现在把unicode内容转成中文吧。
绿线= 480p的影片数据
红线= 1080p的影片数据
(这里可以看到1080p的影片是没有数据返回的 这就是为何播放失败的原因)
蓝线= 可以看到480p和1080p的影片链接不一样的只是480和1080,说明我们可以自行将1080p影片地址补全。
Screenshot_2023-02-18-00-47-15-57_9e8df3d0c7c1f50248b6ee043a653d26.jpg (362.26 KB, 下载次数: 0)
下载附件
2023-2-18 12:58 上传
那怎么补呢? 我们先来看看影片数据的赋值逻辑。
图中可以看到影片地址是在playpath的列表里,影片链接的键名是path和screen_path
(path是影片播放地址,screen_path是投屏播放地址)
同时我们也可以看到无论是480p或1080p的键名都一样是path,说明path这参数会被多次调用。
Screenshot_2023-02-18-00-52-38-56_9e8df3d0c7c1f50248b6ee043a653d26.jpg (77.73 KB, 下载次数: 0)
下载附件
2023-2-18 12:58 上传
我们先来在dex定位一下吧。就搜索screen_path吧(避免普遍的单词重复影响搜索结果)
Screenshot_2023-02-18-01-00-32-46_9e8df3d0c7c1f50248b6ee043a653d26.jpg (39.94 KB, 下载次数: 0)
下载附件
2023-2-18 12:58 上传
可以看到代码是直接获取path的内容。
Screenshot_2023-02-18-01-00-51-36_9e8df3d0c7c1f50248b6ee043a653d26.jpg (57.26 KB, 下载次数: 0)
下载附件
2023-2-18 12:58 上传
现在基本分析完毕了,可以进行破解思路整理了。所以这里先把逻辑理一遍。
从以上分析 可以得知
1. 1080p地址需要联网验证获取。
2. 480p和1080p都在playpath列表里分别被调用。
3.480p和1080p会共同使用path参数。
4. 480p和1080p的链接不一样的内容仅仅只是画质的数字。
5. 数据返回结果为480p有内容 1080p无内容。
现在可以按分析逻辑去将1080p数据补全了。
1.当480p影片调用path的时候 是有数据的,但非会员1080p调用path是五数据的。所以我们可以写一个判断,判断path是否没数据,当没数据的时候就可以知道是1080p影片了。
在java里 判断是否为空内容用到empty,由于我懒不想用电脑写后转smali语法,所以我们可以直接取现成的smali代码,在软件里搜索empty试试吧
Screenshot_2023-02-18-01-15-00-60_9e8df3d0c7c1f50248b6ee043a653d26.jpg (181.96 KB, 下载次数: 0)
下载附件
2023-2-18 12:58 上传
很快就得到了好多结果,随便选一个吧 然后把这几条代码复制起来粘贴到path里。
Screenshot_2023-02-18-01-16-02-14_9e8df3d0c7c1f50248b6ee043a653d26.jpg (22.12 KB, 下载次数: 0)
下载附件
2023-2-18 12:58 上传
Screenshot_2023-02-18-01-28-05-03_9e8df3d0c7c1f50248b6ee043a653d26.jpg (70.44 KB, 下载次数: 0)
下载附件
2023-2-18 12:57 上传
2.480p和1080p的链接不一样的只是画质的数字,但是1080p是无网络返回数据的,所以我们得把480p的数据用到1080p里 就得把480p的地址留起来。
Screenshot_2023-02-18-01-27-13-93_9e8df3d0c7c1f50248b6ee043a653d26.jpg (69.64 KB, 下载次数: 0)
下载附件
2023-2-18 12:57 上传
Screenshot_2023-02-18-01-29-48-38_9e8df3d0c7c1f50248b6ee043a653d26.jpg (84.36 KB, 下载次数: 0)
下载附件
2023-2-18 12:57 上传
3.接下来就要用到1080p的数据里了,继续看图吧。
Screenshot_2023-02-18-01-36-59-39_9e8df3d0c7c1f50248b6ee043a653d26.jpg (138.59 KB, 下载次数: 0)
下载附件
2023-2-18 12:57 上传
好了,完成了,进行测试吧,可以看见正常播放了。
Screenshot_2023-02-18-01-38-26-27_023708f0b270306506eeca974723d166.jpg (106.68 KB, 下载次数: 0)
下载附件
2023-2-18 12:57 上传
今天的教学到这里,懒人技巧学会了吗?
那剩下得screen_path就让你们自己处理了