2010-11-22 5 views
0
  • Windowsベースの実行可能ファイルはどのように機能しますか?
  • 実行ファイルにはどのように開始アドレスがありますか?
  • ファイルの実行場所はどこに保存されていますか?どのようにそれらのアドレスを読み取ることができますか?
  • dllファイルまたはexeファイルの呼び出しと再開の仕組みは?

idaプロディスアセンブラのヒントを教えてください。どのようにexeが動作し、dllとexeファイルのアドレス指定の呼び出しが行われるか

答えて

1

プログラムの仮想開始アドレスは、実行可能ファイルのヘッダーに記録されます。 HT(http://hte.sf.net/)のように、これらの構造を理解しているヘッダービューアプログラムで簡単に表示することができます。 IDAProに類似したものがあるかもしれません。

0

任意のDLLまたはEXEファイルの呼び出しとRETが

の仕組みこれは実際にそれがDLLまたは問題のEXEのかどうかに依存しません。

WindowsのモジュールローダーがDLLのロードを終了すると、DLL_PROCESS_ATTACHパラメータ(the documentation of DllMainを参照)を持つDLLの開始アドレス(「DllMain」と呼ばれる)が呼び出されます。 DllMainが1を返すと、ローダーは引き続きオンになります。

しかし、EXEを起動すると、システムは新しいプロセスを生成し、ntdll.dllをそのプロセスのアドレス空間にマップし、NTDLLの開始アドレスから実行しているメインスレッドを生成します。その後、スレッドはより初期化を行い、EXEファイル(インポートテーブルにリストされているDLL)をロードし、EXEの開始アドレスで指定された関数を呼び出します。その関数が返ってくると、NTDLLはNtTerminateProcessを呼び出し、実行中のすべてのスレッドを強制終了し、プロセスを閉じます。

このEXE起動プロセスは、ユーザーモードのデバッガでは理解しにくい場合があります。デバッガの中にはプロセス初期化の初期段階で壊れてしまうものがあります。

関連する問題