Boot chain map — SM-F956B, F956BXXS4DZI1 (bit 4)
Source: official BL tar (BL_F956BXXS4DZI1_…_MULTI_CERT.tar.md5, 33 members), plus live
partition dumps taken with temp root. Static classification by segment entropy +
printable-string scan. All binaries stripped (no symbols).
Encrypted at rest
| Member | Size | Notes |
|---|---|---|
abl.elf.lz4
|
2.4 MB | ELF headers plain, loadable segments ciphertext (entropy ≈ 8.0, zero real strings). This is why static abl RE from tars doesn't work on this generation. |
imagefv.elf.lz4
|
8.4 MB | Same profile — the main UEFI firmware volume (apps live here). |
Plaintext (fully RE-able)
| Member | Size | Highlights |
|---|---|---|
uefi.elf.lz4
|
3.1 MB |
UEFI DXE firmware. LoadImage:, embedded platform config (uefiplatLA.cfg — see uefi-config.md), "UEFI Aux FV decompression" path, Sec.efi.
|
uefi_sec.mbn.lz4
|
197 KB |
The UEFI secure app (uefisecapp). Var-name table PK/KEK/SetupMode/SecureBoot/db/dbx, full secboot lib (secboot_hashUpdate/Final, validate_pkcs7_and_get_public_key, pbl_secx509_parse_pub_key), TzSetVariable/TzGetVariable/TzVariablePolicyCheck/AuthenticateVariable/DeleteVariableEx, SecureBootEnable, VariablePolicyIsPrivAuthVarProtectionDisabled, kek_keys, key label SM-F956B_EUR_XX_QKEY1.
|
xbl_s.melf.lz4
|
669 KB |
Qualcomm XBL-secure. Source paths (…/services/antirollback/src/AntiRollbackMgr.cpp), ARBConfig:arbFuseMapOem, Secure Boot:, AES S-box present.
|
xbl_config.elf.lz4
|
80 KB |
XBL config (DTB-ish), OEMInfo, VUEFI_FD entries.
|
tz.mbn.lz4
|
4.1 MB |
TrustZone OS + apps. "Device is OEM unlocked", "Secure boot is disabled/enabled", oem_decryption_service_enabled, /secboot/deferred_oem, sec_deferred_oem_roots_of_trust, AES S-box.
|
tz_kg.mbn.lz4
|
1.5 MB |
KG trustlet. KG_unlock, KG unlock, KGBL_read_fuse/KGBL_write_fuse, HWIO_QFPROM_RAW_OEM_SPARE_1_ROW1_LSB_ADDR (KG state = QFPROM fuse row + RPMB), KG_TA : KG unlock / verify complete token.
|
tz_iccc.mbn.lz4
|
90 KB |
Device-status trustlet. CICCCGetDeviceStatus, "Warranty Bit", "Secure Boot", is_updates_lock_enabled.
|
vaultkeeper.mbn.lz4
|
1.1 MB |
VaultKeeper. Warranty-bit fuse reads, oem_sw_fuse checks, device_info RPMB provisioning.
|
engmode.mbn.lz4
|
1.4 MB |
Engineering mode app. em_clear_rpmb, em_crypto_aes_256_gcm_decrypt, "EngineeringMode20 AES256 Key Label, MSTG".
|
keymint.mbn.lz4
|
425 KB |
is_unlocked, UNLOCKED_DEVICE_REQUIRED, RPMB/rollback-protected key storage.
|
bksecapp.mbn.lz4
|
70 KB | Boot-key security app (warranty-related). |
hypvm.mbn.lz4
|
1.4 MB |
Hypervisor. gpt: Failed to revert write!, qhee_hyp_assign_rollback SMC paths.
|
devcfg.mbn.lz4
|
390 KB |
verified boot strings.
|
XblRamdump.elf.lz4
|
1.8 MB |
XBL ramdump handler; AES S-box; devinfo reference.
|
Device partition layout (interesting subset)
uefi, uefisecapp, uefivarstore, tz_kg, tziccc, vk, em, bksecapp,
steady, devinfo, frp, param, bota, xbl, xbl_config, abl, imagefv,
persistent, storsec, catefv, toolsfv, testparti, qweslicstore, secdata…
No efisp/esp partition (unlike the SM8850 GBL reference design).
Live dump observations
-
devinfo(4 KB): magicSAMANDR-BOOT!, single flag byte0x01at 0x90. -
frp(512 KB): all zeros — FRP inactive (matches the PDB service analysis). -
uefivarstore(512 KB): XBL config vars only (incl.oem_image_encryption_key1,oem_image_encryption_key1_sel). UEFI auth vars (PK/KEK/db/SetupMode) are NOT here — they're TZ-stored (TzSet/GetVariable). -
steady(4 MB): nearly empty on this device. -
toolsfv/catefv/testparti: empty on retail (all zeros) — raw writable partitions. -
uefi(5 MB): the UEFI DXE image as flashed.
Crypto observations
-
AES S-box found in
tz.mbnandXblRamdump.elfonly. The TAs and UEFI components use hardware crypto (HW keyslots / CE engine) — no software S-box in uefi.elf, uefi_sec, vaultkeeper, tz_kg, engmode. -
abl.elf/imagefv.elfciphertext profile = uniform-random; decryption key source is an open question (candidates:SM-F956B_EUR_XX_QKEY1label via keymaster/TZ,oem_image_encryption_key1varstore value, fuse-derived).