硕士生
 
- 金币
- 2165
- 好评
- 30
- 信誉
- 101
|
本帖最后由 绿里 于 2026-4-10 10:20 编辑
看了这个帖子@shijian 微信QQ无风险防撤回,于是有了这篇帖子。
不看教程y3.Y类中.method public static z0()I方法修改如下:
- .method public static z0()I
- .registers 1
- const/4 v0, 0x3
- return v0
- .end method
复制代码
应用内要求是购买高级版,所以惯性思路就是通过字符串的id值搜索代码看看逻辑:
只有一个结果,我们进去看看代码:
通过代码逻辑我们发现p1的值等于p2的值也就是等于3的条件下,A0方法就会返回高级版CharSequence,那么就要问问p1的值哪来的了,p1是A0方法需要传入的第二个参数,也就是I类型,那么我们查找此方法的调用,追踪p1的值:
a3或者o0类随便进一个,这里择序优先,选择a3进去:
我们发现p1这里是v15的值为I类型,追踪v15寄存器存的是y3.Y类中h字段的值,那么我们直接跳转到h字段所在位置并查找它的赋值调用处:
y3.Y类是初始化值,一般情况下优先分析非初始化赋值逻辑,所以我们这里选择A3.a类里的赋值进行分析:
可以看到y3.Y的z0方法的返回值给了v0寄存器,再存入到h字段中,前面分析了A0方法中p1要等于3才是我们需要的,于是直接跳转到z0方法清空方法体赋值为固定值3即可保存编译签名打开应用测试:
到此结束!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
-
查看全部评分
总评分:好评 +1
金币 +2
|