2021年に発売された新世代の SHARP Brain はハードウェアを一新して未知の OS を搭載してリリースされました。発売日に購入してこれらの変更を確認した後、私が発足した電子辞書ハックコミュニティ Brain Hackers のメンバー同士で協力しリバースエンジニアリングを進めました。
OS は後に μITRON ベースの RTOS と判明しましたが、追加アプリの仕様*1が当初不明だったためまず自作バイナリを動かす試みから始まりました。幸いにも外部から追加できるアプリのバイナリは先頭から機械語が並んでいる素朴なバイナリであることが判明したため、アセンブリ(後に libc のない簡素な C プログラム)で無限ループするか即座に return するだけのシンプルなバイナリを作成し実機で実行することに成功しました。
OS の API(Syscall, libc)も内部のページテーブルもまったく不明なため、画面の描画はおろか GPIO すら操作できないという状況でした。それを踏まえ考案した「正常に動けば無限ループし、異常が発生したら本体を再起動する」という1ビットの出力のみでリバースエンジニアリングを実行しました。仮想アドレス→物理アドレスの対応を探るための二分探索などを経て、ついに発売から1ヶ月未満で U-Boot の動作を達成できました。
2021年11月現在ではメンバーの貢献もあり、Linux kernel の実機動作も成功しています。
ウオオアアー!!! #dicthack pic.twitter.com/jV0glXidZK
— Takumi Sueda (@puhitaku) 2021年3月7日
解説記事
Kernel/VM 探検隊における発表をブログ形式にしたものです。
『リセットとフリーズで解析する電子辞書リバエン記』
— Takumi Sueda (@puhitaku) 2021年11月20日
未知の OS でギリギリの解析に成功し、SHARP Brain の最新モデルで Linux を動かすことに成功しました。その記録です。 #kernelvm https://t.co/UWxMf7dpOD
リポジトリ
github.com/brain-hackers/u-boot-brain
*1:以前は Windows CE が動いていたため exe (PE) だった