Xiaomi Mi5 – GearbestショップROMを検証

foto_no_exif

お久しぶりの更新です。巷ではiPhone7で盛り上がっている所ですが、個人的には中華スマホ熱が過熱しており、数台買いあさってニヤニヤしている今日この頃です。その中の一つ、勢いに釣られてGearBestのtwitter特価で購入したMi5が到着しましたので。端末レビューもそこそこにショップロムとやらをカスロム作者な目線で調べてみます。

端末: Xiaomi Mi5 64GB Gemini MAACNDB 中国流通用
自称搭載ROM: V7.3.8.0 MAACNDB Global
カスタム元ROMV7.2.4.0.MAACNDB China Stable (致命的なバグがあり配布中止)

2016/09/25 – 修正と加筆

ROMのカスタム内容

China Stableがベースなので、本来であれば中国語(簡体字、繁体字)と英語の2言語のみで、中国向けのストアやサービスのアプリが多く入っていてGoogle Play Storeは導入されていません。

しかしショップROMは2言語以外のリソースをAOSPから取得して同じアプリパッケージのファイルにリソースを取り込んであるので、半分程度ですがAOSPと共通部分は翻訳され言語選択もAOSPレベルに選べるように改変されています。

中国向けのアプリもシステムから除去されて、代わりにGoogleの関連サービスのアプリがシステムにインストールされています。

ROMの状態

ソースからビルドされた物か?

ROMがソースからビルドされた物か、再パック物かの判断はsystemのタイムスタンプを見て判断したりしますが、Mi5に導入されていたショップROMも書き換えたと思われる部分のタイムスタンプが綺麗に違っていたので、間違いなくMIUI公式にリリースされているROMをベースに第三者がカスタムを加えた物と考えて間違いないでしょう。

 

framework
タイムスタンプの例

 

実際に抜き出したシステムファイルを見てみたところ、com.google.android~とframework-res.apkのタイムスタンプがその他のファイルと変わっている。

またsystemディレクトリトップにopen-gapps等を利用したときに出来るフォルダ「addon.d」フォルダがが存在したので、おそらくGoogle関連のアプリはカスタムリカバリを通して導入したと思われます。

 

root
/systemのルートフォルダ

 

改編元のROMは何?

platformBuildVersionName="6.0-V7.2.4.0.MAACNDB"

中にあるapkをデコンパイルしてみた所、AndroidManifest.xmlにV7.2.4.0.MAACNDBという記述を発見しました。同バージョンのROMは公式にリリースされているので、このファームウェアがベースで間違いないと思います。

ちなみのこのバージョンのROMファイルは何らかの事情で公開が停止されているバージョンです。理由は明かされていませんが、常用での使用はあまり勧めることが出来ないかもしれません。

安全性

まず非公式のカスタムROM扱いなので、dm-verityが無効化されており、システム改ざんの検知が出来ないので悪意のあるシステム改ざん等といった攻撃からは弱くなります。
(追記:MIUI7ではdm-verityは未実装でbootファイルは公式の元と一致していました。)

次は公式ROM(V7.2.4.0.MAACNDB)からの改編内容の差分をチェックしてみた結果です。

