セキュリティ · 低レイヤー・システム
コンピュータのしくみ — アセンブリで読む CPU とスタック
自分の環境の objdump / gdb で、アセンブリを「書く」より「読む」に振ります。リバースエンジニアリング実務の核になる読解力を作ります。
- 実習
- localhost で実習
- 環境構築
- 重さ 1 / 3
- 前提
- sec-c 推奨(gcc/objdump/gdb が使えること)
- 倫理
- 第0章の法と倫理ゲートへの同意が必須です。
読み込み中…
x86-64 アセンブリを読めるようにします。自分の環境の gcc・objdump・gdb を使い、レジスタ・呼出規約・スタックフレームを観察します。「書く」より「読む」に力点を置きます。
章の一覧
- 未完了第0章はじめに — 読むための、アセンブリこのコースが「書く」ではなく「読む」に振っている理由を理解し、objdump/gdbで自分のコードのアセンブリを見る進め方を確認します。法と倫理ゲートに同意します。約5分
- 未完了第1章基本の文法 — レジスタと、基本命令レジスタがCPUの手元にある高速な記憶場所であることを理解し、mov/add等の基本命令をIntel記法で読みます。汎用レジスタの名前と、64/32/16/8bit幅の表記を押さえます。約9分
- 未完了第2章呼出規約とスタックフレーム — 関数はどう呼ばれるか小さなadd関数をobjdumpで逆アセンブルし、System V AMD64呼出規約(rdi/rsiで引数を渡す)とスタックフレームの構築(push rbp/mov rbp,rsp)・解体(pop rbp/ret)を、実物のコードで読みます。約12分
- 未完了第3章条件分岐とループを読むfor文をコンパイルしたアセンブリを読み、cmp命令とjmp/jle等の条件・無条件ジャンプが、if/forをどう表現するかを追います。実際に行番号を対応づけながらループの構造を読み解きます。約11分
- 未完了第4章まとめ — 読む力を、CTFの入口にレジスタ・呼出規約・スタックフレーム・分岐とループの読み方を畳みます。sec-cとつながる形で理解を固め、revとpwnという2つのCTFカテゴリへの土台を確認します。約3分
詰まったときはお助けページへ。章ごとのファイル一式をダウンロードして、途中から再開できます。