2016-07-08 13 views
1

私はWindows PEファイルを検査するために構築したプロジェクトを持っています。 User32やShell32などの特定のファイルを処理するとき、エクスポートアドレステーブルには0のエントリがあることがわかります。エクスポートアドレステーブルにnull(0)エントリを持つ目的は何ですか? (0のエントリは有効な仮想アドレスに解決されません)Windows PEファイルのアドレスエクスポートテーブルにnullエントリが含まれている理由は何ですか?

FYI - NikPEViewerおよびDll Export Viewerなどのアプリケーションでは、これらのエントリはまったく表示されません.DumpBinは、エクスポート名テーブルおよび序数に含まれないエクスポートを示しますヌルエントリはスキップされます。

答えて

0

私は部分的な応答しか持っていません。 は、我々は次のexports.def(8.1 x 64のuser32.dllのを勝つ)ファイルの書き込みと仮定します。

EXPORTS 
... 
wvsprintfW   @2412 
NtUserDelegateInput @2503 NONAME 
... 

なし2412 @ 2503 @の間で任意の序を持っている - 90を生成するようにリンカを、のためのあなたの序順序を維持必要になりますエクスポートアドレステーブルのゼロエントリ。リンカーの理由は明らかです。それは私たちの指定を満たすものです。しかし、これは別の質問のために私たちをリダイレクトします - この種のdefファイルを書いた理由は何ですか? これは何とかこのファイルをバージョン間で書き直すために関係していると思います。 は、Win7のx64のからUSER32.DLLで言う - higest序が2502 @です(2503 @ NtUserDelegateInputに比較して)勝利で

は10 x 64のuser32.dllのを見ることができます:

... 
NtUserUpdateWindowTrackingInfo @2585 NONAME 

; interval [@2586, @2700) is zero 

GetDialogBaseUnits96   @2700 NONAME 

; @2701 is zero 

EnablePerMonitorMenuScaling  @2702 NONAME 

新しいAPIセット輸出は序から始まります@ 2700(スペース[@ 2586、@ 2700)は予約されていますか? user32.dllは一般的に知られている(安定した)序文をエクスポートしないので、バージョンごとに保存してはいけません。だから私のためにDEFファイルのすべての直接設定序論で理由は不明確

関連する問題