ファイル名 フォルダ 比較結果 左日付 右日付 拡張子
BugReport app 削除: V7.2.4.0.MAACNDB\app * 2016/03/01 1:18:07
Email app 削除: V7.2.4.0.MAACNDB\app * 2016/03/01 1:18:07
GameCenter app 削除: V7.2.4.0.MAACNDB\app * 2016/03/01 1:18:07
GooglePinyinIME app 削除: V7.2.4.0.MAACNDB\app * 2016/03/01 1:18:07
HoloSpiralWallpaper app 削除: V7.2.4.0.MAACNDB\app * 2016/03/01 1:18:07
Mipay app 削除: V7.2.4.0.MAACNDB\app * 2016/03/01 1:18:07
MiuiSuperMarket app 削除: V7.2.4.0.MAACNDB\app * 2016/03/01 1:18:07
MiuiVideo app 削除: V7.2.4.0.MAACNDB\app * 2016/03/01 1:18:07
NoiseField app 削除: V7.2.4.0.MAACNDB\app * 2016/03/01 1:18:07
PhaseBeam app 削除: V7.2.4.0.MAACNDB\app * 2016/03/01 1:18:07
QuickSearchBox app 削除: V7.2.4.0.MAACNDB\app * 2016/03/01 1:18:07
VisualizationWallpapers app 削除: V7.2.4.0.MAACNDB\app * 2016/03/01 1:18:07
VoiceAssist app 削除: V7.2.4.0.MAACNDB\app * 2016/03/01 1:18:07
data-app 削除: V7.2.4.0.MAACNDB * 2016/03/01 1:18:07
wcd9320 etc\firmware 削除: V7.2.4.0.MAACNDB\etc\firmware * 2016/03/01 1:18:07
epos etc\usf 削除: V7.2.4.0.MAACNDB\etc\usf * 2016/03/01 1:18:07
gesture etc\usf 削除: V7.2.4.0.MAACNDB\etc\usf * 2016/03/01 1:18:07
hovering etc\usf 削除: V7.2.4.0.MAACNDB\etc\usf * 2016/03/01 1:18:07
p2p etc\usf 削除: V7.2.4.0.MAACNDB\etc\usf * 2016/03/01 1:18:07
pairing etc\usf 削除: V7.2.4.0.MAACNDB\etc\usf * 2016/03/01 1:18:07
pattern etc\usf\proximity 削除: V7.2.4.0.MAACNDB\etc\usf\proximity * 2016/03/01 1:18:07
rec etc\usf\proximity 削除: V7.2.4.0.MAACNDB\etc\usf\proximity * 2016/03/01 1:18:07
sw_calib etc\usf 削除: V7.2.4.0.MAACNDB\etc\usf * 2016/03/01 1:18:07
sync_gesture etc\usf 削除: V7.2.4.0.MAACNDB\etc\usf * 2016/03/01 1:18:07
tester etc\usf 削除: V7.2.4.0.MAACNDB\etc\usf * 2016/03/01 1:18:07
MiGameCenterSDKService priv-app 削除: V7.2.4.0.MAACNDB\priv-app * 2016/03/01 1:18:07
rfs 削除: V7.2.4.0.MAACNDB * 2016/03/01 1:18:07
system vendor\Default 削除: V7.2.4.0.MAACNDB\vendor\Default * 2016/03/01 1:18:07
exclude vendor 削除: V7.2.4.0.MAACNDB\vendor * 2016/03/01 1:18:07
addon.d 追加: V7.3.8.0.MAACNDB * 2016/09/23 0:55:01
Gmail app 追加: V7.3.8.0.MAACNDB\app * 2016/09/23 0:55:24
GoogleCalendarSyncAdapter app 追加: V7.3.8.0.MAACNDB\app * 2016/09/23 0:55:30
GoogleContactsSyncAdapter app 追加: V7.3.8.0.MAACNDB\app * 2016/09/23 0:55:30
googleime app 追加: V7.3.8.0.MAACNDB\app * 2016/09/23 0:56:37
MiuiVideoPlayer app 追加: V7.3.8.0.MAACNDB\app * 2016/09/23 0:55:38
Music2 app 追加: V7.3.8.0.MAACNDB\app * 2016/09/23 0:55:39
SDK app 追加: V7.3.8.0.MAACNDB\app * 2016/09/23 0:55:53
preferred-apps etc 追加: V7.3.8.0.MAACNDB\etc * 2016/09/23 0:56:57
sysconfig etc 追加: V7.3.8.0.MAACNDB\etc * 2016/09/23 0:56:59
ConfigUpdater priv-app 追加: V7.3.8.0.MAACNDB\priv-app * 2016/09/23 1:00:54
GMSCore priv-app 追加: V7.3.8.0.MAACNDB\priv-app * 2016/09/23 1:01:07
GoogleBackupTransport priv-app 追加: V7.3.8.0.MAACNDB\priv-app * 2016/09/23 1:01:26
GoogleFeedback priv-app 追加: V7.3.8.0.MAACNDB\priv-app * 2016/09/23 1:01:26
GoogleLoginService priv-app 追加: V7.3.8.0.MAACNDB\priv-app * 2016/09/23 1:01:26
GoogleOneTimeInitializer priv-app 追加: V7.3.8.0.MAACNDB\priv-app * 2016/09/23 1:01:29
GooglePartnerSetup priv-app 追加: V7.3.8.0.MAACNDB\priv-app * 2016/09/23 1:01:29
GoogleServicesFramework priv-app 追加: V7.3.8.0.MAACNDB\priv-app * 2016/09/23 1:01:29
Phonesky priv-app 追加: V7.3.8.0.MAACNDB\priv-app * 2016/09/23 1:02:07
SetupWizard priv-app 追加: V7.3.8.0.MAACNDB\priv-app * 2016/09/23 1:02:22
Velvet priv-app 追加: V7.3.8.0.MAACNDB\priv-app * 2016/09/23 1:02:50
srec usr 追加: V7.3.8.0.MAACNDB\usr * 2016/09/23 1:03:22
Calculator.apk app\Calculator バイナリファイルは異なっています * 2016/09/23 0:55:08 2016/03/01 1:18:07 apk
DeskClock.apk app\DeskClock バイナリファイルは異なっています * 2016/09/23 0:55:13 2016/03/01 1:18:07 apk
DownloadProviderUi.apk app\DownloadProviderUi バイナリファイルは異なっています * 2016/09/23 0:55:17 2016/03/01 1:18:07 apk
Notes.apk app\Notes バイナリファイルは異なっています * 2016/09/23 0:55:49 2016/03/01 1:18:07 apk
SoundRecorder.apk app\SoundRecorder バイナリファイルは異なっています * 2016/09/23 0:55:55 2016/03/01 1:18:07 apk
com.google.android.maps.jar framework バイナリファイルは異なっています * 2016/09/23 0:58:41 2016/03/01 1:18:07 jar
framework-res.apk framework バイナリファイルは異なっています * 2016/09/23 0:58:40 2016/03/01 1:18:07 apk
Calendar.apk priv-app\Calendar バイナリファイルは異なっています * 2016/09/23 1:00:52 2016/03/01 1:18:07 apk
Contacts.apk priv-app\Contacts バイナリファイルは異なっています * 2016/09/23 1:00:59 2016/03/01 1:18:07 apk
InCallUI.apk priv-app\InCallUI バイナリファイルは異なっています * 2016/09/23 1:01:32 2016/03/01 1:18:07 apk
MiuiCamera.apk priv-app\MiuiCamera バイナリファイルは異なっています * 2016/09/23 1:01:39 2016/03/01 1:18:07 apk
MiuiGallery.apk priv-app\MiuiGallery バイナリファイルは異なっています * 2016/09/23 1:01:43 2016/03/01 1:18:07 apk
MiuiHome.apk priv-app\MiuiHome バイナリファイルは異なっています * 2016/09/23 1:01:44 2016/03/01 1:18:07 apk
MiuiSystemUI.apk priv-app\MiuiSystemUI バイナリファイルは異なっています * 2016/09/23 1:01:51 2016/03/01 1:18:07 apk
Mms.apk priv-app\Mms バイナリファイルは異なっています * 2016/09/23 1:01:58 2016/03/01 1:18:07 apk
Music.apk priv-app\Music バイナリファイルは異なっています * 2016/09/23 1:02:05 2016/03/01 1:18:07 apk
Settings.apk priv-app\Settings バイナリファイルは異なっています * 2016/09/23 1:02:22 2016/03/01 1:18:07 apk
Weather.apk priv-app\Weather バイナリファイルは異なっています * 2016/09/23 1:03:07 2016/03/01 1:18:07 apk
build.prop テキストファイルは異なります * 2016/09/23 1:05:33 2016/03/01 1:18:07 prop
build.prop.bakforspec テキストファイルは異なります * 2016/09/23 1:05:33 2016/03/01 1:18:07 bakforspec
WCNSS_qcom_cfg.ini etc\firmware\wlan\qca_cld 削除: V7.2.4.0.MAACNDB\etc\firmware\wlan\qca_cld * 2016/09/23 12:56:40 ini
wlan_mac.bin etc\firmware\wlan\qca_cld 削除: V7.2.4.0.MAACNDB\etc\firmware\wlan\qca_cld * 2016/09/23 12:56:40 bin
msadp etc\firmware 削除: V7.2.4.0.MAACNDB\etc\firmware * 2016/09/23 12:56:40
DroidSans-Bold.ttf fonts 削除: V7.2.4.0.MAACNDB\fonts * 2016/09/23 12:56:42 ttf
DroidSans.ttf fonts 削除: V7.2.4.0.MAACNDB\fonts * 2016/09/23 12:56:42 ttf
miuisdk.jar framework 削除: V7.2.4.0.MAACNDB\framework * 2016/09/23 12:56:45 jar
miuisystem.jar framework 削除: V7.2.4.0.MAACNDB\framework * 2016/09/23 12:56:45 jar
wlan.ko lib\modules 削除: V7.2.4.0.MAACNDB\lib\modules * 2016/09/23 12:56:59 ko
libGLESv3.so lib 削除: V7.2.4.0.MAACNDB\lib * 2016/09/23 12:56:54 so
libGLESv3.so lib64 削除: V7.2.4.0.MAACNDB\lib64 * 2016/09/23 12:57:00 so
MessageComplete.ogg media\audio\notifications 削除: V7.2.4.0.MAACNDB\media\audio\notifications * 2016/09/23 12:57:08 ogg
MessageIncoming.ogg media\audio\notifications 削除: V7.2.4.0.MAACNDB\media\audio\notifications * 2016/09/23 12:57:08 ogg
mdtp_service vendor\bin 削除: V7.2.4.0.MAACNDB\vendor\bin * 2016/03/01 1:18:07
pd-mapper vendor\bin 削除: V7.2.4.0.MAACNDB\vendor\bin * 2016/03/01 1:18:07
perfd vendor\bin 削除: V7.2.4.0.MAACNDB\vendor\bin * 2016/03/01 1:18:07
qpaydaemon vendor\bin 削除: V7.2.4.0.MAACNDB\vendor\bin * 2016/03/01 1:18:07
qseeproxydaemon vendor\bin 削除: V7.2.4.0.MAACNDB\vendor\bin * 2016/03/01 1:18:07
qseeproxysampledaemon vendor\bin 削除: V7.2.4.0.MAACNDB\vendor\bin * 2016/03/01 1:18:07
qti vendor\bin 削除: V7.2.4.0.MAACNDB\vendor\bin * 2016/03/01 1:18:07
thermal-engine vendor\bin 削除: V7.2.4.0.MAACNDB\vendor\bin * 2016/03/01 1:18:07
libEGL_adreno.so vendor\lib 削除: V7.2.4.0.MAACNDB\vendor\lib * 2016/09/23 12:57:28 so
libEGL_adreno.so vendor\lib64 削除: V7.2.4.0.MAACNDB\vendor\lib64 * 2016/09/23 12:57:38 so
procrank xbin 削除: V7.2.4.0.MAACNDB\xbin * 2016/03/01 1:18:07
shelld xbin 削除: V7.2.4.0.MAACNDB\xbin * 2016/03/01 1:18:07
tunman xbin 削除: V7.2.4.0.MAACNDB\xbin * 2016/03/01 1:18:07
com.google.android.camera2.xml etc\permissions 追加: V7.3.8.0.MAACNDB\etc\permissions * 2016/09/23 0:56:53 xml
com.google.android.dialer.support.xml etc\permissions 追加: V7.3.8.0.MAACNDB\etc\permissions * 2016/09/23 0:56:53 xml
com.google.android.media.effects.xml etc\permissions 追加: V7.3.8.0.MAACNDB\etc\permissions * 2016/09/23 0:56:53 xml
com.google.widevine.software.drm.xml etc\permissions 追加: V7.3.8.0.MAACNDB\etc\permissions * 2016/09/23 0:56:53 xml
features.xml etc\permissions 追加: V7.3.8.0.MAACNDB\etc\permissions * 2016/09/23 0:56:53 xml
g.prop etc 追加: V7.3.8.0.MAACNDB\etc * 2016/09/23 0:57:02 prop
com.google.android.camera2.jar framework 追加: V7.3.8.0.MAACNDB\framework * 2016/09/23 0:58:41 jar
com.google.android.dialer.support.jar framework 追加: V7.3.8.0.MAACNDB\framework * 2016/09/23 0:58:41 jar
com.google.android.media.effects.jar framework 追加: V7.3.8.0.MAACNDB\framework * 2016/09/23 0:58:41 jar
com.google.widevine.software.drm.jar framework 追加: V7.3.8.0.MAACNDB\framework * 2016/09/23 0:58:41 jar
libfilterpack_facedetect.so lib 追加: V7.3.8.0.MAACNDB\lib * 2016/09/23 0:59:04 so
libjni_latinimegoogle.so lib 追加: V7.3.8.0.MAACNDB\lib * 2016/09/23 0:59:02 so

 

