banner
lca

lca

真正的不自由,是在自己的心中设下牢笼。

「ゼロから始めるIDA逆向き学習」学習ノート-13(idapythonの紹介)

以下のテキストを日本語に翻訳してください:
image

ipyida のインストール#

ipyida のインストール方法は次のとおりです:ida 如何安装插件 - lca

ipython の使用方法#

インストールが完了したら、[編集 - プラグイン] から ipyida プラグインを選択して開きます。次のような画面が表示されます:

image

? を押すとヘルプ情報が表示され、esc を押すとヘルプ情報画面が終了します。タブキーを押すとコマンドが自動的に補完されます。例えば、imp と入力してタブキーを押すと import が補完され、import の後にスペースを入力してからタブキーを押すとインポートする必要のあるモジュールが表示されます。

image

モジュールをインポートした後、モジュールの後に?を付けるとモジュールの情報が表示されます。

idaapi?
idaapi?? # より詳細な情報を表示

image

% hist と入力すると、過去のコマンドが表示されます。% history -n を入力すると、過去のコマンドと行番号が表示されます。

image

% edit でテキストエディタを開きます。% edit x-y で指定された範囲のコマンドをテキストエディタに書き込みます。

ida python の基本的な使用方法#

ida python は次の 3 つの独立したモジュールで構成されています:

  • idc
  • idaapi
  • idautils

ida python では大文字と小文字が区別され、命名規則はキャメルケースです。

idc.here()#

image

現在の命令のアドレスを取得します

idc.GetDisasm()#

image

現在のアセンブリ命令を取得します

idc.SegName()#

image

現在のセグメントを取得します

idc.MinEA&idc.MaxEx#

image

プログラムの最低アドレスと最高アドレスを取得します

ea = idc.here()
next_str = idc.NextHead(ea)
pre_instr = idc.prev_head(ea)

image

image

前(または後)のアセンブリ命令のアドレスを取得します

SceenEA#

ディスアセンブリの現在のカーソル位置を示します

モジュールをインポートする必要がありますimport idaapi

image

ScreenEa 関数を使用すると、エラーが発生する場合があります。これは Python のバージョンに関連している可能性があります。以下は Python3 のエラーの例です。

スクリプトコマンドを実行するには、まずスクリプトを作成します(Python3 環境で)。

image

次に、[ファイル - ファイルを実行] を選択してスクリプトをロードし、実行します。実行結果は次のようになります。

image

idc.GetDisasm (start_ea) コマンドは、現在のカーソル位置の命令を出力します(Python3 環境で)。

image

カーソルを他の位置に移動すると、ea はカーソルの位置と値を再度検索します。

idc.GetOpnd () 関数を使用すると、命令の 1 番目または 2 番目のオペランドを出力できます。

image

現在のカーソル位置の関数名を取得する方法


import idc
import idaapi

ea = idc.ScreenEA()
func = idaapi.get_func(ea)
funcname = idc.GetFunctionName(func.startEA)

print funcname

image

現在の関数名を取得します

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

image

ブロック内のすべての関数名を取得します

E = list(idautils.FuncItems(ea))
for e in E:
	print "%X"%e,idc.GetDisasm(e)

image

関数のすべての命令を出力します

image

ディスアセンブリビューの命令と比較します

WndProc にカーソルを移動すると、参照を表示できます

image

CARTEL_BUENO関数にカーソルを移動し、X キーを押すとwndproc関数CARTEL_BUENO関数を呼び出していることが表示されます。

image

coderefs () 関数を呼び出すことで、それを呼び出す関数名を取得できます。

image

image

CARTEL_BUENO の参照を取得します

参考#

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。