XperiaのショップROMについて(その1)
2023-05-08XDAで話題(?)になっていたXperiaのショップROMについて検証する
XDA のスレッドで書かれていることについて検証してみる。
- SO-02Kなのに表示上はG8441になっている
- Bootloaderはロックされている。
- 国内機なのでそもそもBootloaderアンロックが許可されていない。
手元で似たような状態を再現できそうな端末としてXperia 5(SO-01M)があるのでそれで検証を行う。
まずはAndroid(Xperia)のロック状態の起動についておさらい
以下の3つ(+α)の検証が通れば大体起動してきます。
- bootパーティションの署名検証
- Android Verified Boot 2.0(AVB)による各パーティションの検証
- dm-verityによるsystemパーティションのハッシュの検証
bootイメージとsystemパーティションは触ると確実に起動しなくなるのでそれ以外の領域が改変されていると推測されます。
XDAスレッドではパーティション領域が改変されているのでは?といわれていたのでそれが本当に行えるかどうか確認していきます。
まず、AVB(vbmetaパーティション)で検証対象になっているパーティションを調べていきます。
postmarketos Wiki にわかりやすい方法が書いてあるので参考にしましょう
avbtool info_image --image /path/to/vbmeta.img
Minimum libavb version: 1.0
Header Block: 256 bytes
Authentication Block: 576 bytes
Auxiliary Block: 3968 bytes
Public key (sha1): 50ee685e1edbfe1aebbe0bbe119524ab0e8b528f
Algorithm: SHA256_RSA4096
Rollback Index: 0
Flags: 0
Rollback Index Location: 0
Release String: 'avbtool 1.1.0'
Descriptors:
Chain Partition descriptor:
Partition Name: system
Rollback Index Location: 1
Public key (sha1): c53a0b8c0f11335347d3bc10ad54c576eee98ef3
Prop: com.android.build.boot.fingerprint -> 'docomo/bahamut_docomo/bahamut_docomo:11/RKQ1.200928.002/1:user/dev-keys'
Prop: com.android.build.boot.os_version -> '11'
Prop: com.android.build.boot.security_patch -> '2021-10-01'
Prop: com.android.build.boot.security_patch -> '2021-10-01'
Prop: com.android.build.vendor.fingerprint -> 'docomo/bahamut_docomo/bahamut_docomo:11/RKQ1.200928.002/1:user/dev-keys'
Prop: com.android.build.vendor.os_version -> '11'
Prop: com.android.build.vendor.security_patch -> '2021-10-01'
Prop: com.android.build.vendor.security_patch -> '2021-10-01'
Prop: com.android.build.dtbo.fingerprint -> 'docomo/bahamut_docomo/bahamut_docomo:11/RKQ1.200928.002/1:user/dev-keys'
Hash descriptor:
Image Size: 54771712 bytes
Hash Algorithm: sha256
Partition Name: boot
Salt: aee087a5be3b982978c923f566a94613496b417f2af592639bc80d141e34dfe7
Digest: 25f39ff9f76866974ee9e34d0a7b1b8c30111fbebd40bcd870dfbae3c12f8b09
Flags: 0
Hash descriptor:
Image Size: 279295 bytes
Hash Algorithm: sha256
Partition Name: dtbo
Salt: aee087a5be3b982978c923f566a94613496b417f2af592639bc80d141e34dfe7
Digest: c388e78ced1e518d79ae4cb816e9c99a77458c8ed2f03a830e36b7f8ca1ac2ce
Flags: 0
Hash descriptor:
Image Size: 4096 bytes
Hash Algorithm: sha256
Partition Name: rdimage
Salt: aee087a5be3b982978c923f566a94613496b417f2af592639bc80d141e34dfe7
Digest: 6eb8c4e1bce842d137f18b27beb857d3b43899d178090537ad7a0fbe3bf4126a
Flags: 0
Hashtree descriptor:
Version of dm-verity: 1
Image Size: 1056714752 bytes
Tree Offset: 1056714752
Tree Size: 8327168 bytes
Data Block Size: 4096 bytes
Hash Block Size: 4096 bytes
FEC num roots: 2
FEC offset: 1065041920
FEC size: 8421376 bytes
Hash Algorithm: sha1
Partition Name: vendor
Salt: aee087a5be3b982978c923f566a94613496b417f2af592639bc80d141e34dfe7
Root Digest: d661d18e83fd8a45eac500816c42818bdcaa70ef
Flags: 0
system、boot、dtbo、rdimage、vendorのみが記載されていて確かにoemパーティションは記載されていません。
ではここから実際に書き換えて起動できるか試していきましょう。
手元のSO-01MはqUnlock toolを用いてアンロックされているため、手っ取り早い方法で改変していきます。
magiskでroot環境を用意し、改変した後にoem領域を除いてStockに戻してみます。
なお実際のXDAの機種では一時ルートを使っているのではないかなと推測しています。
まずJ8270のROMにあるOEMイメージを端末に焼いてみます。
とりあえずJ8270由来の
ro.product.locale=en-US
を維持したまま、Bootloaderをロックすることができました。
次の記事ではOEM領域をもっと本本格的に書き換えていこうと思います。
comments powered by Disqus