一部バイナリファイルで削除判定が出ているものはadb pull出来なかったファイルです。

改編箇所を見ると中国向けのアプリ削除、ライブ壁紙の削除、Googleサービス関連のファイル追加、言語リソースを追加したapk箇所と分かり、実際の使用で判明する箇所で収まっているのが確認できました。この結果を見るとショップ独自で導入したapkファイル等は無いようです。

どうやってカスタムされたか

システムをいじるとなれば、root権限やbootloaderのアンロックが必要になりますが、システム内にroot権限が必要なファイルは用意されていませんでした。bootloaderの状態を確認してみましょう。

fastboot oem device-info
...
(bootloader) Device tampered: false
(bootloader) Device unlocked: false
(bootloader) Device critical unlocked: false
(bootloader) Charger screen enabled: false
(bootloader) Display panel:
OKAY [ 0.059s]
finished. total time: 0.060s

上記の通りロックされた状態でした。リロックされた可能性もありますが、手間を考えるとEDLモードで無理矢理boot,system,custパーティションを書き換えてROMを導入したと考えられます。

結果

いくらでもapkに悪意のあるコードを追加で仕込むことは出来ると言われていますので、断言は出来ませんが、この改編箇所を見る限り不要なサービスが仕込まれていることも無さそうなので、安全性の面で言えば公式ROM以下にはなりますが、そこらに転がっているROMレベルの信頼性かと思います。

