目录
什么是PE?
参考博客:https://blog.csdn.net/hou09tian/article/details/100397525
PE文件是Portable Executable(可移植的可执行文件)的简写。EXE、DLL、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件。
PE的结构:
什么是PEView?
PEview.exe工具是一款可以进行PE文件解析的强大PE文件解析工具。通过PEview软件,我们一起来分析PE文件的详细格式。
分析PE文件
参考博客:https://blog.csdn.net/hou09tian/article/details/100404142,(都是一个博主写的,很简练,跟着学习)。
在VS2015中,新建一个控制台程序,不输入任何代码,编译生成exe文件,该exe文件就是一个PE文件。
我没有安装VS2015,用codeblocks去试一下, 额,不知道对不对,新建了个helloworld初始的exe:
用PEView打开看:
左侧的树形控件显示了PE文件的格式,而右侧则显示的是PE文件的头部和数据的具体内容。
什么是DOS头?
PE文件头部中的DOS头分为MZ文件头和DOS块,分别对应的是IMAGE_DOS_HEADER和MS-DOS Stub Program。
IMAGE_DOS_HEADER是干嘛的?
IMAGE_DOS_HEADER STRUCT
{
+0h WORD e_magic // Magic DOS signature MZ(4Dh 5Ah) DOS可执行文件标记
+2h WORD e_cblp // Bytes on last page of file
+4h WORD e_cp // Pages in file
+6h WORD e_crlc // Relocations
+8h WORD e_cparhdr // Size of header in paragraphs
+0ah WORD e_minalloc // Minimun extra paragraphs needs
+0ch WORD e_maxalloc // Maximun extra paragraphs needs
+0eh WORD e_ss // intial(relative)SS value DOS代码的初始化堆栈SS
+10h WORD e_sp // intial SP value DOS代码的初始化堆栈指针SP
+12h WORD e_csum // Checksum
+14h WORD e_ip // intial IP value DOS代码的初始化指令入口[指针IP]
+16h WORD e_cs // intial(relative)CS value DOS代码的初始堆栈入口
+18h WORD e_lfarlc // File Address of relocation table
+1ah WORD e_ovno // Over