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
バイナリダンプの模様を読む
Search
Satoru Takeuchi
PRO
July 01, 2026
Technology
89
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
バイナリダンプの模様を読む
以下動画のスライドです
https://youtu.be/0coXcaoMSjw
Satoru Takeuchi
PRO
July 01, 2026
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
119-多機能ファイルシステムBtrfs_のコピー.pdf
sat
PRO
1
68
Linuxカーネルの インタフェースは変わりうる?
sat
PRO
1
93
あなたの知らないバージョン命名規則
sat
PRO
3
900
Rook: Intro and Deep Dive with Ceph
sat
PRO
1
64
Machine Check Exception
sat
PRO
2
66
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
88
114-ファイルのshallow_copy.pdf
sat
PRO
2
57
113-Btrfsのスナップショット.pdf
sat
PRO
0
40
システム強制終了時にファイルシステムの整合性を保つ~ コピーオンライト編 ~
sat
PRO
0
77
Other Decks in Technology
See All in Technology
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
330
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
[2026-09-11]SREは誰のもの?運用エンジニアが始める 「SRE領域への越境」とチームの進化の軌跡 〜Road to NEXT CRE
tosite
0
290
DEFCON_CHV_CTF_Write-up.pdf
bata_24
0
150
「ピッケル本」日本語版は4.0(第6版)が出版されるべき / pickaxe4-nagoyark05
kakutani
1
170
Reactの設計論
uhyo
24
13k
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
350
CLIライブラリ開発を支える技術
htnabe
0
120
HHKBエバンジェリストになる方法
941
0
110
Railsのように考える: See through the Master
snoozer05
PRO
4
990
LTのテーマ どうきめてる?〜5つの型と私のやり方〜
yama3133
1
110
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
9
990
Featured
See All Featured
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
260
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
750
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
GraphQLとの向き合い方2022年版
quramy
50
15k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
280
Building the Perfect Custom Keyboard
takai
2
870
Faster Mobile Websites
deanohume
310
32k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
530
YesSQL, Process and Tooling at Scale
rocio
174
15k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
390
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
350
Transcript
バイナリダンプの模様を読む Jul. 2nd, 2026 Satoru Takeuchi X: satoru_takeuchi 1
• 任意のデータを数値や文字として出力したもの • 人間が与えた意味(どのオフセットどんなデータがあるとか)をツールが解釈せず、 データをただのバイト列という形で読むためのもの • 使用例 ◦ データが期待通りのかたちでバイト列に変換されているかの確認 ◦
データ破壊が起きた場合の調査 ◦ 何を意味しているのか分からないデータの解析 バイナリダンプとは 2
文字列データのバイナリダンプ 3 $ cat hello.txt Hello, world! $ xxd hello.txt
00000000: 4865 6c6c 6f2c 2077 6f72 6c64 210a Hello, world!. $
画像データ(png)の先頭部分 4 $ xxd -l 64 niconico.png 00000000: 8950 4e47
0d0a 1a0a 0000 000d 4948 4452 .PNG........IHDR 00000010: 0000 0058 0000 0050 0806 0000 009d c6b2 ...X...P........ 00000020: 5900 0000 0173 5247 4200 aece 1ce9 0000 Y....sRGB....... 00000030: 0004 6741 4d41 0000 b18f 0bfc 6105 0000 ..gAMA......a… $
ランダムデータの場合 5 $ dd if=/dev/random of=random.data bs=64 count=1 … $
xxd random.data 00000000: 2f5c 7530 7953 159a 4e13 516b a5be 618c /\u0yS..N.Qk..a. 00000010: d012 9c19 a8b8 ef57 dcdc ea85 4b86 fa80 .......W....K... 00000020: 1a45 9e84 bed4 38dd 93f2 17d0 a2aa 5d1d .E....8.......]. 00000030: 84f7 7fbb 8f74 734a 19e1 f754 1632 2e26 .....tsJ...T.2.& $
バイナリダンプの模様 • 同じような形式のバイナリダンプを眺め続けると次第に浮かんでくるもの ◦ バイナリダンプのどこにどんなデータがあるかが識別できる • 正式に定義された言葉ではない ◦ たぶん「目grep」という言葉のほうが有名 •
📝 メモリダンプと模様が見える男 ◦ https://note.com/hkamezawa/n/na4a01c712142 6
わたしが見える模様を実例として紹介 • Linuxカーネルのプロセスのスタックをバイナリダンプしたときに見える模様 ◦ スタックは関数呼び出し履歴やローカル変数などコンテキストを保存する領域 ◦ Linuxカーネルはプロセス (正確にはスレッド)ごとにスタックが存在する • 例えばどういうときに読むか
◦ Linuxカーネルに問題が発生して異常終了した (Windowsでいうブルースクリーン )ときにkdumpと言 うツールでシステムのメモリを全てファイルにダンプする ◦ 再起動後に、そのファイルを crashなどのツールを使って解析する ▪ 📝 その80 動作中にLinux環境の全メモリを見る ◦ 解析の一環としてプロセスのカーネルスタックをバイナリダンプして読むことがある • カーネル: Ubuntu 24.04同梱のLinux v6.8.0-117-generic • ややこしい話なので完全理解しようとせずフィーリングで観てほしい 7
状況 • ファイルコピーなどに使うddコマンドがwriteシステムコール呼び出しの延長で長時 間戻ってこない状態になる ◦ SIGKILLでも殺せない、いわゆる D state • その後システムが異常終了
• 異常終了に上記プロセスが関わっているかを知りたい ◦ 📝 わかりやすさのために通常の調査の流れと変えているところが多々あります 8
ddのスタックのバイナリダンプの抜粋 • スタックが0xffffd137cbfd8000から16KiBだとする 9
ぐっとにらむと模様が見える 10
ぐっとにらむと模様が見える 11 • プロセスごとに存在するアーキテクチャ依存の情報を保持する thread_infoという構造体へのポインタ • スタックの頂上(最低位アドレス)に置くことが決まっている
ぐっとにらむと模様が見える 12 • システムコールを呼び出し時のシステムコールおよびレジスタの値 (ピンクの部分) • CPU、およびentry_SYSCALL_64_after_hardwareが • スタックの底(最高位アドレス)から数十バイトに積むことが決まっている
ぐっとにらむと模様が見える 13 • entry_SYSCALL_64_after_hwframeからdo_syscall_64を呼んだ際の戻りアドレス • CPUのCALL命令を呼んだら自動的に積まれるようになっている
ぐっとにらむと模様が見える 14 • do_syscall_64のスタックフレーム(ローカル変数などが入る領域 )へのポインタ • カーネルのビルド設定 CONFIG_FRAME_POINTERが有効ならこうすると決まっている do_syscall_64から何らかの関数を呼んだときの戻りアドレス
ぐっとにらむと模様が見える 15 do_syscall_64から何らかの関数を呼んだときの戻りアドレス • do_syscall_64のスタックフレーム(ローカル変数などが入る領域 )へのポインタ • カーネルのビルド設定 CONFIG_FRAME_POINTERが有効ならこうすると決まっている •
スタックフレームのポインタらしきものとコードのアドレスらしきものが並んでいれば関数呼び 出しと、その後に呼ばれる呼び出し元のスタックフレームのアドレスが並んでいると推測できる • どのアドレスがどこの領域のものかはルールが決まっている ◦ https://github.com/torvalds/linux/blob/v6.8/Documentation/arch/x86/x86_64/mm.rst
ぐっとにらむと模様が見える 16 前述のルールに従うとこのデータ (0xffff8dc8105a5840)も恐らくカーネ ル内のコード or データであろうことがわかる
ぐっとにらむと模様が見える 17 • schedule関数からプロセスをスリープさせる __scheduleを呼んだ時の戻りアドレス • プロセスのスリープ前に呼ぶ関数は schedule → __scheduleなので、スタックフレームをこれ
以上先にたどれないときは、これらが最後 2つの関数だと推測できる
重要なポイント • 一種の覚えゲーである ◦ データのバイトオフセットやデータのパターンは何らかの仕様で決まっていることが多い • できると万能感と多幸感がある • たくさん同じようなデータを眺めていれば自然とできるようになる ◦
できる人は天才とかそういうことはない ◦ どこまで模様が鮮明なのかは人による • 普通はできなくても困らず、だいたいは楽できるコマンドがある ◦ 例: crashでスタックを見るにも関数呼び出し履歴を出力する btコマンド • 稀にバイナリダンプが最後の望みの綱ということがある 18
まとめ • バイナリダンプを眺めていると模様が浮かぶことがある ◦ 目grepができる、とも表現する • 模様が浮かぶと便利だが、いつも必要というわけではない • 慣れると誰でもできるが鮮明度は人それぞれ •
できるとかっこいいので、興味があればフォーマットが決まっている適当なバイナリ ダンプを何十個か眺めてみてほしい 19