[Windows] 実行ファイルのエントリーポイントを特定するには

Windowsの実行ファイルのエントリーポイントを特定する方法のメモ

エントリーポイントとはプログラムの実行開始位置のこと。

- 実行ファイルをIDAで開いて'Ctrl+E'を押すとエントリーポイントに飛ぶ。(実行ファイルをIDAで開くと大抵は自動でエントリーポイントに飛ぶ)

- 実行ファイルをバイナリ・エディタで開いて、PEヘッダの開始位置+0x28の値を確認する。詳しくはこちら

- OllyDbgで実行ファイルを開いて、F9キーを押してデバッグを実行する。大抵は自動でエントリーポイントに飛ぶ。

- 逆アセンブルからGetCommandLineAを探して、そこからエントリーポイントまで遡る。(コマンドラインベースのプログラムは大抵まずGetCommandLineAなどで引数の有無を確認するため。) GetCommandLineAの呼び出し直前に、"push ebp"および"mov ebp, esp"命令があれば、おそらく、そこがエントリーポイント。

- GUIベースのプログラムの場合は逆アセンブルからGetModuleHandleAを探して、そこからエントリーポイントまで遡る。GetModuleHandleAの呼び出し直前に、"push ebp"および"mov ebp, esp"命令があれば、おそらく、そこがエントリーポイント。

以上。

Leave a Reply

Your email address will not be published.