close
IDA Pro

クイック入門

短くて単純な関数から始めましょう。

View、Open subviews、Pseudocode(ホットキーF5)を使用して逆コンパイルします。

生成されたCコードは正しいですが、きれいな形ではありません。テキストを乱雑にする多くのキャスト操作があります。 その理由は、逆コンパイラがまだ型回復を実行していないためです。 どうやら、a1引数は構造体を指していますが、逆コンパイラはそれを見逃していました。 データベースにいくつかの情報を追加して、何が起こるかを確認してください。 Structure window(Shift-F9)を開き、新しい構造タイプを追加します。

その後、擬似コードウィンドウに戻り、a1のタイプを指定します。 a1の任意のオカレンスにカーソルを置き、Yを押すと実行されます。

Enterキーを押すと、逆コンパイルの出力が大幅に向上します。

まだ改善の余地があります。構造フィールドの名前を変更し、それらのタイプを指定できます。 たとえば、field_6B1はカウンターとして使用されているようですが、field_6B5 は関数ポインターです。 これで、ウィンドウを切り替えることなく、実行できます。初期構造定義のみがStructures Window*1をリクエストします。 関数ポインタフィールドのタイプを指定する方法は次のとおりです。

最終結果は次のようになります。

本文にはキャスト操作がなく、全体的に初期バージョンよりもはるかに良くなっています。

*1:これは正解とは言い切れません。実際、タイプダイアログボックスに完全な構造定義を入力することはできますが、 入力フィールドが1行で構成されているため、困難です。 File、Load file、ParseCヘッダーファイルコマンドを使用して新しいタイプを定義することもできます。