设备模拟(2)MagiskHidePropsConf功能探索
概览
MagiskHidePropsConf的功能还有很多,本文尝试对上一篇博文中的MagiskHidePropsConf模块如何修改系统信息进行探索,另外对模块中的其他功能的使用以及效果进行总结,最后是一些使用上的注意事项。
MagiskHidePropsConf模块修改系统信息的实现
看了代码,MagiskHidePropsConf模块的主要实现方式为,通过Magisk的resetprop实现的。
在菜单中选择需要模拟的机型之后,则是通过将机型对应的信息存储到propsconf_late文件中,重启的时候模块会访问这个文件并根据里面的值进行设置。
详细的追溯代码功能的过程就不展开了,实现读取属性并赋值的函数应该是在dev_sim_edit函数
这里可以看到一个列表,里面记录了可能会被变更的属性值,这里进行记录:
- ro.product.brand
- ro.product.name
- ro.product.device
- ro.build.version.release
- ro.build.id
- ro.build.version.incremental
- ro.build.display.id
- ro.build.version.sdk
- ro.product.manufacturer
- ro.product.model
可以看到跟之前调研的结果类似,只改变了ro.build和ro.product中的相关值。
其他修改设备信息的功能
在主功能菜单中,第二个选项为2 - Force BASIC key attestation
,官方文档中显示为支持绕过谷歌SatetyNet检查的功能。
SafetyNet是谷歌提供给想要使用谷歌框架/服务的设备验证他们的完整性的功能,包括BL锁,是否Root,是否为官方ROM等,在检测的时候有一个类似验证手机某种属性的过程,检测的属性成为ctsProfile,在安装了谷歌框架的手机上使用Magisk可以查看当前设备是否通过了这个检查。
这个功能可以选择特定机型的ctsProfile来通过这个检查,并且使用查看手机属性的软件可以看到在设备名称和型号会根据选择的ctsProfile改变。但是这两个属性在使用Device Simulation的时候会被覆盖;重置为原始的设备信息的时候这两个属性还会被保留,需要重新进入到2 - Force BASIC key attestation
中重置这个机型签名。
MagiskHidePropsConf模块使用注意
- 重启后必须解锁手机一次才能在adb shell中通过props命令进入终端,这个可能跟Magisk/Android 9的root权限管理有关;
- 改系统之后有些应用启动不了可能是因为选择的系统安卓版本太低,然后内部有根据SDK版本选择申请权限的逻辑,改了个机型之后测试了一个应用可以正常使用;