2

ドライバーと共通の dll という 2 つのバイナリ ファイルを区別する必要があります。私が理解している限り、このファイルのセクションを (DumpBin 経由などで) 表示し、INIT セクションがあるかどうかを確認する必要があります。この基準は満たされていますか?

4

2 に答える 2

1

バイナリを解析し、IMAGE_OPTIONAL_HEADER のサブシステム フィールドを調べる必要があります。NATIVE の場合はドライバーです。詳細については、次のリンクを参照してください。

http://msdn.microsoft.com/en-us/library/ms809762.aspx

于 2012-04-03T17:32:53.877 に答える
0

この事実を確立し、可能な限り確実にするには、ヒューリスティックを使用する必要があります。autochk.exe問題は、ネイティブのユーザー モード プログラム (例: ) と DLL (率直に言って何も思い浮かびませんwinlogon.exeが、実行する前に処理を行うネイティブ プログラムの一部として見たことがあります) とカーネルが文字通り存在することです。モードの対応物 ( bootvid.dllhal.dllおよびさまざまな形式のいずれかのカーネルntoskrnl.exe)。

したがって、それがドライバーであることを確認するには、次のことを試すことができます。

  1. IMAGE_OPTIONAL_HEADER::SubSystem、指摘したように、それが「ネイティブ」であることを示す必要があります(つまり、サブシステムがありません: IMAGE_SUBSYSTEM_NATIVE
  2. IMAGE_FILE_HEADER::Characteristicsが DLL ではないことを確認します (これは、カーネルまたはユーザー モードの DLL であることを意味します。 に対してチェックしますIMAGE_FILE_DLL) 。
  3. 別のユーザー モード DLL をインポートするかしないか、または逆に、カーネル モード モジュール ( 、、) のいずれかをインポートして、カーネル モードで実行されるかユーザー モードで実行されるかを確認します。ntdll.dllntoskrnl.exehal.dllbootvid.dll

構造体と定義はすべて に含まれていwinnt.hます。

要旨:

  • サブシステムを確立します(IMAGE_SUBSYSTEM_NATIVEあなたの場合にのみ興味深いです)
  • DLL であるかどうかを確認する
  • ユーザーまたはカーネル モードのコンポーネントに対してリンクするかどうかを確認します。
于 2012-04-03T18:01:02.823 に答える