Kev*_*vin 7 dll reverse-engineering portable-executable dllexport
根据我和其他人的经验(http://webster.cs.ucr.edu/Page_TechDocs/pe.txt),PE/COFF规范文档错误地声称序数表中包含的出口地址表索引是相对的到Ordinal Base,甚至给出了一个不正确的例子(第5.3节).实际上,Ordinal Table中的索引是基于0的索引到正常情况下的Ordinal Base = 1的地址表中.我在VS Studio生成的PE库和系统库(如Kernel32.dll)中看到了这一点.
我的问题是,你有没有观察过一个带有Ordinal Base的二进制数不等于1?我想知道这是一个off-by-one错误,还是Ordinal Base从未应用于Ordinal Table条目.
这是 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]
Run Code Online (Sandbox Code Playgroud)
这是它在二进制文件中的样子:
;
; 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
Run Code Online (Sandbox Code Playgroud)
所以是的,看来你是对的,序数表中的索引是从0 开始的。
归档时间: |
|
查看次数: |
1706 次 |
最近记录: |