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"命令があれば、おそらく、そこがエントリーポイント。
以上。