← トップ

Binary Analysis

バイト列から意味を復元する

フラッシュから吸い出したダンプ、ソースの失われた ELF、設定が化けた NVM3、巻き戻ったログ——組み込みの現場では「バイト列の意味を復元する」作業が絶えず必要になります。このシリーズは「バイト列には必ず構造がある」を出発点に、対象ごとの手順で構造を解き明かします。ダンプの取り方とバイトの読み方から始めて、ELF・HEX・Cortex-M イメージ・MCUboot・ファイルシステムという「入れ物」、NVM3・NVS・ログ・秘密情報という「データ領域」、Linux イメージ・逆アセンブル・動的解析、そして差分・自動化・ケーススタディまで一本でつなぎます。全 20 章に触って動かせるデモ(LIVE・計 20 点。SHA-256・CRC-32・エントロピーは本物の計算、16 進ダンプは実際にパース)と SVG 図版 52 点。まず公式ツールを試し、なければ自分で解く。ライブラリのソースが最強の仕様書。

第 I 部 — 基礎と道具

どんな対象でも、最初の 5 手順と読み方の基礎は共通です。

CH 01バイナリ解析とは何か目的・法・「固定→眺める→地図→解く→記録」の 5 手順。▶ LIVE CH 02道具箱hexdump・strings・binwalk・Python の 4 つを手足に。▶ LIVE CH 03バイト列を読む基本エンディアン・整数・文字・マジック・CRC。0xFF は消去済み。▶ LIVE CH 04ダンプを手に入れるSWD・SPI 直読み・ブートローダ。読み出し保護の見分け。▶ LIVE

第 II 部 — ファームウェアの入れ物

コードとデータが、どの形式で、どこに、どう配置されるか。

CH 05ELF ファイルセクションとセグメント、シンボル。生バイナリには戻せない。▶ LIVE CH 06HEX と SRECアドレス付きテキスト。上位アドレスは 04 レコード。▶ LIVE CH 07Cortex-M のイメージベクタテーブルから素性を復元。Thumb ビットとロードアドレス。▶ LIVE CH 08ブートローダとイメージ形式MCUboot のヘッダ・TLV・スロット状態。更新の段階を判定。▶ LIVE CH 09ファイルシステムFAT・LittleFS・SPIFFS。フラッシュ専用 FS の作り。▶ LIVE

第 III 部 — データ領域

設定・記録・秘密が、どう残るか。追記型ストレージという共通の型。

CH 10NVM3Silicon Labs の追記型キー値ストア。古い値が履歴に残る。▶ LIVE CH 11NVS 系ストレージESP-IDF NVS・Zephyr NVS。区画・世代・キーの共通パターン。▶ LIVE CH 12ログとリングバッファ巻き戻る記録を時系列に。シーケンス番号でソートが確実。▶ LIVE CH 13秘密情報の捜索鍵・証明書・資格情報の自己監査。読めたら脆弱性。▶ LIVE CH 14圧縮と暗号化の見分けエントロピーで領域を分類。展開できれば圧縮、なければ暗号。▶ LIVE

第 IV 部 — 実行ファイルと動的解析

Linux 機器、機械語、止まった瞬間のメモリ。

CH 15Linux 組み込みイメージU-Boot・カーネル・ルートFS。binwalk -e でまず割る。▶ LIVE CH 16逆アセンブルの基礎Ghidra の 3 設定。文字列・周辺レジスタからとっかかりを。▶ LIVE CH 17動的解析gdb・エミュレータ・スタックからのコールスタック復元。▶ LIVE

第 V 部 — 応用

比べる、仕組みにする、通しで追う。

CH 18差分と壊れたデータ操作前後の差分で未知の構造を解く。まず自分を疑う。▶ LIVE CH 19自動化とパーサstruct・construct・Kaitai。検証を組み込んで再現可能に。▶ LIVE CH 20ケーススタディ更新失敗・設定の化け・監査・素性不明の 4 つを通しで。▶ LIVE

目的別の近道

まず全体を掴む01 → 02 → 03 → 04
ファームの中身を知りたい04 → 07 → 08 → 16
設定・ログを調べたい03 → 10 → 11 → 12 → 18
セキュリティ監査04 → 13 → 14 → 19
Linux 機器04 → 15 → 16 → 17
ソースのない古いファーム04 → 07 → 16 → 17 → 19
現場で困っている20 のケースから逆引き
ぜんぶ01 → 20(推奨)