質問: 私は2つの異なる場所に、インデックス付き間接ジャンプで、その結果、switchステートメントを使用しているようだ機能を分解しています(同じ機能!): ``` 0005FA58 mov al, [eax+112h] 0005FA5E cmp al, 4 0005FA60 ja loc_5FBED 0005FA66 and eax, 0FFh 0005FA6B jmp cs:off_5F98C[eax*4] 0005FA73 00060011 mov al, byte ptr unk_A4E30[eax] 00060017 cmp al, 3 00060019 ja short loc_60053 0006001B and eax, 0FFh 00060020 jmp cs:off_5F9A0[eax*4] 0005F98C off_5F98C dd offset loc_5FBCC, offset loc_5FA73, offset loc_5FAC5, offset loc_5FB14, offset loc_5FB66 0005F98C ; DATA XREF: FunctionStart+BB 0005F9A0 off_5F9A0 dd offset loc_60049, offset loc_6003E, offset loc_60031, offset loc_60028 0005F9A0 ; DATA XREF: FunctionStart+670 ``` 最初のジャンプテーブルが5つのエントリ、秒を持っています残念なことに、コンパイラはそれらをメモリ内で互いに背後に置いていました。これらのノードのためのグラフの接続を計算するときにこれはIDAを混乱させるかもしれません: !Graph for 1st jump table *編集、質問の文言は、おそらく* を誤解されたようなグラフのノードが9つの発信接続を示しています。それらのうち5つは真の接続であり、次の4つはそうではありません - メモリ内のこのジャンプの直後に起こる別のジャンプテーブルに属します。私はIDAに "このジャンプテーブルには5つの有効なエントリがあり、グラフノードを作成するときは他のエントリは無視してください"と伝えたいと思います。これを行う方法はありますか? *元の質問は:* > > 最初のジャンプテーブルは > そのステートメントに属さない4そのうち9つの接続を持っています。 (ここでは簡潔にするためにここには記されていませんが、1つの接続しかありません)。最初のテーブルから余分な > 接続を削除し、2番目のテーブルから対応するターゲットに新しい接続 > を作成するようIDAに指示する方法はありますか? > > > 私はすでに、ジャンプテーブルを配列として定義してから、関数を定義解除してコードとして再定義しましたが、何も変更されませんでした。 (私はIDA 5.0を使用しています。これはホビープロジェクトなので、年に何回か使用することに何百ドルも費やしたくありません)。
回答: それは可能だが、いないフリーウェア版で: 1. `jmp` の上にカーソルを置き3. 編集 - >その他 - >