メモリ領域にバイナリへのエントリ ポイントへの多数のポインタが含まれる組み込み CPU のバイナリ イメージがあります。これは、CPU が使用するバイナリの割り込みベクタ テーブルです。このメモリが何であるかを IDA に知らせるにはどうすればよいでしょうか。IDA が分析のエントリ ポイントを使用できるようにするにはどうすればよいでしょうか?
1 に答える
読み込んだバイナリ イメージに適したプロセッサを使用して IDB をセットアップしていると仮定します。
画像ファイルが未加工のファイル (つまり、ヘッダーなし) の場合、[オプション] -> [全般] の [逆アセンブリ] タブで、アドレスの疑わしさの下限/上限を定義できます。
このセットを使用すると、テキスト カーソルを最初のバイトに置き、'O' または 'Ctrl+O' を押すことで、このベクトルの最初の要素をオフセットに設定できます。「ユーザー定義」オフセットに対して「Ctrl+R」を実行することもできます (複数のオプションを含むダイアログが表示されます)。さまざまなオフセットはすべて、[編集] -> [オペランド タイプ] -> [オフセット] ->... で表示できます。
最初の要素が設定され、テキスト カーソルがその上にある状態で、テンキーの '*' キーを押して実際の配列を作成できます (ベクトル内の要素数がわかっている場合)。これにより、配列内のすべての要素に同じオペランド型情報が適用されます。この場合、オペランドはオフセットであるため、IDA は (自動的に) 参照されているバイトを分解しようとします。
注: 要素の値が疑わしい限界を超えた場合、オフセットにはなりません。
これが未加工のイメージで、バイナリに純粋なコードまたは純粋なデータのセクションが含まれていることがわかっている場合は、いくつかのセグメント情報 (Shift+F7) を設定することをお勧めします。上記の「自動逆アセンブル」が、セグメントのクラスが「CODE」として定義されている場合にのみ行われるのか、それとも重要である場合にのみ行われるのか、私にはわかりません。
注: ツールバーの色付きの円のアイコン (緑のはずです。そうでない場合、IDA は何かを実行中です) を押すか、[一般] -> [オプション] の [分析] タブで [プログラムの再分析] をクリックすることで、いつでも分析を再実行できます。