查看原文
其他

Frida实战:一次违法应用的破解尝试

Avaccivv 看雪学苑 2022-07-01
看雪论坛作者ID:Avacci


目标:破解fulao的vip(任意一个功能均可)

VIP功能很多,先尝试改清晰度:

用apktool反编译项目后,在工程中搜索“标清”,发现资源字符串中“高清”对应的标识。
再继续搜索其资源id:

最后定位到该资源在代码中用到的位置。

第一处是com.ilulutv.fulao2.film.l类的d1方法,到jdax中看java代码。
这里可以看到如果com.ilulutv.fulao2.other.f.g.j0()返回的是480就会显示为“高清”,不然就是“标清”。
这个j0方法是从SharedPreference中读取保存的quality的值,默认为240。通过名字也就可以知道这是记录使用的清晰度的字段。

那么直接hook这个方法让其返回480应该就可以了。
另外两处,也大致看了下,一处应该跟弹出的选择清晰度的对话框有关。
还有一处应该是切换清晰度时调用的方法。

感觉都用不上,就先hook下j0试试:

Hook上后,文本确实变成了高清,旁边的图标没变,等会儿再处理。
 先看下视频请求参数,发现其中的清晰度也改了:

再搞下图标。用uiautomator查看下图标对应的id:

在com.ilulutv.fualo2.film.l类中定位到使用之处,这里存为了ImageView对象z0。

z0在这个类中的使用都集中在一个方法中:根据图标资源命名可以判断传入参数z为是否是vip,i2为清晰度,那么简单的hook这个方法,至少在图标显示上可以达到vip的高清效果。
但是现在还是无法选择清晰度,估计还是因为进到这个Activity的时候就被判定为没有vip。

毕竟前面hook的a方法传入的判断是否为vip的参数z就是false。
看看a方法从哪里调用:

s方法调用了3次,去看一下:

S方法传入的参数z明显还是用来判断vip的。
 
而且如果z为true,走的分支里直接会根据前面hook过的j0方法判断清晰度来决定显示的图标。还会点亮其他图标,虽然没什么用。
那么归根结底,这个判断vip的标识是怎么来的呢,往前回溯s方法的调用,只有一处:
可见是由com.ilulutv.fulao2.other.f.h.c方法得到的:

这个类本身名字就很激动人心,似乎包含了判断VIP的很多方法。

这个当前用到的c方法是判断SharedPreference里存的vip的值是否为true,以及vip是否已经过期。

这里hook c方法,让其返回true,再hook a 方法,改下vip过期时间。顺便把d方法也改了,因为也是类似的判断。

结果却不让用了:

发现是视频请求中出现了验证错误,这就应该时服务器端做的验证了。

可能这就是暂时的极限了,其实还做了不少研究,比如下载到缓存和切换线路,但都不顺利,就没有记录过程。
 
如果有时间再继续研究。



 


看雪ID:Avacci

https://bbs.pediy.com/user-home-879855.htm

  *本文由看雪论坛 Avacci 原创,转载请注明来自看雪社区






# 往期推荐





公众号ID:ikanxue
官方微博:看雪安全
商务合作:wsc@kanxue.com



球分享

球点赞

球在看



点击“阅读原文”,了解更多!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存