動的解析
どうてきかいせき概念
実際に動いているプログラムの挙動を追いかけて仕組みを解き明かす手法。デバッガでCPUのレジスタやメモリを1ステップずつ追う、システムコールやネットワーク通信を記録するなど。暗号化・難読化で静的解析が阻まれる場合の次の一手になる。
概要
動作しているソフトウェアの動きを実際に追跡し、その仕組みを解析していく手法。プログラムを止めて分解する静的解析に対し、動かしながら観察するアプローチ。
種類・系譜
用いるツールは対象によって変わる。デバッガはプログラムを1ステップずつ実行し、CPUのレジスタやメモリ、アセンブリコードの動きを直接追跡・変更するツールで、レトロゲームの解析でよく使われる。API・システムコールトレースはプログラムがOSに出す要求(ファイル書き換え、ネット通信、レジストリ変更など)を記録・可視化するもので、スマホアプリやデスクトップアプリの解析向き。ネットワークトラフィック解析は対象ソフトの通信内容をキャプチャするもので、Webアプリなどに使われる。
現在
静的解析だけでは対処できない、暗号化・難読化などの防御機構が施されたソフトウェアに対しては、動的解析が次の一手になる。一般的な解析の流れは静的解析が先で、動的解析は必要になった時に進む段階という位置づけ。
| 分野 | 解析 |
|---|---|
| 代表ツール | デバッガ・APIトレース・通信キャプチャ |
関連項目
- リバースエンジニアリング完成した製品やプログラムを分解・解析して、その仕組みや設計を読み解く行為。ソフトウェアでは逆アセンブルなどで内部の動きを追う。古いソフトやゲームの「痕跡」を読む作業の中核であり、この営みの最大の武器。
- 静的解析プログラムを一切実行せずに、ファイルそのものを分解・可視化して内部の構造やロジックを読み解く手法。逆アセンブラやデコンパイラ(Ghidra・IDAなど)で機械語を読む。防御機構のない古いソフトはこれだけで多くの情報が得られ、リバースエンジニアリングの入口になる。
- デバッガプログラムを1ステップずつ実行しながら、CPUのレジスタやメモリ、アセンブリコードの動きを直接追跡・変更できるツール。本来はバグ取りの道具だが、動的解析やレトロゲームの解析でも中核的に使われる。