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
150
電子辞書は任意バイナリの夢を見るか
情報科学若手の会第54回 ナイトセッションLT
Chiharu Shirasaka
September 26, 2021
Tweet
Share
More Decks by Chiharu Shirasaka
See All by Chiharu Shirasaka
電子辞書は任意バイナリの夢を見るか? ver1.1
pepepper
0
280
Other Decks in Programming
See All in Programming
見た目から始める生産性向上
ikumatadokoro
10
1.5k
新宿ダンジョンを可視化してみた
satoshi7190
3
420
CDKコントリビュートの最初の壁を越えよう! -簡単issueの見つけ方-
badmintoncryer
3
350
Direct Style Effect Systems The Print[A] ExampleA Comprehension Aid
philipschwarz
PRO
0
300
Site Reliability Engineering for GMO
pyama86
9
1.1k
Open AI APIを使う前に知っておきたいアカウントTier の話
akki_megane
0
110
Introducing Kotlin Multiplatform in an existing mobile app - Workshop Edition | AndroidMakers Paris
prof18
0
170
“Seeing Like a Programmer”—Resiliency, Limits, and Moral Hazards in Software Engineering (LambdaConf 2024)
chriskrycho
0
320
Ruby GitHub Packages
bkuhlmann
0
650
Three ways to use AI on Android: The Good, the Bad and the Ugly
marxallski
0
110
使ってみよう Azure AI Document Intelligence
kosmosebi
2
370
Implementing Design Systems in Swift
seyfoyun
2
500
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
217
8.6k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
51k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
117
18k
Practical Orchestrator
shlominoach
183
9.7k
Building Flexible Design Systems
yeseniaperezcruz
320
37k
Web development in the modern age
philhawksworth
203
10k
What's in a price? How to price your products and services
michaelherold
238
11k
Done Done
chrislema
178
15k
Visualization
eitanlees
137
14k
What the flash - Photography Introduction
edds
64
11k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
242
1.2M
Six Lessons from altMBA
skipperchong
22
3k
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号 • 退化した •
今後に期待
まとめ • 想定外の動作をさせるのは難しい • 思い通りに動くと嬉しい