Upgrade to Pro — share decks privately, control downloads, hide ads and more …

電子辞書は任意バイナリの夢を見るか? ver1.1

Chiharu Shirasaka
October 31, 2021
310

電子辞書は任意バイナリの夢を見るか? ver1.1

Chiharu Shirasaka

October 31, 2021
Tweet

Transcript

  1. 自己紹介 名前:pepepper(ぺぺっぱー) • Brain掲示板時代:例の電子辞書 主な制作物 • nkbin_maker • BrainLILO •

    ExplorerOpener • リバーシ方式の派生 • boot4u(新機種ローダー)の前半部分 Twitter(@pepepper_cpp)のアイコン
  2. 電子辞書 • SHARP製 「Brain」シリーズ • 追加アプリ機能 • 公式ストアアプリ • 勝手アプリ

    (参考: https://brain.fandom.com/ja/wiki/Brain%E6%A9%9F%E7%A8%AE%E5%88%A5%E8%A7%A3%E8%AA%AC ) 第一世代 第二~四世代 第五世代 SoC TMPA910CRAXBG(ARMv5) i.MX28(ARMv5) i.MX7 ULP(ARMv7) RAM 64MB 128MB ストレージ 内蔵フラッシュメモリ/SDカード OS Windows CE 6.0 uITRON
  3. 抜け道という名の茨の道 • チェック終端<エントリポイントなら・・・ • チェックを回避して任意の命令が置ける! • 関数アドレスの壁 • 勝手に付く初期化ルーチン(hogeCRTStartup) •

    埋め込むプログラムのアドレス≠埋め込まれた状態のアドレス • ライブラリ関数アドレス参照のズレ • ここで一度力尽きた(2017/11/12) • アップデータの解析に逃げる
  4. プロテクト4年目の真実 • Index.dinは関係ない • ただし壊れたindex.dinだと全機種× • これが誤解の原因 • ファイルサイズとハッシュのハードコード •

    マジかよ • 単独バイナリでのプロテクト貫通 • これがExplorerOpener • ゴミデータでハッシュを無理やり合わせる • 強化プロテクトにも対応!
  5. 分解なしでロード • 再コンタクト • 実は過去にローダーを試作 • No Serial, No Log

    • brain-hackersのもとになる鯖 • 気づけば一周年 • 結構長め(1か月?)の試行錯誤があった
  6. 方法1. nkbin_maker • 先に完成した方 • ベースは bsd-ce • BSD カーネルを

    nk.bin にパック • ブートローダーに U-Boot を起動させる • なんで動いてるかはよくわからん • ブートローダーの動作がわからんので
  7. 方法2. BrainLILO • 先に開発は始まってたけど完成は後 • 開発中に文鎮から脱出 • LInux LOaderではないだろのツッコミはナシで •

    ベースは ResetKit • Windows CEのソフトリセット用 • 実行中のカーネルへの配慮 • 安全なアドレスへのプリロード→コピー
  8. 新ローダー開発 • U-Boot~Linux途中まではブート(9/26時点) • 途中でタイマが死ぬ • 試作2号 • 退化した •

    Kernelのverを上げて解決(10/17) • 割り込みを扱うのは面倒 • boot4uとしてリリース