打开user32.dll

3CH 处为PE头位置:0x F8
DOS头部分:

转到 F8处

PE文件标志(4H字节): 00004550
映像文件头(14H字节):
NumberOfSections:0006−−>6
SizeOfOptionalHeader:00E0−−>224
可选映像头:
部分

SizeOfCode(可执行代码长度):00083000
AddressOfEntryPoint(代码入口RVA):000158A0
ImageBase(相对PE头偏移34):6BA80000
$SectionAlignment: 00 00 10 00 $
FileAlignment:00000200
SizeOfImage:00153000
NumberOfRvaAndSizes:00000010
DataDirectory:000024E4
PS: 0170起8字节为导出表描述部分前四个字节为 000024E4
SectionTable(节表):
从PE映像文件末尾 01 10偏移00E0(SizeOfOptionalHeader)−−>01F0

Name:.text
VirtualSize:00082E9C
VirtualAddress(内存对齐后地址):00001000
SizeOfRawData(文件对齐后尺寸):00083000
PointerToRawData(文件对齐处位置):00000400
Name:.data
VirtualSize:0000103A
VirtualAddress(内存对齐后地址):00084000
SizeOfRawData(文件对齐后尺寸):00001000
PointerToRawData(文件对齐处位置):00083400
Name:.idata
VirtualSize:00002D72
VirtualAddress(内存对齐后地址):00086000
SizeOfRawData(文件对齐后尺寸):00002E00
PointerToRawData(文件对齐处位置):00084400
Name:.didat
VirtualSize:0000004C
VirtualAddress(内存对齐后地址):00089000
SizeOfRawData(文件对齐后尺寸):00000200
PointerToRawData(文件对齐处位置):00087200
Name:.rsrc
VirtualSize:000C3E18
VirtualAddress(内存对齐后地址):0008A000
SizeOfRawData(文件对齐后尺寸):000C4000
PointerToRawData(文件对齐处位置):00087400
Name:.reloc
VirtualSize:00004DE8
VirtualAddress(内存对齐后地址):0014E000
SizeOfRawData(文件对齐后尺寸):00004E00
PointerToRawData(文件对齐处位置):0014B400
Export(导出表):
RVA:000024E4 (从之前可选头部分关于导出表描述部分读取)
$Offset = 00 00 24 E4 - 00 00 10 00 + 00 00 04 00 = 00 00 18 E4 $
减数为第一个节表 .text的VirtualAddress(00001000),之后加上的是PointerToRawData(00000400)
Name:00004A98−−>3E98

AddressOfFunction:0000250C−−>190C
00059A90
00036160
00036180
000244D0
0001E450
.....
AddressofName:000035A4−−>29A4
00004AA3−−>3EA4−−>“ActivateKeyboardLayout”
00004ABA−−>3EBA−−>“AddChipboardFormatListener”
00004AD5−−>3ED5−−>“AdjustWindowRect”
00004AE6−−>3EE6−−>“AdjustWindowRectEx”
00004AF9−−>3EF9−−>“AlignRects”
.....
AddressofOrdinals:0000439C−−>379C
0001
0002
0003
0004
0005
.....