那么多的浏览量,也不知道有多少个人是发现有问题的,就是修改会员后闹钟到时间不提醒问题。这样改是没办法正常使用的,还不如用原版。这里就涉及到多重判断的问题,比如说有会员没支付信息,或者初次安装就有会员等,这些都是检测方案,碰到过很多类似的检测,联网的先不说,就说本地的,本地判断的方案基本上是一样的,了解这些检测原理,对于新手逆向会有一些帮助。
软件用的是刚下载最新版7.0.0.5,工具反编译之类的自己准备好,建议用MT、NP管理器,环境都不用搭,手机就是环境。
1.png (98.36 KB, 下载次数: 0)
下载附件
2023-11-18 11:33 上传
如上图,怎么找isPro()Z我就不说了,非常简单。保存后安装测试,发现时间到了都没有弹出提醒,而且断网或者不登录都没有用,基本上可以判定是验证了支付信息,并且肯定调用了这个方法。用MT管理器看了一下调用,差不多800个,看来这条路行不通。再看一下本类方法列表,发现了疑似检测的地方。
1.png (48.45 KB, 下载次数: 0)
下载附件
2023-11-18 11:39 上传
如图,列表中有一些验证方法,比如邮箱、用户,最为可疑的是getProTypeForFake(获取伪造的pro类型),Fake我相信大家都很熟悉,川建国经常说的词。然后查找该方法的调用,一共有7个,点进去逐个查看,基本可以确定就是这些调用在检测真假会员。
1.png (87.36 KB, 下载次数: 0)
下载附件
2023-11-18 11:46 上传
public void tryToLogFakeUser() {
SharedPreferences defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
if (defaultSharedPreferences.getBoolean("jia_yonghu_tongji", false)) {
return;
}
User currentUser = this.mApplication.getAccountManager().getCurrentUser();
if ((currentUser.getProTypeForFake() == 1) != currentUser.isPro()) {
id.d.a().sendEvent("other_data", "jia_yong_hu", currentUser.isLocalMode() ? "local" : "server");
defaultSharedPreferences.edit().putBoolean("jia_yonghu_tongji", true).apply();
}
}
先看第一个,此处代码在尝试记录伪造用户,从字符串“jia_yonghu_tongji”就知道他想干什么,检测到伪造用户了以后就会被记录到SP目录下,后续取值就可以判断是否伪造。
其它地方同理,处理方案建议全部清掉void的代码。
继续往下看
private final String piracyUserSuffix() {
User a10 = j.a();
boolean z2 = false;
if (a10.isLocalMode()) {
z2 = a10.isPro();
} else if (a10.isPro() && a10.getProTypeForFake() == 0) {
z2 = true;
}
return z2 ? "_db" : "";
}
piracyUserSuffix(盗版用户后缀),用于识别盗版用户,并上传服务器。&&:与,此处代码理解较为简单。处理方案建议返回空字符串。
最后再看一下拦截提醒的方案
public final boolean h() {
User user = new User();
if (user.isPro() || user.getProType() != 0 || new SignUserInfo().isPro()) {
return true;
}
User a10 = defpackage.j.a();
if (a10.isLocalMode()) {
return a10.isPro();
}
return a10.isPro() && a10.getProTypeForFake() == 0;
}
该代码先初始化用户信息,||:或,全为false时,计算结果为false,否则为true。刚才修改了isPro,返回值为1,这就导致了h方法返回true,提醒无效。如果返回false,代码继续往下运行,它先判断是否为本地模式,再决定如何返回isPro的值,如果是本地模式,你又没有登录过,当然是盗版用户,它是这么一套验证流程。所以处理方案建议直接返回0。