以下のテキストを日本語に翻訳してください:
ipyida のインストール#
ipyida のインストール方法は次のとおりです:ida 如何安装插件 - lca
ipython の使用方法#
インストールが完了したら、[編集 - プラグイン] から ipyida プラグインを選択して開きます。次のような画面が表示されます:
? を押すとヘルプ情報が表示され、esc を押すとヘルプ情報画面が終了します。タブキーを押すとコマンドが自動的に補完されます。例えば、imp と入力してタブキーを押すと import が補完され、import の後にスペースを入力してからタブキーを押すとインポートする必要のあるモジュールが表示されます。
モジュールをインポートした後、モジュールの後に?を付けるとモジュールの情報が表示されます。
idaapi?
idaapi?? # より詳細な情報を表示
% hist と入力すると、過去のコマンドが表示されます。% history -n を入力すると、過去のコマンドと行番号が表示されます。
% edit でテキストエディタを開きます。% edit x-y で指定された範囲のコマンドをテキストエディタに書き込みます。
ida python の基本的な使用方法#
ida python は次の 3 つの独立したモジュールで構成されています:
- idc
- idaapi
- idautils
ida python では大文字と小文字が区別され、命名規則はキャメルケースです。
idc.here()#
現在の命令のアドレスを取得します
idc.GetDisasm()#
現在のアセンブリ命令を取得します
idc.SegName()#
現在のセグメントを取得します
idc.MinEA&idc.MaxEx#
プログラムの最低アドレスと最高アドレスを取得します
ea = idc.here()
next_str = idc.NextHead(ea)
pre_instr = idc.prev_head(ea)
前(または後)のアセンブリ命令のアドレスを取得します
SceenEA#
ディスアセンブリの現在のカーソル位置を示します
モジュールをインポートする必要がありますimport idaapi
ScreenEa 関数を使用すると、エラーが発生する場合があります。これは Python のバージョンに関連している可能性があります。以下は Python3 のエラーの例です。
スクリプトコマンドを実行するには、まずスクリプトを作成します(Python3 環境で)。
次に、[ファイル - ファイルを実行] を選択してスクリプトをロードし、実行します。実行結果は次のようになります。
idc.GetDisasm (start_ea) コマンドは、現在のカーソル位置の命令を出力します(Python3 環境で)。
カーソルを他の位置に移動すると、ea はカーソルの位置と値を再度検索します。
idc.GetOpnd () 関数を使用すると、命令の 1 番目または 2 番目のオペランドを出力できます。
現在のカーソル位置の関数名を取得する方法
import idc
import idaapi
ea = idc.ScreenEA()
func = idaapi.get_func(ea)
funcname = idc.GetFunctionName(func.startEA)
print funcname
現在の関数名を取得します
import idc
import idautils
ea = idc.ScreenEA()
start = idc.SegStart(ea)
end = idc.SegEnd(ea)
for funcea in idautils.Functions(start,end):
name = idc.GetFunctionName(funcea)
print name
ブロック内のすべての関数名を取得します
E = list(idautils.FuncItems(ea))
for e in E:
print "%X"%e,idc.GetDisasm(e)
関数のすべての命令を出力します
ディスアセンブリビューの命令と比較します
WndProc にカーソルを移動すると、参照を表示できます
CARTEL_BUENO関数
にカーソルを移動し、X キーを押すとwndproc関数
がCARTEL_BUENO関数
を呼び出していることが表示されます。
coderefs () 関数を呼び出すことで、それを呼び出す関数名を取得できます。
CARTEL_BUENO の参照を取得します