🛠️

某B社の学習用タブレットのついての妄想

2024/06/23に公開1

こんにちは。
今回は、某B社の学習用タブレットについての妄想をまとめようと思います。

無駄

AOSP に Dcha くんを入れただけと言うのは分かりますが、不必要なアプリは全て入れなければ良いのでは?と思います。
「Contacts」は消すと一部の動作がバグるので別に良いと思いますが、「カレンダー」や「時計」、「ブラウザ」や「検索」、「カメラ」や「ギャラリー」、「音楽」は消しても何の問題も無いと思います。
更に、「Blocked numbers」等のそもそもタブレットには関係無いアプリも消すべきだと思います。
なんで「電卓」は消えてるんだよ...

設定

また、開発者向けオプションや不明ソースのラジオボタンを埋めるのではなく、そもそも論、設定アプリ自体を魔改造すれば良いのでは無いかと思います。
現状、「TouchUserSettings」はユーザーアプリとなっていますが、「com.android.settings」そのものをロックして、UserSettings しか開けられなくした方が良いと思うんですけどね。
もしくは、「DchaSystemSettings」と統合して、UserSettings と同様に、音量ボタンのマイナスを押しながら続行したときのみ管理画面へのボタンを表示し、ビルドに合ったパスワードを入力しないと開けなくすれば良いと思います。

APK のインストール

デバイスオーナー及びプロファイルオーナーは、Amazon Fire の「機能制限」の様に、初回起動時から「DchaService」に割り当てれば、サイレントインストールも出来ないので、ADBを使用されない限りアプリのインストールを防ぐ事が出来ます。
もっと言うと、installApp の署名チェック機能を再追加し、「User restriction」で、installApp の機能が呼び出された時以外は常にアプリのインストールを無効化すれば良いと思います。
この場合であればADB経由でインストールを試みたとしても、拒否されます。
また、CT2 の初期のみ署名チェックが実装されていますが、その機能自体が無くなった理由が、実装の仕方がゴリ押しだったからだと思います。
そもそもそのチェック対象の署名が、「DchaDataBox」のAPKの中にあります。
なのでAPKに埋め込むのではなく、最初のAPK(TouchSetupLogin)をDLする時に、一緒に許可する署名をDLすれば良いと思います。

ランチャー

APKの署名チェック機能と、これさえ実装すれば、間違いなく改造を防げると思っています。
それが、セットアップ前のランチャーを「DchaSetupWizard」にする事です。
これにより、AOSPの設定アプリを開く事は防げますし、デバッグ用にある test_environment_info に別のホストを書いたとしても、署名チェックまたはホストの文字列チェックで改造アプリを弾く事が出来ます。
とりあえず、AOSPのランチャーにすべきでは無いです。

GMS対策

「com.android.vending」や「com.google.androig.gms」と言うパッケージ名のアプリをシステムに入れておくべきです。
アクティビティやレシーバー、サービスやプロバイダーは必要ありません。
署名が違うので、そもそもインストールの時点で弾かれます。
確かSetupWizardにfirebase使ってた気もしますが、、、そんな事は知らないので埋めましょう。

ファームウェア

まず、フルOTAを堂々と配布するのはやめましょう。
また、セキュリティパッチやカーネルはちゃんと更新しましょう。

まとめ

  • デバイスオーナー:「DchaService
  • 既定のランチャー:「DchaSetupWizard
  • 設定アプリ:「DchaSystemSettings (要改良)」+「TouchUserSettings
  • 空パッケージの作成
    • com.android.cts.verifer
    • com.android.vending
    • com.google.android.gms
    • com.google.android.gsf
  • DchaService の改良
    • installApp
      • 署名チェック機能
        • 署名はユーザー領域に配置
        • ユーザー制限を応用
    • setPermissionEnforced
      • クラッシュするだけなら要らないだろ()
        しかも targetSdk が 22 なのだから尚更不要
    • uninstallApp
      • こちらもユーザー制限を応用

最後に

こうやって言うのは簡単だけど実際に行動に移すのは確かに簡単では無いと思います。
しかし、こう言う意見が無いと改良には繋がりません。
多少労力が大きくなってしまったとしても、やるべき事を100点満点中120点で結果が出ると嬉しいものです。

こう言う発想を妄想で終わらせるのではなく、いつか形に出来ると良いですね。

Discussion

みねクラみねクラ

とりあえずCT2のRootは簡単に取れるようにしておきたいですね!!
ちょっと頑張ってみます!