Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
電子辞書は任意バイナリの夢を見るか? ver1.1
Search
Chiharu Shirasaka
October 31, 2021
390
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
電子辞書は任意バイナリの夢を見るか? ver1.1
Chiharu Shirasaka
October 31, 2021
More Decks by Chiharu Shirasaka
See All by Chiharu Shirasaka
ワープロって実は計算機で
pepepper
2
1.8k
ハンディターミナルでLinuxを動かしてみた
pepepper
1
1.7k
電子辞書は任意バイナリの夢を見るか
pepepper
0
240
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
200
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
WENDY [Excerpt]
tessaabrams
11
38k
[SF Ruby Conf 2025] Rails X
palkan
2
1.2k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
240
The browser strikes back
jonoalderson
0
1.4k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
320
Git: the NoSQL Database
bkeepers
PRO
432
67k
Transcript
電子辞書は 任意バイナリの夢を見るか? ば~じょん1.1
自己紹介 名前:pepepper(ぺぺっぱー) • Brain掲示板時代:例の電子辞書 主な制作物 • nkbin_maker • BrainLILO •
ExplorerOpener • リバーシ方式の派生 • boot4u(新機種ローダー)の前半部分 Twitter(@pepepper_cpp)のアイコン
電子辞書 • 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
Windows CEで遊ぼう(第四世代)
なんか勝手アプリが起動しないんだけど • 2017年 PW-Sx4シリーズの発売 • 掲示板(新Part11)での報告 • 様々な憶測 • 新OS?(←偽)
• プロテクト? • ホワイトリスト? • Index.din?(←これも偽) • こいつは困った
探りを入れてみよう • なけなしの金でリバーシを購入(のちにスライドパズルも) • Index.dinは・・・× • AppMain.exeは・・・ • 最初の方は× •
途中から〇 • 一筋の光 12の>>407 (https://brainbbs.ddns.net/test/read.cgi/edbrain/1493904613/407)
EXEファイルの構造 • ヘッダーは実行に必要な情報 • アーキとかエントリポイントとか • コードは機械語 • エントリポイントは実行開始点
抜け道という名の茨の道 • チェック終端<エントリポイントなら・・・ • チェックを回避して任意の命令が置ける! • 関数アドレスの壁 • 勝手に付く初期化ルーチン(hogeCRTStartup) •
埋め込むプログラムのアドレス≠埋め込まれた状態のアドレス • ライブラリ関数アドレス参照のズレ • ここで一度力尽きた(2017/11/12) • アップデータの解析に逃げる
完全勝利(2018/09/17) • 初期化ルーチンを無効化 • 正確にはエントリポイントをmain()にした • 関数のアドレスを他の機種から取得 • 動的リンカなんか知らん •
/Windows/explorer.exeを呼ぶ • Feel free to play
♯も仕事している • その後リバーシがストアから消える・・・ • 原理上別のアプリでもいいけど・・・ • 非エンジニアへの説明問題 • SH6 ver3.7アップデート(通称:令和アップデート)
• プロテクトの強化 • SH7も同様のプロテクト
プロテクト4年目の真実 • Index.dinは関係ない • ただし壊れたindex.dinだと全機種× • これが誤解の原因 • ファイルサイズとハッシュのハードコード •
マジかよ • 単独バイナリでのプロテクト貫通 • これがExplorerOpener • ゴミデータでハッシュを無理やり合わせる • 強化プロテクトにも対応!
OSの壁を越えて(第二~四世代)
前日譚 • SH4壊れた • Selftest Modeでの文鎮化 • USBロードモード試してただけなのに・・・ • なぜかバックライトだけ死んでた
• しばらく離れていた
Linux起動しようぜ
(続き) • エッッッッッ???? • 掲示板時代は夢物語 • すぐにコンタクトをとる • これは現在非アクティブな別垢
分解なしでロード • 再コンタクト • 実は過去にローダーを試作 • No Serial, No Log
• brain-hackersのもとになる鯖 • 気づけば一周年 • 結構長め(1か月?)の試行錯誤があった
方法1. nkbin_maker • 先に完成した方 • ベースは bsd-ce • BSD カーネルを
nk.bin にパック • ブートローダーに U-Boot を起動させる • なんで動いてるかはよくわからん • ブートローダーの動作がわからんので
方法2. BrainLILO • 先に開発は始まってたけど完成は後 • 開発中に文鎮から脱出 • LInux LOaderではないだろのツッコミはナシで •
ベースは ResetKit • Windows CEのソフトリセット用 • 実行中のカーネルへの配慮 • 安全なアドレスへのプリロード→コピー
新機種怖い(第五世代)
新機種・・・ • 今年のBrainは発売が遅かったらしい • puhitaku氏が発売日凸 • SoC違う! • 既存公式アプリも使用不可 •
OS違う! • アプリのバイナリ形式違う! • ローダーも書き直し・・・
SoCが違う • メモリマップが変わる • IOとか物理メモリアドレスの再調整 • システムが変わる • 割り込みが変わる •
電源管理が変わる
OSが違う • メモリマップが変わる • 仮想アドレス-物理アドレスの紐づけの方 • APIが変わる • しかも未知 •
実行ファイル形式が違う
新ローダー開発 • U-Boot~Linux途中まではブート(9/26時点) • 途中でタイマが死ぬ • 試作2号 • 退化した •
Kernelのverを上げて解決(10/17) • 割り込みを扱うのは面倒 • boot4uとしてリリース
Future • M4コア側RTOSブート • i.mx7ulpはM4コアのみのリセット不可 • 直接触れるのはA7コアのみ • 過去最高の異常ローディング •
BrainLILO機種判別
まとめ • 想定外の動作をさせるのは難しい • 思い通りに動くと嬉しい