実行ファイルの読み込み


IDA Proは実行ファイルを読み込むと,そのファイルのフォーマットとプロセッサアーキテクチャの認識を試みる.例えば,画像の例ではファイル(notepad.exe)がIntel x86アーキテクチャのPEフォーマットを有するものとして認識される.携帯端末のマルウェアに対する解析を実行する場合を除いて,頻繁にこのプロセッサの種類を変更する必要はないだろう(携帯端末のマルウェアは多くの場合,様々なプラットフォーム上に作成される).

IDA Proにファイル(PEファイルなど)をロードすると,オペレーティングシステムローダによってロードされたかのように,プログラムがファイルをメモリ上にマップする.IDA Proはトップボックス内のBinary Fileオプションを選択することで,生のバイナリなどのファイルを逆アセンブルすることができる.マルウェアは時折シェルコードや追加データ,暗号化パラメータなどが付加されていたり,正規のPEファイルに対して実行ファイルを追加していたりするため,このオプションは有用である.また,マルウェアがWindowsまたはロードされたIDA Proによって実行されるときにこの追加のデータがメモリにロードされることはない.なお,シェルコードを含む生のバイナリファイルをロードする際には,バイナリファイルとしてロードしてそれを逆アセンブルするように選択する必要がある.

PEファイルは,メモリ内の適切なベースアドレスにロードされるようにコンパイルされており,Windowsローダが(アドレスが既に利用されているなどの理由で)その好ましいアドレスにロードできない場合,ローダはリベーシングとして知られる操作を実行する.これは推奨アドレスとは異なるアドレスにロードされやすい,DLLをロードする場合に頻繁に発生する.Manual Loadのチェックボックスにチェックを入れると,リベースが発生した時にファイルをロードする新しい仮想ベースアドレスを指定することができる.

デフォルトでは,IDA Proはその逆アセンブリ内にPEヘッダまたはリソースセクション(マルウェアが多くの場合,悪意あるコードを隠している場所)を含んでいない.マニュアルロードを選択した場合,IDA ProはPEファイルヘッダを含む各セクションをロードするかどうか1つずつ尋ねるため,これらのセクションが分析を逃れることはないだろう.

オプション

  • Load address
    • EXEファイルとバイナリファイルにのみ関連するオプション
    • ファイルがロードされるアドレスを指定する
    • 新しいEXEファイルに対しては"Manual Load"機能を使用するとよい
  • Load offset
    • バイナリファイルにのみ関連するオプション
    • セグメントの開始位置からのオフセットを指定する
    • 例えば,Load offsetが0x2700でLoad addressが0x1000に設定されていれば,ファイルの開始位置は1000:2700になる
  • DLL directory
    • IDAが参照されたDLLファイルを検索するためのパス
    • IDAがIDSファイルを発見した場合,DLLファイルを検索しないことに注意すること
  • Create segments
    • バイナリファイルにのみ関連するオプション
    • チェックされていない場合,IDAはセグメントを生成しない
  • Load resources
    • チェックされていない場合,IDAはNEファイルからリソースを読み込まない
  • Rename DLL entries
    • チェックされていない場合,IDAは序数によってインポートされたエントリ名を生成する
    • それ以外の場合は,IDAが意味のある名前にエントリ名をリネームする
  • Manual load
    • NE,LE,LX,ELFファイルにのみ関連するオプション
    • チェックされている場合,IDAがファイルの各オブジェクトに対するロードアドレスとセレクタ(ロードするかどうか)を尋ねる
    • 経験豊富なユーザのみ使用すること!
  • Fill segment gaps
    • COFFおよびOMFファイルにのみ関連するオプション
    • チェックされている場合,IDAはセグメント間のギャップを埋め,一つの大きなチャンクを生成する
    • このオプションは大きなオブジェクトファイルのロードを容易にする
  • Make imports section
    • PEファイルにのみ関連するオプション
    • チェックされている場合,IDAは.idataセクションの定義を"extrn"ディレクティブに変化してそれを切り捨てる
    • 残念なことに,.idataセクション内には時々追加のデータが存在しており,その関係でデータベースにいくつかの情報がロードされていない場合にはこの機能を無効化する必要がある
  • Create FLAT group
    • IBM PC PEファイルにのみ関連するオプション
    • チェックされている場合,IDAはFLATグループを自動的に生成して,セグメントレジスタのデフォルト値としてそのセレクタを使用する
  • Code segment
    • チェックされている場合,IDAはコードセグメントを生成する(データセグメントは生成しない)
    • 異なるコード/データセグメントのアドレススキームを使用するプロセッサ(例えば,Atmel AVR)に関連するオプションである
  • Loading options
    • ELF,Javaファイルにのみ関連するオプション
    • チェックされている場合,IDAは追加のローダオプションを尋ねる
    • 経験豊富なユーザのみ使用すること!
最終更新:2014年11月19日 13:56
添付ファイル