PE文件格式
文章平均质量分 75
sysprogram
这个作者很懒,什么都没留下…
展开
-
认识PE文件
Windows下的EXE可执行文件都是属于PE格式。PE是英文Portable Executable的缩写,它是一种针对于微软Windows NT、Windows 95和Win32系统,由微软公司设计的可执行的二进制文件格式,EXE、DLL都是属于PE格式的文件。下面是一个PE文件结构的图DOS MZ Header 所有 PE文件(甚至32位的DLLs)必须以简单的DOS MZ header开始,它是一个IMAGE_DOS_HEADER结构。有了它,一旦程序在DOS下执行,DOS就能识别出这是有效的执原创 2010-06-10 14:48:00 · 1192 阅读 · 0 评论 -
MS-DOS头部
<br />每个PE文件都是以一个Dos程序开始的,有了它,一旦程序在Dos下执行,Dos就能识别出这是有效的执行体,然后运行紧随MZ header之后的Dos stub(Dos块). Dos stub实际上是一个有效的EXE,在不支持PE文件格式的操作系统中,它将简单的显示一个错误提示,This program must be run under Win32。Dos stub一般都是由编译器自动生成的。Dos MZ头与Dos stub合称为Dos文件头。<br /> <br />MS-DOS头部占据了PE原创 2010-06-10 15:26:00 · 2875 阅读 · 0 评论 -
判断是不是PE文件
判断是不是一个PE文件有很多种方法,我们用的方法是:先读取Dos头,判断e_magic是否等于"MZ",然后再读取PE文件头的头字节,判断是不是 "PE00"。这样就能确定是不是一个有效的PE文件。代码如下://选择文件void CPEDlg::OnButton1() { // TODO: Add your control notification handler code here TCHAR tzFilter[] = _T("可执行文件(*.exe)|*.exe|所有文件(*.*)|*.*||"); C原创 2010-06-10 16:38:00 · 2564 阅读 · 0 评论 -
PE文件头
<br />上次我们认识了Dos头,这次我们来认识一下PE文件头<br /> <br />紧跟着Dos stub的是PE文件头(PE Header),PE装载器将从IMAGE_DOS_HEADER结构中的e_lfanew字段里找到PE Header的起<br />始偏移量。该结构如下:<br /> <br />typedef struct _IMAGE_NT_HEADERS {<br /> DWORD Signature; // PE文件头标志:"原创 2010-06-10 16:10:00 · 1067 阅读 · 0 评论 -
获取PE文件的区段表
//清空列表控件 m_ListCtrlSection.DeleteAllItems(); IMAGE_DOS_HEADER DosHeader = {0}; IMAGE_FILE_HEADER FileHeader = {0}; HANDLE hFile = INVALID_HANDLE_VALUE; DWORD dwReadLen = 0; WORD NumOfSec = 0; //区段表个数 IMAGE_SECTION_HEADER *pSecHeader = NULL; //打开文件 hFil原创 2011-05-08 14:32:00 · 4042 阅读 · 1 评论