Pixiv Android 客户端 5.0.99 去广告(伪会员)
翻了翻论坛,一直都是有人转载,并没有人说说是如何破解。那我这个吾爱破解的新成员就来说说是如何破解的。
工具:
apktool
初学者建议:
dex2jar 用于把DEX转换成JAR
jd-gui 用于反编译Java Class,不过更推荐使用JetBrains FernFlower,效果好
先使用 apktool 反编译整个 apk(可以在网上下到)
得到这样的目录结构
使用编辑器打开(这里使用 Visual Studio Code,并安装了smali插件)
用过Pixiv客户端的都知道,侧边栏里面有个premium的标志,那我们就试着搜索 premium的函数
从API那边发现确实没有混淆这一块,可能是引出太多了,再缩小范围搜索 isPremium 的函数
打开多个文件发现都指向/调用 jp.pxv.android.account.b 这个类
于是打开该文件
原文件名 "PixivAccountManager.java" 稳了
发现是否premium存在本地变量 j 中
程序中大量都和这个j有关
于是搜索改变这个变量的调用
找到了,还是在b中,那个m中的永远都是赋值true,不管
第一处赋值,是在构造函数中,不管
第二处实际上也是构造函数调用的,不管
第三处可以看见参数是
.method public final a(Ljava/lang/String;Ljava/lang/String;Ljp/pxv/android/response/PixivOAuthResponse;)V
可以知道是OAuth的回调,这就是我们要找的地方
iget-boolean就是从OAuthUser中取出结果,直接在下面加上 const/4 v1, 0x1 意思是赋值true
保存,编译,签名,大功告成。
有机会再讲讲如何显示登录失败的详细信息(SSL签名错误,无法访问API服务器,用户名/密码错误,网络未连接等等都能提示出来)。
qazwsxlty 发表于 2018-11-17 15:34
成功,不过这个会员只能用于去广告,历史记录好像也能看,按热门度排序是不行的(显示最新顺序)。
热门排序是服务端鉴权的,本地再怎么改都没用
PeratX 发表于 2018-11-24 11:16
修改布局文件
我修改了.arsc中array\search_oder第二项去了人气标题 但是下面的布局仍然显示在old排序中... 然而我还是看不懂。,慢慢学习吧 还没有学懂动态调试 谢谢分享教程,学习一下 成功,不过这个会员只能用于去广告,历史记录好像也能看,按热门度排序是不行的(显示最新顺序)。
虽然看不懂 ,但是感谢楼主分享 我的天,从头到尾都看不懂 谢谢楼主分享 谢谢楼主