canyie/pine

Feedback

Closed this issue · 5 comments

首先非常感谢作者开源 pine,我们项目已经集成 pine 并上线,经过我们线上测试,我们发现在 Android 12 / Android 12L 系统上会有部分设备出现crash,但是遗憾的是我们没有抓到详细的 log

看起来是 class linker 的地址计算错误了,能拿到这些设备的安全补丁级别或者 libart.so 吗?

我看看能不能找到能复现的设备,找不到的话我更新个版本记录一下详细的设备信息,只需要安全补丁级别就可以了是吗?

如果可以的话最好把 libart.so 上传一下,应该不是安全补丁级别的问题,可能是某个 tag 的偏移有不同;我手上唯一一台联想的 Android 12 平板前几天刚寄走,只有台旧手机能刷别人做的 Android 12 ROM 测试,倒是没测出问题

我看看能不能找到能复现的设备,找不到的话我更新个版本记录一下详细的设备信息,只需要安全补丁级别就可以了是吗?

我手里也有一些设备,如果有demo的话可以配合你测试,希望能提供一些帮助~

终于找到了能复现的机器了,出现崩溃的设备都是海外的 android12/12L 设备,复现设备在三星 remote test lab 中的 SM-A528-IN3 ,注意要选 android 12 的系统,以下这台设备的 libart.so 和 libart-compiler.so 文件
libart.zip

所有出现失败的设备都有这个log

06-27 10:43:43.492  1949  1949 I Pine    : Pine native init...
06-27 10:43:43.493  1949  1949 D Pine    : get module base /apex/com.android.art/lib64/libart.so: 473757122560
06-27 10:43:43.497  1949  1949 D Pine    : get module base /apex/com.android.art/lib64/libart-compiler.so: 473440452608
06-27 10:43:43.498  1949  1949 W Pine    : JavaVM offset mismatches default offsets, trying a linear search
06-27 10:43:43.498  1949  1949 W Pine    : Found JavaVM in Runtime at 632
06-27 10:43:43.498  1949  1949 I Pine    : Got class linker 0xb400006eb291c700

这个设备也并不是所有的方法都hook失败,而是只有部分方法失败了,我们使用到的方法中,有这几个方法hook失败了

ContextCompat.class.getDeclaredMethod("checkSelfPermission", Context.class, String.class)
AppOpsManagerCompat.class.getDeclaredMethod("noteProxyOp", Context.class, String.class, String.class)
ActivityCompat.class.getDeclaredMethod("requestPermissions", Activity.class, String[].class, int.class)
android.os.SystemProperties.get(String)