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
電子辞書は任意バイナリの夢を見るか
Search
Chiharu Shirasaka
September 26, 2021
Programming
0
210
電子辞書は任意バイナリの夢を見るか
情報科学若手の会第54回 ナイトセッションLT
Chiharu Shirasaka
September 26, 2021
Tweet
Share
More Decks by Chiharu Shirasaka
See All by Chiharu Shirasaka
ハンディターミナルでLinuxを動かしてみた
pepepper
1
1.4k
電子辞書は任意バイナリの夢を見るか? ver1.1
pepepper
0
340
Other Decks in Programming
See All in Programming
ペアプロ × 生成AI 現場での実践と課題について / generative-ai-in-pair-programming
codmoninc
1
12k
Team operations that are not burdened by SRE
kazatohiei
1
300
Discover Metal 4
rei315
2
120
High-Level Programming Languages in AI Era -Human Thought and Mind-
hayat01sh1da
PRO
0
720
地方に住むエンジニアの残酷な現実とキャリア論
ichimichi
5
1.5k
都市をデータで見るってこういうこと PLATEAU属性情報入門
nokonoko1203
1
590
プロダクト志向なエンジニアがもう一歩先の価値を目指すために意識したこと
nealle
0
120
Cursor AI Agentと伴走する アプリケーションの高速リプレイス
daisuketakeda
1
130
すべてのコンテキストを、 ユーザー価値に変える
applism118
3
1.2k
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
6
1.9k
git worktree × Claude Code × MCP ~生成AI時代の並列開発フロー~
hisuzuya
1
540
システム成長を止めない!本番無停止テーブル移行の全貌
sakawe_ee
1
160
Featured
See All Featured
Designing Experiences People Love
moore
142
24k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
Adopting Sorbet at Scale
ufuk
77
9.4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
125
52k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
5
240
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Bash Introduction
62gerente
614
210k
Producing Creativity
orderedlist
PRO
346
40k
Become a Pro
speakerdeck
PRO
28
5.4k
Transcript
電子辞書は 任意バイナリの夢を見るか?
自己紹介 名前:pepepper(ぺぺっぱー) • Brain掲示板時代:例の電子辞書 • 地方公立大学生(2年) 主な制作物 • nkbin_maker •
BrainLILO • ExplorerOpener
電子辞書 • SHARP製 「Brain」シリーズ • SoC: TMPA910CRAXBG(ARMv5)/ i.MX28(ARMv5)/ i.MX7 ULP(ARMv7)
• RAM: 64MB/128MB • ストレージ: 内蔵フラッシュメモリ/SDカード • OS: Windows CE 6.0/ uITRON? • 追加アプリ機能 • 今回のメインテーマ (参考: https://brain.fandom.com/ja/wiki/Brain%E6%A9%9F%E7%A8%AE%E5%88%A5%E8%A7%A3%E8%AA%AC )
本題―1 Windows CEで遊ぼう
なんか勝手アプリが起動しないんだけど • 2017年 PW-Sx4シリーズの発売 • 掲示板(新Part11)での報告 • 様々な憶測 • 新OS?(←この時点では偽)
• プロテクト? • ホワイトリスト? • Index.din?(←これも偽) • こいつは困った (本題ー1はhttps://brainbbs.ddns.net/を参照すると詳細がわかりやすい)
探りを入れてみよう • なけなしの金でリバーシを購入(のちにスライドパズルも) • Index.dinは・・・× • AppMain.exeは・・・ • 最初の方は× •
途中から〇 • 一筋の光 12の>>407 (https://brainbbs.ddns.net/test/read.cgi/edbrain/1493904613/407)
EXEファイルの構造 • ヘッダーは実行に必要な情報 • アーキとかエントリポイントとか • コードは機械語 • エントリポイントは実行開始点
抜け道という名の茨の道 • チェック終端<エントリポイントなら・・・ • チェックを回避して任意の命令が置ける! • 関数アドレスの壁 • 勝手に付く初期化ルーチン •
埋め込むプログラムのアドレス≠埋め込まれた状態のアドレス • ここで一度力尽きた(2017/11/12) • アップデータの解析に逃げる
完全勝利(2018/09/17) • 初期化ルーチンを無効化 • 正確にはエントリポイントをmain()にした • 関数のアドレスを他の機種から取得 • 動的リンカなんか知らん •
/Windows/explorer.exeを呼ぶ • Feel free to play • その後リバーシがストアから消えるが・・・ • SH6 ver3.7アップデート
プロテクト4年目の真実 • Index.dinは関係ない • ただし壊れたindex.dinだと全機種× • これが誤解の原因 • ファイルサイズとハッシュのハードコード •
マジかよ • 単独バイナリでのプロテクト貫通 • これがExplorerOpener • ゴミデータでハッシュを無理やり合わせる
本題―2 OSの壁を越えて
Linux起動しようぜ • SH4壊れた • USBロードモード試してただけなのに・・・ • なぜかバックライトだけ死んでた • しばらく離れていた
(続き)
(続きの続き) • えっ???? • すぐにコンタクトをとる • これは現在非アクティブな別垢
分解なしでロード • 再コンタクト • 実は過去にローダーを試作 • No Serial, No Log
• 結構長め(1か月?)の試行錯誤があった
方法1. nkbin_maker • 先に完成した方 • ベースは bsd-ce • BSD カーネルを
nk.bin にパック • ブートローダーに U-Boot を起動させる • なんで動いてるかはよくわからん • ブートローダーの動作がわからんので
方法2. BrainLILO • 先に開発は始まってたけど完成は後 • LInux LOader ではない • ベースは
ResetKit • Windows CEのソフトリセット用 • 実行中のカーネルへの配慮 • 安全なアドレスへのプリロード→コピー
本題ー3 新機種怖い
新機種・・・ • 今年のBrainは発売が遅かったらしい • puhitaku氏が発売日凸 • SoC違う! • OS違う! •
アプリのバイナリ形式違う! • ローダーも書き直し・・・
SoCが違う • メモリマップが変わる • IOとか物理メモリアドレスの再調整 • システムが変わる • 割り込みが変わる •
電源管理が変わる
OSが違う • メモリマップが変わる • 仮想アドレス-物理アドレスの紐づけの方 • APIが変わる • しかも未知 •
実行ファイル形式が違う
新ローダー開発 • U-Boot~Linux途中まではブート • 途中でタイマが死ぬ • 試作2号 • 退化した •
今後に期待
まとめ • 想定外の動作をさせるのは難しい • 思い通りに動くと嬉しい