PE文件格式(3)
2007-01-14 20:15:00 来源:WEB开发网核心提示: 我们需要找出函数WriteConsoleA()andGetStdHandle().他们在"kernel32.dll".此为输入库部分,我们现在生成可执行文件,PE文件格式(3)(5),问号在后面被找出,DOS-stub,起始于0x0,没有BSS段,变量'writ
我们需要找出函数WriteConsoleA()andGetStdHandle().他们在"kernel32.dll".此为输入库部分。我们现在生成可执行文件。问号在后面被找出。
DOS-stub,起始于0x0,0x40字节:
00|4d5a0000000000000000000000000000
10|00000000000000000000000000000000
20|00000000000000000000000000000000
30|00000000000000000000000040000000
只是一个头,前面带有签字"MZ"后面是e_lfanew指针。然后是PE签名,起始于0x40,0x4字节:
50450000
下面是文件头,起始于0x44,0x14字节:
Machine 4c01 ;i386
NumberOfSections 0200 ;codeanddata
TimeDateStamp 00000000;whocares?
PointerToSymbolTable 00000000;unused
NumberOfSymbols 00000000;unused
SizeOfOptionalHeader e000 ;constant
Characteristics 0201 ;executableon32-bit-machine
下面是optionalheader,起始于0x58,0x60byteslong:
Magic 0b01 ;constant
MajorLinkerVersion 00 ;I'mversion0.0:-)
MinorLinkerVersion 00 ;
SizeOfCode 20000000;32bytesofcode
SizeOfInitializedData ????????;yettofindout
SizeOfUninitializedData 00000000;wedon'thaveaBSS
AddressOfEntryPoint ????????;yettofindout
BaseOfCode ????????;yettofindout
BaseOfData ????????;yettofindout
ImageBase 00001000;1MB,chosenarbitrarily
SectionAlignment 20000000;32-bytes-alignment
FileAlignment 20000000;32-bytes-alignment
MajorOperatingSystemVersion 0400 ;NT4.0
MinorOperatingSystemVersion 0000 ;
MajorImageVersion 0000 ;version0.0
MinorImageVersion 0000 ;
MajorSubsystemVersion 0400 ;Win324.0
MinorSubsystemVersion 0000 ;
Win32VersionValue 00000000;unused?
SizeOfImage ????????;yettofindout
SizeOfHeaders ????????;yettofindout
CheckSum 00000000;notusedfornon-drivers
Subsystem 0300 ;Win32console
DllCharacteristics 0000 ;unused(notaDLL)
SizeOfStackReserve 00001000;1MBstack
SizeOfStackCommit 00100000;4KBtostartwith
SizeOfHeapReserve 00001000;1MBheap
SizeOfHeapCommit 00100000;4KBtostartwith
LoaderFlags 00000000;unknown
NumberOfRvaAndSizes 10000000;constant
计划2个节,一个是代码,一个是数据(包括数据,常量和输入目录),没有重定位,没有其他资源。没有BSS段。变量'written'填入初始化数据。节对齐和文件对齐都是32字节。
更多精彩
赞助商链接