IDA Pro公式ヘルプ
基本編
- Command line switches(コマンドラインスイッチ)
- Configuration file(設定ファイル)
- Keyboard Macros
- Calculator
- Segment Register Change Points
- Anchor
How to(方法)
Windows
- Disassembly window(逆アセンブリウインドウ)
- Graph view(グラフビュー)
- Proximity view(近接ビュー)
- Arrows window(矢印ウィンドウ)
- Message Window(メッセージウィンドウ)
- Exports Window(エクスポートウィンドウ)
- Imports Window(インポートウィンドウ)
- Segments window(セグメントウィンドウ)
- Name Window(ネイム ウィンドウ)
- Functions Window(関数ウインドウ)
- Structures Window(構造ウィンドウ)
- Stack Variables Window(スタック変数ウィンドウ)
- Enums window(列挙型ウィンドウ)
- Problems window(問題ウィンドウ)
- Type libraries window(タイプ ライブラリ ウィンドウ)
- Local types window(ローカルタイプウィンドウ)
- Signatures window(署名ウィンドウ)
- Cross references window(相互参照ウィンドウ)
- Selectors window(セレクタウィンドウ)
- Segment registers window(セグメントレジスタウィンドウ)
- Strings window(文字列ウィンドウ)
- Function calls window(関数呼び出しウィンドウ)
Command line switches(コマンドラインスイッチ)
IDAは、次のいずれかのコマンドラインで起動します。
ida input-file(グラフィカルインターフェイスの開始)
idat input-file(テキストインターフェイスの開始)
64-bitの場合、コマンド名の後ろに「64」を入力します。
(例)ida64 input-file :64-bitのグラフィカルインターフェイスを起動します。
コマンドラインスイッチ一覧
- -a 自動分析を無効にします。(有効にする場合:“-a-”)
- -A autonomous mode(自律動作モード)。IDAはダイアログボックスを表示しません。
-Sスイッチと併用するように設計されています。 - -b#### 段落内のロードアドレス、16進数。(段落は16バイトです)
- -B batch mode(バッチモード)。IDAは「.IDB」「.ASM」ファイルを自動的に生成します。
- -c 新しいファイルを逆アセンブルします(古いデータベースを削除します。)
- -C#### コンパイラをフォーマット名:abiに設定します。
- -ddirective 最初のPassで処理する必要がある構成ディレクティブ。例:-dVPAGESIZE = 8192
- - Ddirective 2番目のパスに処理する必要がある構成ディレクティブ。
- -f FPP命令を無効にします。(IBMのパソコンのみ)
- -h ヘルプ画面
- -i#### プログラムエントリポイント(16進数)
- -I# IDAをjust-in-timeデバッガーとして設定します。(0:無効、1:有効)
- -L#### log file(ログファイル)の名前
- -M マウスを無効にします。(テキストのみ)
- -O#### プラグインにパスするオプション。このスイッチは、IDAHomeでは使用できません。
- -o#### 出力データベースを指定します(-cを意味します)
- -p#### プロセッサタイプ
- -P+ データベースの圧縮(zip形式IDBの作成)
- -P パックデータベース(解凍されたIDBを作成)
- -P- データベースをパックしていない状態(推奨しません。Abort command参照)
- -r### ただちに組み込みデバッガーを実行します。
- -R MSWindowsexeファイルリソースをロードします。
- -S### データベースを開いたときに、スクリプトファイルを実行します。
スクリプトファイル拡張子は、どのextlangがスクリプトを実行するかを決定するために使用されます。
スクリプト名の後にコマンドライン引数をパスすることができます。
例:- S"myscript.idc argument1 ¥"argument 2¥" argument3" 渡されたパラメータは、「ARGV」グローバルIDC変数に格納されます。 「ARGV.count」を使用して、引数の数を決定します。最初の引数「ARGV [0]」にはスクリプト名が含まれています。 このスイッチは、IDAHomeでは使用できません。 - -T### 入力ファイルを指定されたファイルタイプとして認識します。ファイルタイプは、ファイルタイプのプレフィックスとして特定されます。
「ファイルのロード」ダイアログボックスに表示されます。アーカイブメンバーを特定するには、コロンの後ろに入力します。
例:-TZIP:classes.dex ネストされたパスを特定できます。
-T[: {: : } [: ]] この場合、IDAは「ファイルのロード」ダイアログを表示しません。 - -t 空のデータベースを作成します。
- -W### MSWindowsディレクトリを特定します。
- -x セグメンテーションを作成しません。(Dump databaseコマンドと組み合わせて使用) このスイッチは、EXEおよびCOM形式のファイルにのみ影響します。
- -z デバッグ:
00000001 drefs
00000002 offsets
00000004 flirt
00000008 idp module
00000010 ldr module
00000020 plugin module
00000040 ids files
00000080 config file
00000100 check heap
00000200 checkarg
00000400 demangler
00000800 queue
00001000 rollback
00002000 already data or code
00004000 type system
00008000 show all notifications
00010000 debugger
00020000 dbg_appcall
00040000 source-level debugger
00080000 accessibility
00100000 network
00200000 full stack analysis (simplex method)
00400000 handling of debug info (e.g. pdb, dwarf)
00800000 lumina - -? この画面(テキスト版で動作します)
- ? この画面(テキスト版で動作します)
- -h この画面(テキストバージョンで動作します)
- -H この画面(テキストバージョンで動作します)
- -- この画面をサポートします(テキストバージョンで動作します)
Batch modeの場合、IDAは次のコマンドラインで呼び出す必要があります。
ida -B input-file
下記と同等:
ida -c -A -Sanalysis.idc input-file
テキストインターフェイス(idat.exe / idat)は、システムリソースの使用量が少ないため、Batch modeに適しています。 ただし、analysis.idcファイルが終了し、カーネルがプラグインをロードする機会がないため、 通常のプラグインはBatch modeで自動的にロードされないので注意が必要です。 詳細については、IDCサブディレクトリのanalysis.idcファイルを参照してください。
Configuration file(設定ファイル)は、最初に「%IDADIR%¥cfg」で検索され、 次に「%IDAUSR¥cfg」で検索されます。 (IDAUSR環境変数 に関するドキュメントを参照)
設定ファイルでは、C、C ++スタイルのコメントとインクルードファイルを使用できます。 ファイルが見つからない場合、IDAはデフォルト値を使用します。IDAは次の設定ファイルを使用します。
- IDA.CFG :一般的な設定ファイル
- IDATUI.CFG:テキストモードインターフェイス設定ファイル
- IDAGUI.CFG:グラフィックモードインターフェイス設定ファイル
IDATUI.CFGでは、テキストバージョンのIDAのHotkeyとキーボードマクロを定義できます。構文:
"ActionName" = Value
Valueは次のとおりです。
- 文字列:「Ctrl-F5」
- 文字: 'F'
- スキャンコード:0x4900
- ゼロ:0
ゼロのスキャンコードはhotkeyを無効にします。
キーボードマクロを定義するには:
MACRO key { key1 key2 key3 ... keyN }
ここで、keyは文字列(キー名)、char、またはスキャンコードです。
例:MACRO "Alt-W" // this sample macro jumps to "start" label
{
"Ctrl-G"
's' 't' 'a' 'r', 't'
"Enter"
}
キーボードマクロを定義して、頻繁なキーストロークシーケンスを自動化できます。これらは、BorlandIDEと同じ方法で定義されます。
- - Press Alt--
- - Press
- macro name - - Enter macro body
- - Press Alt-=
IDA を終了すると、すべてのマクロが失われます。IDAを終了してもマクロが消えないようにするには、IDATUI.CFGファイルに保存します。
注:キーボードマクロは、IDAのテキストバージョンでのみ使用できます。
簡単な計算機が用意されています。定数Cスタイルの式を入力できます。 式の構文は、IDC式の構文と同じです。結果は、16進数、10進数、文字の3つの形式でメッセージウィンドウに表示されます。 これらの式では、逆アセンブル中に作成されたすべての名前を使用することも出来ます。 IDAは、カーソルの下にある名前または番号を取得して、入力行に格納することもできます。
Segment Register Change Points
IDAは、セグメントレジスタを変更する命令を検出すると、セグメントレジスタの変更ポイントを作成します。 したがって、ほとんどの変更点はIDA自体によって維持されます。 IDAは、セグメントレジスタが変更ポイント間で値を変更しないことを前提としています。 IDAがセグメントレジスタの変更を見つけられなかったことがわかった場合、またはレジスタ値を変更したい場合は、 [Change Segment Register]コマンドを使用して変更ポイントを作成できます。 [Set default segment register value]コマンドを使用して、セグメントレジスタの値を変更することもできます。 IDAは変更点を分類します。変更点のリストでは、レジスタ値の後に次の接尾辞が表示されます。
- a(auto):IDAによって作成されます。後でIDAによって変更される可能性があります。
- u(by user):ユーザーによって作成されます。IDAは変更しません。
IDAは、対応するコマンドによって無効にされなかった場合、変更点に対して適切な「仮定」命令を生成します。
出力するファイルの一部を選択したり、移動するセグメントを指定したりする時など、一部のIDAコマンドにはアンカーが必要です。
アンカーをドロップするには、「Alt-L」または「Shift-
アンカーをドロップした後、矢印などを使用して自由にナビゲートできます。 アンカーを使用する全てのコマンドはアンカーをリンクさせます。
アンカーの範囲は別の色で表示されます。
IDAを終了すると、アンカー値は失われます。
【How to(方法)】
1. リモート ホストでリモート IDA デバッガー サーバーを起動します。リモート サーバーはコマンド ラインから起動され、 コマンド ライン パラメーターを許可します。デバッガー サーバーを他人から保護する場合は、パスワードを指定できます。 たとえば、MS Windows でサーバーを起動するには、次のように入力できます。
- win32_remote -Pmy_secret_password
2. [デバッガー] の [プロセス オプション]でリモート デバッガーのパラメーターを指定します。 ファイル パスは、リモート ホスト上で有効である必要があります。サーバーの起動時に指定したパスワードを使用します。 たとえば、リモート コンピューター remote.host.com で notepad.exe をデバッグするには、次のようにします。
- Application: c:¥windows¥notepad.exe
- Input file: c:¥windows¥notepad.exe
- Directory: c:¥windows
- Hostname: remote.host.com
- Hostname: remote.host.com
- Password: my_secret_password
3. 残りのデバッグは、ローカル デバッグと同じです。
注意
デバッガー サーバーは、一度に 1 つのデバッガー セッションを処理できます。
複数のアプリケーションを同時にデバッグする必要がある場合は、異なるネットワーク ポートで複数のサーバーを起動します。
次のデバッガ サーバーは IDA に同梱されています。
デバッグ セッションを開始する前に、リモート コンピューターで適切なサーバーを開始する必要があります。
次のコマンドはリスト ビューアで機能します。
- すべての移動キー: PgUp、PgDn、Home、End、矢印。
- 希望の行番号を入力するだけで行に配置できます。
- 行の先頭に入力することで、行に配置することができます。この場合、ユーザーは次を使用できます。 Backspace キーで最後に入力した文字を消去します。Ctrl-Enter で同じ接頭辞を持つ別の行を検索します。 リスト ビューアは、最後のバックスラッシュ (¥¥) またはスラッシュ (/) までの行のプレフィックスを無視してください。
- Alt-T で部分文字列を検索します。 (大文字と小文字を区別しない) Ctrl-T 最後の検索を繰り返します。
- 次のキーを使用できます。
Enter:最後の IDA ビュー ウィンドウで選択した項目にジャンプします。
Ctrl-E: 現在の項目を編集します。
Del: 現在の項目を削除します。
Ins:新しいアイテムを挿入します。
Ctrl-U: ウィンドウ内の情報を更新します。 - Ctrl-F を使用してクイック フィルタリングを使用できます。より複雑なフィルターは、右クリックで定義できます (GUI モードのみ)。
- リストは、任意の列をクリックして並べ替えることができます。 頻繁に変更されるリストを並べ替えるには時間がかかるため、最初の分析中はモーダルでないリストを並べ替えないようにしてください。 (ソートは GUI モードでのみ使用できます)。
- 右クリックすると、リスト ビューアの追加機能が表示される場合があります。
Esc または Enter モーダル リスト ビューアーを閉じます。
IDA のテキスト バージョンでは、次のキーを使用できます。
空白のみを含む入力は、空の入力と同じです。クリップボードも使用可能です。
識別子は、文字で始まり、文字と数字のみを含む名前です。許可される文字のリストは、構成ファイルIDA.CFG で指定されます。 すべての名前は大文字と小文字が区別されます。名前の最大長は、構成ファイルでも指定されています。
- MAX_NAME_LENGTH=120 // Maximal length of new names
デフォルトは 120 です。
一部のアセンブラでは名前の長さの制限が短いので注意してください。
不正な名前を入力すると、IDA から警告が表示されます。
セグメントの基本値は、16進数またはセグメント名として入力する必要があります。 無効なセグメントを入力すると、IDAから警告が表示されます。セグメントレジスタ名も入力できます。
アドレスは16進数またはロケーション名で入力する必要があります。
アドレスを16進数形式で入力する場合、アドレスのセグメント部分を省略でき、現在のセグメントが使用されます。
プログラムの制限を超えるアドレスは無効です。
また、変位付きの場所名を入力することもできます。
- name+5
最後に、相対アドレスを指定できます。
- +10 0x10 bytes further
- -5 5 bytes backwards
入力された文字列が16進数または場所の名前として認識できない場合、IDAは現在のスクリプト インタープリターを使用し、
式として解釈しようとします。デフォルトのインタープリターはIDCです。
特別なアドレス:
- $ - current location (depends on the current assembler)
例:
定数を含む任意の「C」式を入力できます。計算には長い算術演算が使用されます。
これらの式では、プログラムで作成したすべての名前を使用できます。
【 Windows 】
Disassembly window(逆アセンブリウィンドウ)
アクション名:WindowOpen
「WindowOpen」コマンドは、逆アセンブルで新しいウィンドウを開きます。 IDAは、開始時に1つの逆アセンブリ ウィンドウを自動的に開きます。 現在位置が関数に属する命令である場合、グラフ ビューが使用可能です。 スペース キーを使用して、テキスト ビューとグラフ ビューを切り替えることができます。 「-」キーを使用してコールグラフにズームアウトすることで、近接ビューに切り替えることもできます。
リストを改善するには、逆アセンブル編集コマンドを使用します。
Shift-<矢印> または Alt-L を使用してアンカーをドロップします。 マウスを持っている場合は、それを使ってアンカーをドロップすることもできます。
マウスのダブルクリックは
逆アセンブルの左側に矢印ウィンドウ(GUI版)があります。また、GUIバージョンでは現在の識別子が強調表示されます。
グラフ ビューでは、現在の関数はエッジでリンクされたノードのコレクションとして表されます。 ノードは基本ブロックを表し、エッジはそれらの間のコード相互参照を表します。 グラフ ビューにはコードアイテムのみが表示され、データアイテムは非表示になります。 それらを表示するには、スペースを押してテキストモードに切り替えます。関数に属する命令にはグラフビューが用意されています。 現在のアイテムがグラフ モードで表示できない場合、IDAは自動的にテキストモードに切り替わります。 また、警告も表示されますが、概念に慣れたらすぐに非表示にすることをお勧めします。
スペースキーを使用して、グラフビューとテキストビューを切り替えることができます。
グラフの詳細については、次のトピックのいずれかを選択してください。
IDA v6.2から、プログラムのコールグラフをグラフ形式で表示できるようになりました。 近接ビューでは、現在のアドレス、発信者、着信者がエッジでリンクされたノードのコレクションとして表されます。 ノードは関数とデータ参照 (グローバル変数、文字列など) を表し、エッジはそれらの間のコードまたはデータの相互参照を表します。
近接ビューを開くには、「-」キーを押してズームアウトし、カーソルの下のアドレスのコールグラフに切り替えます。
近接ビューにはアドレス名 (関数名またはデータラベル) のみが表示されます。逆アセンブルは表示されませんが、 ノードの上にマウスを移動すると、サイズ変更可能なヒントウィンドウに簡単な逆アセンブルリストが表示されます。 完全な逆アセンブリ リストを表示するには、それぞれ「+」またはスペースを押して、テキストモードまたはグラフモードに切り替えます。
新しいファイルを逆アセンブルするとき、IDA は、該当する場合は近接ビューに切り替えることを提案するダイアログを表示します。 このダイアログをオフにして、再び表示しないようにすることができます。
近接ビューには、機能ノード、データノード、補助ノードの3種類のノードがあります。 関数ノードは長方形で、ツールバーがあります。 これらのノードは、現在のセントラルノード (またはその親または子) の呼び出し元、または呼び出し先を表示するために使用されます。 データノードは長方形のノード (ツールバーなし) であり、現在のセントラルノードまたはその親および子との間のデータ参照 (グローバル変数、文字列など) を表示するために使用されます
グラフィカルバージョンでは、逆アセンブルの左側に矢印の付いた小さなウィンドウがあります。 これらの矢印は、実行フロー、つまり分岐命令とジャンプ命令を表しています。矢印の色は次のとおりです。
- - 赤: 矢印の始点と終点は同じファンクションに属していません。 通常、分岐はファンクション内にあり、赤は異なるファンクションからの分岐、もしくは異なるファンクションへの分岐を表します。
- - 黒: 現在選択されている矢印です。 選択するには、上キーまたは下キーを使用して矢印の始点または終点に移動するか、矢印の始点または終点を左クリックします。 PageUp、PageDown、Home、End キーを押したり、スクロールバーを使用したりしても、選択は変更されません。 これにより、選択した矢印を遠くまでトレースできます。
- -灰色:他のすべての矢印
矢印の太さは次のとおりです。
- - 太い: 後方矢印。後方矢印は通常、ループを表します。太い矢印はループを明確に表しています。
- - 細い: 前方矢印。
最後に、矢印は実線または点線にすることができます。実線の矢印が無条件分岐を表すとき、点線の矢印は条件付き分岐を表します。 垂直スプリッターを使用して矢印ウィンドウのサイズを変更したり、完全に非表示にすることもできます。 非表示の場合、矢印ウィンドウは画面に表示されませんが、スプリッターを右にドラッグすると表示できます。 IDAは、逆アセンブルウィンドウを閉じるときに、レジストリ内の現在の矢印ウィンドウサイズを記憶します。
IDA は、開始時に特別な閉じられないウィンドウを開きます。 このウィンドウを「メッセージウィンドウ」と呼びます。このウィンドウには、さまざまな IDAメッセージが表示されます。 メッセージウィンドウが他のウィンドウの背後に隠れている場合、IDAメッセージは表示されません。
このウィンドウに表示されるすべてのメッセージをファイルに複製できます。このために、環境変数を定義する必要があります。
- set IDALOG=logfile
アクション名:OpenExports
このコマンドは、エクスポートウィンドウを開きます。
このウィンドウでは、リストビューアーコマンドを使用できます。
アクション名:OpenImports
このコマンドは、インポート ウィンドウを開きます。
このウィンドウでは、リストビューアーコマンドを 使用できます。
アクション名:ShowSegments
このコマンドは、セグメント ウィンドウを開きます。このウィンドウの形式については、 こちらで説明しています。 このウィンドウでは、リスト ビューアーコマンドを 使用できます。
セレクターの値を変更するには、セレクターウィンドウを使用します。
アクション名:OpenNames
このコマンドは、ネイムウィンドウを開きます。このウィンドウでは、リスト ビューアーコマンドを 使用できます。
GUIバージョンでは、名前ごとに小さなアイコンが表示されます。
- L (dark blue) - library function
- F (dark blue) - regular function
- C (light blue) - instruction
- A (dark green) - string literal
- D (light green) - data
- I (purple) - imported name
プログラム内のすべての関数のリストが表示されます。リストビューア コマンドを使用して、関数を追加、削除、変更できます。
- -関数名
- -関数を含むセグメント
- -セグメント内の関数のオフセット
- -関数の長さ(バイト単位)
- -ローカル変数のサイズ(バイト単位)+保存されたレジスタ
- -関数に渡される引数のサイズ(バイト単位)
このウィンドウの最後の列の形式は次のとおりです。
- R - function returns to the caller
- F - far function
- L - library function
- S - static function
- B - BP based frame. IDA will automatically convert all frame pointer [BP+xxx] operands to stack variables.
- T - function has type information
= - フレーム ポインターは初期スタック ポインターと等しい
この場合、フレーム ポインターはフレームの下部を指します。 - M - reserved
- S - reserved
- I - reserved
- C - reserved
- D - reserved
- V - reserved
関数に色が設定されている場合、その行は指定された色を使用して色付けされます。
それ以外の場合、ライブラリおよびルミナ関数は対応する色で色付けされます。それ以外の場合、線は着色されません。
明確な (ユーザー指定の) プロトタイプを持つ関数には、太字フォントが使用されます。また、一部のプラグインもこのフラグを設定する場合があります。
このようなプロトタイプは逆コンパイラによってそのまま使用されますが、他のプロトタイプは逆コンパイル中の開始点としてのみ考慮されます。
関数リストをアクティブな逆アセンブラ、疑似コード、または 16 進ビューと自動的に同期させることができます。 そのためには、関数リストを右クリックして、「同期を有効にする」を選択します。
アクション名:OpenStructures
このコマンドは、構造定義ウィンドウを開きます。
ここで構造定義(構造の追加/名前変更/削除、構造メンバーの追加/削除/定義)を変更できます。
各構造には、一意の名前が必要です。フィールド名は構造内で一意である必要があります。 フィールドを作成または削除するには、データ定義コマンド ( data、string literal、array、undefine、Rename ) を使用します。 通常のコメントまたは繰り返し可能なコメントを定義することもできます。
メンバー タイプを変更するには、編集/オペランド タイプのサブメニューのコマンドを使用します。 たとえば、構造体メンバーをオフセットに変換するには、次のいずれかのコマンドを使用します。
- Convert to offset (automatic)
- Convert to offset (from a segment base)
- Convert to offset (complex offset expression)
このウィンドウの一部の構造体タイプは、IDA によって自動的に作成されます。それらは、いくつかのローカル タイプのコピーです。
このような構造体は灰色で表示され、 C レベルのタイプと見なされます。
ユーザーがそのようなタイプを編集するとすぐに、ASM レベルのタイプになります。
IDA は構造ヘッダーに次の情報を表示します。
- - the structure size in bytes
- - the alignment
- - for C level types: copyof_XX where XX is the ordinal type number.
- - for ASM level types: mappedto_XX where XX is the ordinal type number.
It is possible to jump to the corresponding local type by pressing Enter. - - for types copied from standard type libraries: "standard type"
Stack Variables Window(スタック変数ウィンドウ)
アクション名:OpenStackVariables
このコマンドは、現在の関数のスタック変数ウィンドウを開きます。 スタック変数は、内部的に構造体として表されます。この構造は、ローカル変数と関数引数の2つの部分で構成されます。
ここでスタック変数の定義を変更できます: スタック変数を追加/削除/定義し、それらのコメントを入力します。
このウィンドウには、「r」と「s」という2つの特別なフィールドがある場合があります。 これらは、関数の戻りアドレスと保存されたレジスタのサイズをバイト単位で表します。それらを直接変更することはできません。 それらを変更するには、 編集機能コマンドを使用します。
ライン プレフィックスのオフセットは、フレーム ポインタ レジスタ (BP) からのオフセットを表します。 ウィンドウの左下隅にあるウィンドウ インジケーターは、スタック ポインターからのオフセットを表示します。
スタック変数を作成または削除するには、データ定義コマンド ( data、strlit、array、undefine、Rename ) を使用します。 また、定期的または繰り返し可能なコメントを定義することもできます。
定義されたスタック変数は、オペランドをスタック変数に変換することにより、プログラムで使用できます。
Esc はこのウィンドウを閉じます。
アクション名:OpenEnums
このコマンドは、列挙型定義ウィンドウを開きます。 追加/編集/削除の列挙、 追加/編集/削除の 列挙型メンバーなどの列挙型の定義を変更することができます。(つまり、ユーザ定義のシンボリック定数)
ここでビットフィールド定義を作成できます。
列挙型および列挙型メンバーごとにコメントを追加することもできます。列挙型コメントを指定するには、列挙型名の前に置く必要があります。 コメントは通常のコマンドを使用して設定されます。
アクション名:OpenProblems
このコマンドは、問題ウィンドウを開きます。 問題ウィンドウには、プログラムの逆アセンブル中に IDA で発生したすべての問題のリストが含まれています。 Enterキーを押すと、問題にジャンプできます。選択した問題がリストから削除されます。
Type libraries window(タイプライブラリウィンドウ)
アクション名:OpenTypeLibraries
このコマンドは、タイプ ライブラリ ウィンドウを開きます。ここで、ユーザーは標準タイプライブラリをロードおよびアンロードできます。 標準タイプライブラリには、コンパイラで提供される標準 Cヘッダーからのタイプ定義が含まれています。 通常、IDAはターゲットコンパイラとそのタイプライブラリを自動的に決定しようとしますが、失敗した場合、 このウィンドウで適切なタイプライブラリをロードできます。
また、コンパイラ設定ダイアログでコンパイラとメモリモデルを指定してください。
Local types window(ローカルタイプウィンドウ)
アクション名:OpenLocalTypes
各データベースには、ローカルタイプライブラリが埋め込まれています。 このタイプライブラリ (til) は、現在のデータベースに対してローカルなタイプを格納するために使用されます。 それらは通常、ヘッダー ファイルを解析することによって作成されます。 このコマンドは、ローカルタイプウィンドウを開きます。ユーザーはここでローカルタイプを操作できます。
- -既存のタイプを変更できます(デフォルトのホットキーはCtrl-Eです)
- -既存のタイプを削除できます(デフォルトのホットキーはDelです)
- -新しいタイプを追加できます(デフォルトのホットキーはInsです)
Insを使用すると、一度に多くのタイプを追加できるので注意してください。 そのためユーザーはダイアログ ボックスに複数の宣言を1つずつ入力する必要があります。 Ctrl-E は一度に1つのタイプの編集を許可します。ネストされた型を持つ複雑な構造型で問題が発生する可能性があります。 ネストされたタイプは Ctrl-E では保存されません。
編集された型がidb型 (構造体または列挙型) に対応する場合、対応する型は自動的に同期されます。 ユーザーが構造体/列挙型ウィンドウでidbタイプを変更すると、対応するローカルタイプも更新されます。 したがって、型の同期は双方向で機能します。
このリストの一部のタイプは、IDAによって自動的に作成されます。 これらは、StructビューまたはEnumビューで定義されたタイプのコピーです。 このようなタイプは、無効であるかのように灰色で表示されます。
黒く表示されているタイプは、Cレベルのタイプと見なされます。
ローカルタイプ ライブラリの各タイプには序数があり、名前がある場合もあります。
既存の型への参照があると無効になるため、既存の型を削除するときは注意してください。
ローカルタイプは別のタイプにマップできます。 このような操作では、既存のタイプが削除され、そのすべての参照が宛先タイプにリダイレクトされます。 循環依存関係は禁止されています。ユーザーのミスの場合、マップされたタイプを削除して、正しい情報で再作成できます。
アクション名:OpenSignatures
このコマンドは、署名ウィンドウを開きます。各署名について、次の情報が表示されます。
- -署名付きのファイル名
- -署名の状態:
- Planned:the signature will be applied(署名が適用されます)
- Current:the signature is being applied(署名が適用されています)
- Applied:the signature has been applied(署名が適用されました) - -署名を使用して見つかった関数の数
- -署名の説明
ここで計画された署名リストを変更できます。(分解中に使用されるライブラリモジュールを追加/削除します。) 適用済みの署名をリストから削除することはできません。
アプリケーションのリストに署名を追加するには、<Ins>を押します。 逆アセンブルされているプログラムに適用できる署名のリストが表示されます。
テキスト バージョン: すべての署名ファイルが表示されるわけではありません (たとえば、16ビットプログラムの場合、32ビットの署名は表示されません)。 全ての署名リストを表示したい場合は、リストの最初の行にある"SWITCH TO FULL LIST OF SIGNATURES"を選択します。
署名ファイルは、SIG ディレクトリのサブディレクトリにあります。各プロセッサには独自のサブディレクトリがあります。
サブディレクトリの名前は、プロセッサモジュールファイルの名前と同じです (たとえば、z80.w32 の場合はz80)。
注: IBM PC署名は、SIGディレクトリ自体にあります。
注: IDASGN環境変数を使用して、署名ディレクトリの場所を指定できます。
Cross references window(相互参照ウィンドウ)
アクション名:OpenXrefs
このコマンドは、相互参照ウィンドウを開きます。このウィンドウには、現在の場所へのすべての参照が含まれています。 このウィンドウでは、 リストビューアーコマンドを 使用できます。
ここでも、InsまたはDelを押して相互参照を追加および削除できます。マウスを右クリックしても機能します。
相互参照を追加します。送信元アドレスと宛先アドレス、および外部参照タイプを指定する必要があります。
相互参照の削除: 「外部参照がない場合は未定義」がチェックされている場合、 最後の外部参照の削除時にターゲットアドレスの命令が未定義になります。 IDAは、関数を開始しない場合にのみ命令を定義解除します。
アクション名:ShowSelectors
このコマンドは、セレクターウィンドウを開きます。ここで、「セレクターからベース」へのマッピングを変更できます。 セレクターテーブルは、逆アセンブリリストに表示されるアドレスを計算するときにセレクター値を検索するために使用されます。 このウィンドウで リストビューアコマンドを 使用できます。
- -jump to the paragraph pointed by the selector(セレクターが指す段落にジャンプします)
- -add a new selector(新しいセレクターを追加します)
- -delete selector (if it is not used by any segment)(セレクターを削除します(どのセグメントでも使用されていない場合))
- -change selector value (this leads to reanalysis of all program)(セレクター値を変更します (これにより、すべてのプログラムが再分析されます))
Segment registers window(セグメントレジスタウィンドウ)
アクション名:ShowSegmentRegisters
このコマンドは、セグメント レジスタ ウィンドウを開きます。 ウィンドウには、セグメントレジスタの変更点の リストが表示されます 。 このウィンドウでは、リストビューアーコマンドを 使用できます。
現在のプロセッサタイプに応じて、FS、GS の有無にかかわらず DS、ES、SS が表示されます。
アクション名:OpenStrings
このコマンドは文字列ウィンドウを開きます。文字列ウィンドウには、プログラム内のすべての文字列が含まれています。 ただし、ウィンドウを開く前にアドレスの範囲が選択されている場合は、選択された範囲のみが文字列について検査されます。
リスト上で右クリック (またはテキストバージョンでは Ctrl-U を押す) して、リストパラメータを設定できます。
このダイアログボックスの設定に関係なく、リストには常にプログラムで定義された文字列が含まれますが、 ユーザーはIDAに、まだ文字列として明示的に定義されていない文字列を表示することができます。
次のパラメータを使用できます。
Display only defined strings
- チェックすると、IDAは明示的にマークされた文字列のみを表示します。 文字列アイテムとして (create string literalコマンドを使用)。この場合、他のチェックボックスは無視されます。
- チェックすると、IDA は命令/データ定義を無視します。文字列として処理しようとします。 文字列を構築できる場合最小長よりも長い長さで、文字列リストに表示されます。 「only defined strings」がオンの場合、この設定は無視されます。
Strict ASCII (7-bit) strings
- チェックすると、7ビット文字のみを含む文字列のみ(8番目のビットはゼロであること) がリストに追加されます。 ユーザーは、ida.cfg ファイルの StrlitCharsパラメータを変更することで、文字列の文字を指定することが出来ます。 「only defined strings」がオンの場合、この設定は無視されます。
Allowed string types
- ユーザーがリストに含まれる文字列タイプを指定できるようにします。 「only defined strings」がオンの場合、この設定は無視されます。
Minimal string length
- 文字列をリストに追加する必要がある最小の長さ。
Function calls window(関数呼び出しウィンドウ)
アクション名:OpenCallers
このコマンドは、関数呼び出しウィンドウを開きます。現在の関数を呼び出すすべての関数がウィンドウの上部に表示されます。
現在の関数から呼び出されたすべての関数がウィンドウの下部に表示されます。
カーソルを別の機能に移動すると、リストは自動的に更新されます。