逆アセンブルの基礎
GhidraとIDA
「逆アセンブルの基礎」はCoddyKit上の無料Ethical Hacking Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはEthical Hacking Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ethical Hacking Academyコースには全4レッスンが含まれています。
逆アセンブルとは
逆アセンブルは、バイナリのマシンコードを人間が読めるアセンブリ命令に変換します。CPUが実行する内容を正確に読み取れるようになります。
マルウェアでは常にそうであるように、ソースコードが利用できない場合に不可欠です。
逆アセンブルとデコンパイル
逆アセンブルではアセンブリが生成されます。デコンパイルではさらに進んで、高水準のC風擬似コードをおおよその形で再構成します。
擬似コードは素早く読め、アセンブリは正確です。アナリストは必要に応じて両方を使い分けます。
Ghidra
Ghidraは、NSAが開発した無料のオープンソースリバースエンジニアリングスイートです。多くのアーキテクチャを逆アセンブルでき、強力なデコンパイラーも備えています。
無料で高機能なため、多くのアナリストにとって最初に使う定番ツールです。
IDA Pro
IDA Proは長年使われている商用標準で、強力な逆アセンブラーと、Hex-Raysプラグインによるデコンパイラーで知られています。
IDA Freeのほか、Binary Ninjaやradare2/Cutterなどのツールも人気の選択肢です。
バイナリの読み込み
サンプルをツールにインポートすると、自動解析によって関数、クロスリファレンス、文字列などが特定されます。
ツールは、エントリーポイントや興味深いインポートを起点として、移動しながら調べられるプログラムのマップを作成します。
アセンブリを読む
アセンブリ命令は、データを移動させたり処理したりします。x86でよく使われる命令には、次のようなものがあります。
mov:データのコピーpush / pop:スタック操作call / ret:関数の呼び出しと復帰cmp / jmp / je:比較と分岐
mov eax, [ebp-4]
cmp eax, 0
je short loc_401050クロスリファレンス
クロスリファレンス(xrefs)は、関数や文字列がどこで使われているかを示します。CreateRemoteThreadのような疑わしいAPIへのxrefsを見つければ、関連するコードへすぐに移動できます。
これにより、コードを上から順に読むのではなく、動作を手がかりにしてコードをたどれます。
API呼び出しを追跡する
インポートされた Windows API 呼び出しから意図が分かります。VirtualAlloc、WriteProcessMemory、CreateRemoteThreadの順に現れるのは、典型的なプロセスインジェクションの手順です。
このようなパターンを認識することが、マルウェアリバースエンジニアリングの核心です。
グラフビュー
逆アセンブラには、基本ブロックとそれらの間の分岐を表示するグラフビューがあります。これにより関数の制御フローが可視化され、ループや条件分岐を簡単に追えるようになります。
複雑なロジックの場合、線形の命令一覧よりもはるかに読みやすくなります。
デバッグとの組み合わせ
静的逆アセンブルはデバッガと相性がよい方法です。コードが難読化されていたり自己書き換え型だったりする場合は、ブレークポイントを設定して実行時にステップ実行し、実際の命令を確認できます。
この動的解析への橋渡しは、パックされたサンプルの解析で重要です。詳しくは次のレッスンで扱います。
名前変更と注釈付け
関数や変数の意味を理解したら、逆アセンブラ上で名前を変更し、コメントを追加します。sub_401000をdecrypt_configに変更するだけで、その後の解析がはるかに容易になります。
このように段階的にラベルを付けることで、アナリストはマルウェアサンプル全体のロジックを少しずつ再構築していきます。
クイックチェック
Ghidra の主な 2 種類の出力の違いを思い出してください。
まとめ
これで逆アセンブルの基本を理解できました。
- 逆アセンブルではアセンブリが生成され、デコンパイルでは擬似コードが生成されます。
- Ghidra(無料)とIDA Proが主なツールです。
- クロスリファレンスとAPI 呼び出しのパターン(インジェクションの手順など)を使うと、挙動を手がかりに解析対象をたどれます。
- グラフビューで制御フローを可視化し、難読化されたコードにはデバッガを組み合わせます。
次はアンパックによってパッカーを攻略します。
よくある質問
「逆アセンブルの基礎」レッスンは無料ですか?
はい。「逆アセンブルの基礎」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ethical Hacking Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ethical Hacking Academyコースには全4レッスンが含まれています。
「逆アセンブルの基礎」で何を学びますか?
GhidraとIDA ブラウザで直接実行するハンズオンコードでEthical Hacking Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ethical Hacking Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのEthical Hacking Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「逆アセンブルの基礎」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このEthical Hacking Academyレッスンでコードを書いて実行できますか?
はい。すべてのEthical Hacking Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。