0x00 前言
这个App很坏,崩了好几次
0x01 目标
朝花夕拾 (20230404)
下载地址:https://www.wandoujia.com/apps/8334058
0x02 逆向思路
1、免登录
1)常量过滤:搜索字符串“登录”
2)选择第一个MainActivity结果
3)看到字符串“登录”上面有对i()传过来的值进行判断
4)跟进i(),转为Java
5)修改返回值即可
6)修改之后
2、VIP逆向
1)常量过滤:搜索字符串“会员”
2)看到字符串“续费会员”上面有对j()传过来的值进行判断
3)跳转j(),转为Java
4)修改返回值
5)实测VIP功能可用,但是这么丑的界面,还是再改改
0x03 AI赢麻了
1、j() Smail代码
[Java] 纯文本查看 复制代码
.method public static j()Z
.registers 5
invoke-static {}, Lbb/h;->e()J # 跳转到e()判断会员时间
move-result-wide v0
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v2
cmp-long v4, v0, v2
if-lez v4, :cond_e
const/4 v0, 0x1
goto :goto_f
:cond_e
const/4 v0, 0x1
:goto_f
return v0
.end method
2、e() Smail代码
[Java] 纯文本查看 复制代码
.method public static e()J
.registers 4
invoke-static {}, Lcom/tencent/mmkv/MMKV;->h()Lcom/tencent/mmkv/MMKV;
move-result-object v0
const-string v1, "plusTime"
const-wide/16 v2, 0x0
invoke-virtual {v0, v1, v2, v3}, Lcom/tencent/mmkv/MMKV;->e(Ljava/lang/String;J)J
move-result-wide v0
return-wide v0
.end method
3、e()转为Java代码
[Java] 纯文本查看 复制代码
public static long e() {
return MMKV.h().e("plusTime", 0L);
}
这是ChatGTP对e()的解释
于是我尝试修改的v0的值为时间戳结果App闪退,但是我在e()上面看到了一个方法d()
d()是一个判断,这是ChatGTP的解释;好家伙,这不得妥妥闪退:判断这么大的数字
4、按照ChatGPT的解释修改了判断,直接让判断返回“永久高级版”字符串
5)修改结果
0x04 总结
1、搜索字符串的时候:VIP搜索“续费”比较容易定位方法;免登录搜索“登录”
2、修改超大大大大数据的时候,很容易造成App闪退
|