gpt4 book ai didi

dll - PE 导出目录表的 OrdinalBase 字段被忽略了?

转载 作者:行者123 更新时间:2023-12-04 11:43:55 27 4
gpt4 key购买 nike

根据我和其他人的经验 (http://webster.cs.ucr.edu/Page_TechDocs/pe.txt),PE/COFF 规范文档错误地声称包含在序数表中的导出地址表索引是相对的到序数基数,甚至给出了一个不正确的例子(第 5.3 节)。实际上,在 Ordinal Base = 1 的正常情况下,Ordinal Table 中的索引是地址表中基于 0 的索引。我在 VS Studio 生成的 PE 库和 Kernel32.dll 等系统库中看到了这一点。

我的问题是,你有没有观察过序数基数不等于 1 的二进制?我想知道这是否是一个逐一错误,或者序数基数是否从未应用于序数表条目。

最佳答案

这是 mfc42.dll 版本 6.06.8064.0 的转储。

Microsoft (R) COFF/PE Dumper Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.


Dump of file mfc42.dll

File Type: DLL

Section contains the following exports for MFC42.dll

00000000 characteristics
4D79A4A3 time date stamp Fri Mar 11 05:27:15 2011
0.00 version
5 ordinal base
6939 number of functions
6 number of names

ordinal hint RVA name

5 0 0000ED7C ?classCCachedDataPathProperty@CCachedDataPathProperty@@2UCRuntimeClass@@B
6 1 0000ED44 ?classCDataPathProperty@CDataPathProperty@@2UCRuntimeClass@@B
7 2 000DEEAC DllCanUnloadNow
8 3 000DEE6C DllGetClassObject
9 4 000DED0A DllRegisterServer
10 5 000DEEDE DllUnregisterServer
256 0004F84F [NONAME]
[...]
6943 0003B412 [NONAME]

这是它在二进制文件中的样子:
;
; Export directory for MFC42.dll
;
dd 0 ; Characteristics
dd 4D79A4A3h ; TimeDateStamp: Fri Mar 11 05:27:15 2011
dw 0 ; MajorVersion
dw 0 ; MinorVersion
dd rva aMfc42_dll ; Name
dd 5 ; Base
dd 1B1Bh ; NumberOfFunctions
dd 6 ; NumberOfNames
dd rva functbl ; AddressOfFunctions
dd rva nametbl ; AddressOfNames
dd rva nameordtbl ; AddressOfNameOrdinals
;
; Export Address Table for MFC42.dll
;
functbl dd rva ?classCCachedDataPathProperty@CCachedDataPathProperty@@2UCRuntimeClass@@B; 0
dd rva ?classCDataPathProperty@CDataPathProperty@@2UCRuntimeClass@@B; 1
dd rva DllCanUnloadNow ; 2
dd rva DllGetClassObject; 3
dd rva DllRegisterServer; 4
dd rva DllUnregisterServer; 5
dd 0F5h dup(rva __ImageBase); 6
dd rva ??0_AFX_CHECKLIST_STATE@@QAE@XZ; 251
[...]
;
; Export Names Table for MFC42.dll
;
nametbl dd rva a?classccachedd, rva a?classcdatapat, rva aDllcanunloadno
dd rva aDllgetclassobj, rva aDllregisterser, rva aDllunregisters
;
; Export Ordinals Table for MFC42.dll
;
nameordtbl dw 0, 1, 2, 3, 4, 5

所以是的,看来你是对的,序数表中的索引是 基于 0 .

关于dll - PE 导出目录表的 OrdinalBase 字段被忽略了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5653316/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com