セキュリティが気になるなら中華端末には手を出さないと思いますし、特に気にせず利用して良いと思われます。

この投稿へのコメント

  1. Toyoda said on 2016年10月3日 at 05:53

    コメント失礼いたします。以下のサイトで、Gearbest のROMがデフォルトブラウザーを怪しいブラウザに置換し、フィッシングサイトへ誘導するウィンドウを強制的に開くという事象が複数報告されています。これはどのようにして起こっているのでしょうか。ご教示いただけますと幸いです。
    http://en.miui.com/thread-351119-1-1.html

    • heli0us said on 2016年10月3日 at 12:11

      ROMファイルを見てみないとわかりません。
      推測ですが、おそらくGearbest自体がROMファイルをインストールを行っているのではなく
      問屋が作業を行っていると思うので、同じ購入先でも当たり外れみたいなのが発生するかと考えています。

      一応公式のmiuiでも広告配信システムは搭載されていますが、おそらくこんなに行儀が悪いものではないでしょうし、是非実機を見て比較してみたい物です。

      • Toyoda said on 2016年10月4日 at 07:13

        お忙しいところご回答ありがとうございます。確かに、同じ機種でもOfficial ROMを焼くのに成功した例とそうでない例があり、Gearbestに納入している業者のちがいと考えれば説明がつくようにも思われます。現在、以下のスレッドにて、vendor ROMについてのXiaomiの見解に関する質疑が行われています。
        http://en.miui.com/thread-374265-1-1.html

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL