给TWRP增加Data解密功能-高通)

前言

qseecomd是高通(Qualcomm)设备上的一个关键系统守护进程(daemon),全称为 QSEE Communication Daemon,主要负责用户态进程与 QSEE(Qualcomm Secure Execution Environment,高通安全执行环境)之间的通信管理。

正文

以下演示机型为OPPO Ace2

所需文件

  • qseecomd
  • libQSEEComAPI.so
  • libdrmfs.so

这两个so文件是支持qseecomd运行的基础

Add file · momo54181/twrp_device_oppo_OP4AD9@34d3483

把libandroidicu.so放到system/lib64里

上面是我提交的PR,原版照抄从官方recovery文件复制过来,如果官方recovery的vendor目录是空的,直接把设备vendor分区薅过来,直接复制。


接下来就是复制keymaster和gatekeeper文件了。

Bin目录

lib64目录

找关键字gatekeeper@后面带-service-qti,keymaster@后面带-service-qti

bin目录的复制到system/bin,lib64目录的复制到vendor/lib64/hw


BoardConfig.mk文件

添加

plaintext
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
TARGET_RECOVERY_DEVICE_MODULES += \
android.hidl.allocator@1.0 \
android.hidl.memory@1.0 \
android.hidl.memory.token@1.0 \
libdmabufheap \
libhidlmemory \
libion \
libnetutils \
vendor.display.config@1.0 \
vendor.display.config@2.0 \
libdebuggerd_client

RECOVERY_LIBRARY_SOURCE_FILES += \
$(TARGET_OUT_SHARED_LIBRARIES)/android.hidl.allocator@1.0.so \
$(TARGET_OUT_SHARED_LIBRARIES)/android.hidl.memory@1.0.so \
$(TARGET_OUT_SHARED_LIBRARIES)/android.hidl.memory.token@1.0.so \
$(TARGET_OUT_SHARED_LIBRARIES)/libdmabufheap.so \
$(TARGET_OUT_SHARED_LIBRARIES)/libhidlmemory.so \
$(TARGET_OUT_SHARED_LIBRARIES)/libion.so \
$(TARGET_OUT_SHARED_LIBRARIES)/libnetutils.so \
$(TARGET_OUT_SHARED_LIBRARIES)/libdebuggerd_client.so \
$(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/vendor.display.config@1.0.so \
$(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/vendor.display.config@2.0.so

BOARD_USES_QCOM_FBE_DECRYPTION := true

device.mk添加

plaintext
1
2
3
4
PRODUCT_PACKAGES_ENG += \
qcom_decrypt \
qcom_decrypt_fbe

init.recovery.qcom.rc在一开头添加

plaintext
1
import /init.recovery.qcom_decrypt.rc

然后编译就OK

其他

如果data挂载参数为/dev/block/bootdevice/by-name/userdata /data f2fs noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065,fsync_mode=nobarrier,inlinecrypt latemount,wait,resize,check,formattable,fileencryption=ice,wrappedkey,quota,reservedsize=128M,sysfs_path=/sys/devices/platform/soc/1d84000.ufshc,checkpoint=fs

fileencryption=ice的需要在twrp.flags文件里添加元加密分区的密钥位置keydirectory=/metadata/vold/metadata_encryption

示例:/data f2fs /dev/block/bootdevice/by-name/userdata flags=fileencryption=ice;wrappedkey;keydirectory=/metadata/vold/metadata_encryption