记一下去掉Folo谷歌服务验证的过程

2 min

虽然已经有了部署在Serv00上的Miniflux,用起来很方便也没有被墙,还是想再体验一下Folo的安卓版。

之前就尝试过Windows上的Folo,效果还不错。安卓上的Rss阅读器没有一个能让我完全满意的,当时Folo还没有出安卓版,最近看了一下出来了想体验一下。

Github release上没有编译好的安卓版本,找来找去似乎只有谷歌商店有了。我没启用谷歌套件(主要为了省电,应该能省点电吧)。平时我就直接用Aurora Store,安装Folo不知道为什么失败,就在APKPure上面安了。

打开后发现过几秒钟就会弹窗Something went wrong,是一个缺少谷歌服务的提示。关了之后软件就会退出。

首先用MT管理器提取安装包,再把xapk转成apk,没有加壳和混淆,很好。

搜索范围选方法名,发起搜索找到很多个isGooglePlayServicesAvailable的检验,全部修改返回true。然而还是不行。

通过算法助手pro定位弹窗,定位到com.pairip.licensecheck.LicenseClient.connectToLicensingService

Google Play App Integrity (原名 App Licensing / LVL) 的高级保护方案,通常被称为 PairIP。

LicenseClient这个类好好修改了一下。

  1. 废掉连接请求 (connectToLicensingService) 这个方法是启动授权检查的入口。我们让它在启动时就直接结束,根本不去连谷歌商店。

修改后:

.method private connectToLicensingService()V
    .registers 1

    # 直接返回,什么都不做
    return-void
.end method
  1. 废掉错误处理 (retryOrThrow) 应用在连接失败或验证不通过时会调用这个方法来弹窗。找到 .method ... retryOrThrow(...)V

修改后:

.method private retryOrThrow(Lcom/pairip/licensecheck/LicenseCheckException;)V
    .registers 2

    # 哪怕报错了,也直接返回,不准弹窗,不准退出
    return-void
.end method

测试一下,现在就不会弹窗了。