Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
自作バイナリを動かす「入口」8選
Search
Takumi Sueda
October 11, 2026
Technology
98
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
自作バイナリを動かす「入口」8選
Okayama Revengers LT 大会
第7回「涼しゅうなってきたけぇ、そろそろLTするかぁ!」
Takumi Sueda
October 11, 2026
More Decks by Takumi Sueda
See All by Takumi Sueda
三人寄ればチューリング完全
puhitaku
6
3.9k
これまでのハード遊びまとめ ノンストップ40分スペシャル
puhitaku
1
360
令和最新版 OpenWrt を 22 年前のルーターで動かす
puhitaku
0
7.2k
組み込みLinuxの時系列
puhitaku
4
2k
電子辞書にステータスバーを実装する
puhitaku
0
450
知育おもちゃの遊び方 Lv. 999
puhitaku
5
3.6k
ルーターでプレゼンする
puhitaku
1
8.5k
AST as Black Magic
puhitaku
0
230
次世代の足下を舗装するコミュニティ
puhitaku
6
2k
Other Decks in Technology
See All in Technology
使いこなすために知っておきたい Azure SRE Agent アンチパターン
torumakabe
2
410
Lambda MicroVMsが分からなすぎたので使い所を1から考えてみた
tsukuboshi
2
420
自主式軟體工廠
philipz
0
240
私の推しは「聞いてから進む」AIです -AI-DLCに一人でアプリを作らせた話
yama3133
1
180
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
440
ai_cording_with_k8s_knowledge.pdf
mochizuki875
1
310
子育てエンジニアの可処分時間が減っても成長を諦めない戦い方
sudoakiy
3
2.9k
予測不能な実行エージェントを安全にサクッと試せるサンドボックス環境の話
sansantech
PRO
0
130
AgentCoreで実践するハーネスエンジニアリング
yakumo
1
290
事業活動を AI Ready にする攻めと守りのデータエンジニアリング / data-engineering-for-ai-ready-business
pei0804
5
1.9k
UniFi(ユニファイ)AIカメラの現場活用
ludicmind
1
170
OpenSharing について熱く語る〜AI アセットの共有について〜
kameitomohiro
0
240
Featured
See All Featured
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
610
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
510
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
460
The Curious Case for Waylosing
cassininazir
1
560
Music & Morning Musume
bryan
48
7.4k
Design in an AI World
tapps
1
350
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
260
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
260
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Transcript
自作バイナリを動かす「入口」8選 末田卓巳 aka @puhitaku Okayama Revengers LT 大会 第7回「涼しゅうなってきたけぇ、そろそろLTするかぁ!」
自己紹介 末田 卓巳 Takumi Sueda @puhitaku • 岡山県出身 → 千葉
→ 東京 → 岡山 • ものづくり屋の個人事業主 • セキュリティキャンプ講師 • 執筆: 日経 Linux、WEB+DB PRESS 趣味 • リバースエンジニアリング • 低いレイヤーで遊ぶ • DIY: 3D プリント、木工, etc. 2
はじめに 3 何らかの汎用計算機が載った物体を目の当たりにすると… AI による生成画像
はじめに 4 自分で好きに操りたい!
はじめに 5 自分で好きに操りたい! …と私はいつも思う
はじめに 6 🤔 💭 ? では具体的にはどうすれば好きなプログラムが動くのか?
はじめに 7 今日は数ある「自作のバイナリを動かす入口」の中から 8つの例を紹介します
入口 #1 8 入口 #1 内部ストレージを直接書き換える
入口 #1 内部ストレージを直接書き換える SoC やマイコンの内外に書いてあるプログラムを電気的に直接書き換え る方法。 • 内部 Flash: JTAG
等で書き換える。アンチタンパリング機能で塞が れていることもある • NAND/NOR Flash: 最も一般的。IC クリップやはんだ付けでROM ライターを接続し読み書きするほか、JTAG も使える • eMMC, SD: 配線にはんだ付けし SD カードリーダーか ROM ライ ターを繋ぐ • USB メモリ: パソコンに挿せば Mass Storage として読める 基板上のストレージの電源ラインを切って電源を吸われないようにする か、SoC のクロックを止めて電源だけ流させる等の工夫が通常必要。 9
入口 #2 10 入口 #2 隠れた起動順序を使う
入口 #2 隠れた起動順序を使う 「OS の入った eMMC が内蔵されていて、SD カードスロッ トが備わったデバイス」で主に有効。 SoC
から見れば SD と eMMC は同じペリフェラル(入出 力)で読み書きするほぼ等価のデバイス。リセットを抜けた 後の起動順序に eMMC が選択されていると、eMMC より 前に SD を読みに行くケースがある。 例えば知育タブレット「すみっコパッド」(右図)の場合、 SD に OS イメージを書いて差し込み起動するだけで自力ビ ルドのブートローダーとカーネルが動かせる。 11
入口 #3 12 入口 #3 内部ストレージを動作不可にする
入口 #3 13 内部ストレージを動作不可にする 当然ながら、ブートローダーやカーネルが入ったストレージ が読み取れなければ SoC は起動を継続できない。 本来読めるはずのストレージが読めなかった場合、起動シー ケンスの段階に応じて様々な現象が起きる(SoC
によって異 なる)。その結果好きなバイナリを流し込む口が開く場合が ある。 • Boot ROM(リセット直後): USB リカバリーが起動する • ブートローダー (U-Boot): Shell にフォールバックして好 • きなコマンドが呼び放題になる eMMC のクロックに接続されたピンを カーネル (Linux): initramfs で停止 GND に落とし動作を止めている様子
入口 #4 14 入口 #4 ブートローダーを騙して自作バイナリを起動させる
入口 #4 15 ブートローダーを騙して自作バイナリを起動させる ガジェットの製造時の書き込みや修理対応のために、SD カード等の外部ストレージに所定の置き方でバイナリを置く とそれを認識して実行するような機能がブートローダーに実 EDSAxEXE.BIN 装されていることがある。 NK
image ヘッダ 例えば電子辞書 SHARP Brain の場合、Windows CE の ブートローダーが認識できる形式の "EDSAxEXE.BIN" とい うファイルを置くとそれを起動する。 u-boot.bin (.text) つまり、U-Boot や Linux のバイナリをその形式に偽装して SD カードに置くと… EDSAxEXE.BIN の構造
入口 #5 16 入口 #5 ブートローダーの TFTP アップデート機能を使う
入口 #5 17 ブートローダーの TFTP アップデート機能を使う 無線ルーターなどのネットワーク機器でよく使われる方法。 ブートローダーの起動ログに「〇〇キーを押すと TFTP download
を実行する」などと表示されていれば使える。 TFTP は FTP のようにパス指定が可能だが極めてシンプル に削ぎ落としたプロトコルで、ブロックに分割したファイル の送受信ができる。 機器側が TFTP client になる場合と TFTP server になる場 合があり、それに応じて開発マシンに client か server を立 ててバイナリを送り込む。 TFTP で U-Boot を送りつけたら 誤って画面の絵が格納されている箇所に書いてしまい バイナリが意図せず「可視化」された時の画像
入口 #6 18 入口 #6 ブートローダーの設定をいじって ブートシーケンスを捻じ曲げる
入口 #6 19 ブートローダーの設定をいじる OS が起動した後、ブートローダーの設定が書かれている箇 所を好きに読み書きできる場合に利用可能な方法。 U-Boot の場合は env
という領域に起動時に実行されるコマ ンド列が書かれていて、bootcmd という値をいじれば起動 時の流れを変えられる。CRC チェックが走る場合が多いの で、その場合は CRC も書き換える必要がある。 なお古い Android 等では DirtyCoW などで root 権限を奪 取すれば好きにストレージが書けるためこの方法が活きる。 ※ DirtyCoW は立派な脆弱性で悪用厳禁!!自分が所持す るデバイスでのみ行うこと!! 同手法を使い、進研ゼミ「チャレンジパッド」で Debian の動作に成功した時の様子
入口 #7 20 入口 #7 DRAM にカーネルやブートローダーを置いて ジャンプする
入口 #7 21 DRAM に置いてジャンプする Windows CE や RTOS など、特権命令が気軽に呼べるおお
らかな環境で有効な方法。 ジャンプとは、プログラムカウンタ(CPU が次に解釈し実行 するアドレス)を書き換えること。DRAM にブートローダー 等を置いてその先頭にジャンプすれば、元のカーネルを脱出 して好きなものが実行できる。 ジャンプ先のバイナリは「起動初期の物理アドレス空間に対 する絶対アドレス配置」を想定しているため、割り込みを無 効化し、キャッシュをクリアし、MMU を切り、事前に決め た位置に正確にジャンプする。これらには特権が必要。 電子辞書 SHARP Brain にて 同手法で U-Boot を起動する瞬間の様子
入口 #8 22 入口 #8 バッファオーバーフロー等を利用し システムを改変する
入口 #8 23 BOF 等を利用しシステムを改変する バッファの境界を無視した書き込みを行ってしまうなどのバグを抱えた プログラムを見つけた場合に有効な方法…だが、脆弱性として扱い報告 すべき対象であることも多いので推奨しない。ここではあくまで技術的 興味として紹介する。 ゲーム機の
PS3 で発見された "PSJailbreak" は、起動時に USB で 巨大な USB descriptor を流し込んで関数ポインタを書き換え、カー ネル内の一部処理にパッチを当てるコードを実行させ、未署名のバイナ リを実行可能にした。 このほか、Apple A シリーズの Boot ROM に存在した USB 関連の use-after-free、Google Nest Hub の U-Boot に存在した USB Mass Storage の BOF などシステム書き換えに至った例は数多い。 高価だった PSJailbreak の安価な再実装品。 はんだ付け無しでデバッグメニューを有効化できる 同 exploit は当時大変注目された Minimus AVR USB PSGroove - PS3 Homebrew and Backups - PSJailbreak by RetroGameTech www.youtube.com/watch?v=wIhXu6qu9qM
おわりに 24 本日紹介した「入口」一覧 1. 内部ストレージを直接書き換える 2. 隠れた起動順序を使う 3. 内部ストレージを動作不可にする 4.
ブートローダーを騙して自作バイナリを起動させる 5. ブートローダーの TFTP アップデート機能を使う 6. ブートローダーの設定をいじってブートシーケンスを捻じ曲げる 7. DRAM にカーネルやブートローダーを置いてジャンプする 8. バッファオーバーフロー等を利用しシステムを改変する
おわりに 25 身近なハードウェアに興味が湧いたら そこにはたくさんの「入口」が隠れていることを ぜひ思い出してみてください