ドライバーと共通の dll という 2 つのバイナリ ファイルを区別する必要があります。私が理解している限り、このファイルのセクションを (DumpBin 経由などで) 表示し、INIT セクションがあるかどうかを確認する必要があります。この基準は満たされていますか?
1579 次
2 に答える
1
バイナリを解析し、IMAGE_OPTIONAL_HEADER のサブシステム フィールドを調べる必要があります。NATIVE の場合はドライバーです。詳細については、次のリンクを参照してください。
于 2012-04-03T17:32:53.877 に答える
0
この事実を確立し、可能な限り確実にするには、ヒューリスティックを使用する必要があります。autochk.exe
問題は、ネイティブのユーザー モード プログラム (例: ) と DLL (率直に言って何も思い浮かびませんwinlogon.exe
が、実行する前に処理を行うネイティブ プログラムの一部として見たことがあります) とカーネルが文字通り存在することです。モードの対応物 ( bootvid.dll
、hal.dll
およびさまざまな形式のいずれかのカーネルntoskrnl.exe
)。
したがって、それがドライバーであることを確認するには、次のことを試すことができます。
IMAGE_OPTIONAL_HEADER::SubSystem
、指摘したように、それが「ネイティブ」であることを示す必要があります(つまり、サブシステムがありません:IMAGE_SUBSYSTEM_NATIVE
)IMAGE_FILE_HEADER::Characteristics
が DLL ではないことを確認します (これは、カーネルまたはユーザー モードの DLL であることを意味します。 に対してチェックしますIMAGE_FILE_DLL
) 。- 別のユーザー モード DLL をインポートするかしないか、または逆に、カーネル モード モジュール ( 、、) のいずれかをインポートして、カーネル モードで実行されるかユーザー モードで実行されるかを確認します。
ntdll.dll
ntoskrnl.exe
hal.dll
bootvid.dll
構造体と定義はすべて に含まれていwinnt.h
ます。
要旨:
- サブシステムを確立します(
IMAGE_SUBSYSTEM_NATIVE
あなたの場合にのみ興味深いです) - DLL であるかどうかを確認する
- ユーザーまたはカーネル モードのコンポーネントに対してリンクするかどうかを確認します。
于 2012-04-03T18:01:02.823 に答える