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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Chiharu Shirasaka Chiharu Shirasaka
October 31, 2021
370

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

Avatar for Chiharu Shirasaka

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としてリリース