在Android M版本里,如果没有修改过锁屏密码,那android 系统就会用默认密码加密,默认密码加密之后的开机流程如下。
1,/system/core/init/builtins.cpp的do_mount_all接口,mount data会返回FS_MGR_MNTALL_DEV_MIGHT_BE_ENCRYPTED。
447 } else if (ret == FS_MGR_MNTALL_DEV_MIGHT_BE_ENCRYPTED) {448 property_set("ro.crypto.state", "encrypted");449 property_set("ro.crypto.type", "block");450 property_set("vold.decrypt", "trigger_default_encryption");
2,Mount /data的返回值值FS_MGR_MNTALL_DEV_NEEDS_ENCRYPTION
445 if(ret == FS_MGR_MNTALL_DEV_NEEDS_ENCRYPTION) {
446 property_set("vold.decrypt", "trigger_encryption");
3,defaultcrypto被触发,这个在rc文件中配置
499on property:vold.decrypt=trigger_default_encryption500 start defaultcrypto
663service defaultcrypto /system/bin/vdc --wait cryptfs mountdefaultencrypted
664 disabled
665 oneshot
666 # vold will setvold.decrypt to trigger_restart_framework (default
667 # encryption)or trigger_restart_min_framework (other encryption)
4,mountdefaultencrypted会去调用cryptfs_mount_default_encrypted
1),获取password type
2),默认密码执行cryptfs_restart_internal
3641 } else if (cryptfs_check_passwd(DEFAULT_PASSWORD) == 0) {3642 SLOGD("Password is default - restarting filesystem");3643 cryptfs_restart_internal(0);
5,cryptfs_restart_internal(0)去mount data
----------------------------------------------------------------------------------------------------------------------------------------------------------------
尽请关注手机安全之家,了解更多Android Security知识。
关注方法:打开手机微信->通讯录->右上角"添加"->"搜号码"->输入"手机安全之家"->搜索。
或者而通过扫描下方二维码也可以添加。