PE文件格式提取

合集下载

PE文件格式详解

PE文件格式详解

PE文件格式详解(一)基础知识什么是PE文件格式:我们知道所有文件都是一些连续(当然实际存储在磁盘上的时候不一定是连续的)的数据组织起来的,不同类型的文件肯定组织形式也各不相同;PE文件格式便是一种文件组织形式,它是32位Window系统中的可执行文件EXE以及动态连接库文件DLL的组织形式。

为什么我们双击一个EXE文件之后它就会被Window运行,而我们双击一个DOC文件就会被Word打开并显示其中的内容;这说明文件中肯定除了存在那些文件的主体内容(比如EXE文件中的代码,数据等,DOC 文件中的文件内容等)之外还存在其他一些重要的信息。

这些信息是给文件的使用者看的,比如说EXE文件的使用者就是Window,而DOC文件的使用者就是Word。

Window可以根据这些信息知道把文件加载到地址空间的那个位置,知道从哪个地址开始执行;加载到内存后如何修正一些指令中的地址等等。

那么PE文件中的这些重要信息都是由谁加入的呢?是由编译器和连接器完成的,针对不同的编译器和连接器通常会提供不同的选项让我们在编译和联结生成PE文件的时候对其中的那些Window需要的信息进行设定;当然也可以按照默认的方式编译连接生成Window中默认的信息。

例如:WindowNT默认的程序加载基址是0x40000;你可以在用VC连接生成EXE文件的时候使用选项更改这个地址值。

在不同的操作系统中可执行文件的格式是不同的,比如在Linux上就有一种流行的ELF格式;当然它是由在Linux上的编译器和连接器生成的,所以编译器、连接器是针对不同的CPU架构和不同的操作系统而涉及出来的。

在嵌入式领域中我们经常提到交叉编译器一词,它的作用就是在一种平台下编译出能在另一个平台下运行的程序;例如,我们可以使用交叉编译器在跑Linux的X86机器上编译出能在Arm上运行的程序。

程序是如何运行起来的:一个程序从编写出来到运行一共需要那些工具,他们都对程序作了些什么呢?里面都涉及哪些知识需要学习呢?先说工具:编辑器-》编译器-》连接器-》加载器;首先我们使用编辑器编辑源文件;然后使用编译器编译程目标文件OBJ,这里面涉及到编译原理的知识;连接器把OBJ文件和其他一些库文件和资源文件连接起来生成EXE文件,这里面涉及到不同的连接器的知识,连接器根据OS的需要生成EXE文件保存着磁盘上;当我们运行EXE文件的时候有Window的加载器负责把EXE文件加载到线性地址空间,加载的时候便是根据上一节中说到的PE文件格式中的哪些重要信息。

pe格式化方法(1)

pe格式化方法(1)

pe格式化方法PE格式(Portable Executable format)是Windows操作系统下的一种可执行文件的格式标准,它定义了可执行文件、动态链接库(DLL)和驱动程序等二进制文件的结构和标识方法。

本文将介绍PE格式化的基本原理和方法,并举例说明。

一、PE格式基本原理1. PE格式定义:PE格式是一种COFF(Common Object File Format)文件格式的变体,用于描述32位和64位Windows可执行文件的结构和组织。

2. 文件头部分:PE格式文件的开头是一个固定大小的文件头(File Header),用于描述整个PE文件的组织结构和属性信息,如文件类型、目标体系结构、节表位置等。

3. 节部分:紧随文件头部分的是节(Section)部分,它描述了PE格式文件中各个段或区块的属性和内容,如代码段、数据段、资源段等。

4. 数据目录:PE格式文件中包含了多个数据目录(Data Directory),每个数据目录描述了PE文件中某个特定功能的位置和大小信息,如导入表、导出表、资源表等。

1. 创建空白PE文件:使用合适的开发工具,如Visual Studio等,新建一个空白的PE 文件。

2. 定义文件头:根据所需的文件类型和目标体系结构,填写文件头部分的属性信息。

如指定文件类型为可执行文件(Executable)、目标体系结构为32位或64位等。

3. 定义节表:根据需求,定义PE文件中的各个节的属性和内容,如代码段、数据段、资源段等。

可以使用合适的工具,如Hex编辑器等,手动修改节表。

4. 填充数据目录:根据PE格式的规定,将所需的功能的位置和大小信息填写入数据目录表中,如导入表、导出表、资源表等。

5. 填充节内容:根据需求,将代码、数据和资源等内容填写入相应的节中。

可以使用合适的工具,如文本编辑器等,手动修改和填充节内容。

6. 调整文件大小:根据实际内容大小,调整整个PE文件的大小,确保文件大小与实际内容相符。

PE文件格式

PE文件格式
WORD e_cp; // Pages in file
WORD e_crlc; // Relocations
WORD e_cparhdr; // Size of header in paragraphs
么正确的开始地址是0x401560。如果可执行程序调入0x100000处,则开始地址为0x101560。
因为PE文件的每一个段不必按同样的边界对齐方式调入,因此RVA地址的计算变得比较复
杂。例如,在文件中每一个段往往按512个字节的方式对齐,而在内存中可能以4096字节的方
式对齐。这方面的介绍可见下面的“SectionAlignment”、“FileAlignment”。举个例子,
typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header
WORD e_magic; // Magic number
WORD e_cblp; // Bytes on last page of file
} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
三、文件头(File Header)
通过DOS头,你可以找到一个叫做IMAGE_FILE_HEADER的结构,如下;下面我分别介绍一
下。
typedef struct _IMAGE_FILE_HEADER {
中只有大约100个字节的代码,只输出一个诸如“this program needs windows NT ”之类的
信息。
你可以通过一个叫做IMAGE_DOS_HEADER的结构来识别一个合法的DOS头。这个结构的头两
个字节一定是“MZ”(#define IMAGE_DOS_SIGNATURE "MZ")。怎么才能找到PE开始的标志呢

如何利用pe系统拷贝系统里面的文件

如何利用pe系统拷贝系统里面的文件

来源:有盟装机联盟
如何利用pe系统拷贝系统里面的文件
很多时候我们因为电脑系统突然崩溃而电脑里面的资料全部丢失,给我们的工作生活造成了很大的不便,下面有盟pe系统小编带大家看看如何解决这个问题。

有盟PE中的Win2003pe,一款快速拷贝复制工具“fastcopyVer2.11”。

它不用进入电脑系统,直接启动U盘PE,实现数据拷贝与备份的功能。

下面我给介绍一下,进不了系统的硬盘,数据还能拷贝的情况下,我们使用口袋PE拷贝各个硬盘分区中的资料。

1.下载并安装有盟U盘启动制作工具。

2.选择复制类型,在这里fastcopyVer2.11提供了七种复制类型,用户可以通过下拉框自主进行选择。

3.用户也可以自定义缓存大小,如果文件过大,建议增加缓存大小。

4.选择复制拷贝速度,通过拉动进度条即可改变速度。

5.在fastcopyVer2.11软件界面中间可以自定义一些功能,包括:忽略错误、预计时间、MD5校验。

6.点击显示列表,大家可在界面上看到需要转移文件的大小,个数,时间。

7.点击界面上的执行操作即可开始文件复制拷贝,根据复制拷贝文件数量和大小不同,完成时间也不尽相同,请大家耐心等待。

任务完成后我们可以在界面下方看到完成信息。

通过以上的步骤我们就可以顺利解决系统崩溃导致的电脑数据丢失的难题,有盟pe系统还有其它的功能,如果大家感兴趣的话,可以登录有盟pe官方网站查看相关的内容,希望小编的解答对大家有帮助。

Pe.y 有盟pe系统。

WindowsPE文件格式

WindowsPE文件格式

WindowsPE⽂件格式在PE⽂件头之前理论Windows的PE(Portable Executable)⽂件有两个头,⼀个是是Windows头,⼀个是DOS头。

在⽂件的最开始会有⼀段DOS的EXE⽂件头,来说明这个程序不可以在DOS环境下运⾏。

我们需要在DOS头+3Ch处,会有⼀个4字节的指针指向windows头。

根据+3Ch处的值,定位到Windows⽂件头可以看到"PE"两个字节,Windows头就从此处开始。

这也就是Windows EXE⽂件经常被称为PE⽂件的原因。

实践1. 在xp环境下,⽤QuickView打开⼀个EXE⽂件,观察其头部。

在00h处有两个字节4D 5A表⽰这是⼀个DOS头。

在4Eh处,有⼀个字符串This program cannot be run in DOS mode. 表明这不是⼀个DOS⽂件在3C处,有⼀个四字节指针,其值为000000D0h,颜⾊标黄,指向windows头2. 查看⽂件地址D0处的值可以看到此处的两个字节为50 45即“PE”,表⽰这个EXE⽂件是⼀个PE⽂件,从这两个字节开始才是PE的⽂件头。

PE⽂件头背景知识要了解PE⽂件头的具体内容,我们需要对Windows的内存管理,⽂件存储有⼀定的了解。

接下来做简要的说明,想要了解更详细的内容可以去学习操作系统的相关知识。

Windows通过分段以及分页两种机制管理内存和实现进程的隔离及保护。

以下说明会涉及到⼀些寄存器和⽐较抽象的概念,不懂也没有关系。

只需要知道结论,*⼀个进程的虚拟地址会经过⼀些转换成为真正的物理地址. *进程之间的虚拟地址可以相同,但相同的虚拟地址会转化成不同的物理地址。

在Windows系统中,为了向下兼容,保留了分段(section)的的机制,但是CS,DS,SS这些段地址在GDT表中的值全部为0,所以经过分段后的逻辑地址(logical address)与线性地址(linear address)是完全⼀致的,在此处不⽤过多理会。

提取系统盘中的PE

提取系统盘中的PE

提取系统盘中的PE下面详细说一下提取雨林y5.6系统光盘中的PE系统和PQ工具的方法.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -首先,我们用rar直接把雨林y5.6的iso镜像给解压缩了.看到一大堆文件,和文件夹. 仔细看看就发现.带有PE字样的文件和文件夹只有三个. 保留他们就好了,其他无关的全部删掉.之后打开两个文件夹,发现"WXPE'文件夹里面只有两个文件,显然都删不得.再看看"MINIPE"文件夹.这里面最"特殊"的莫过于" WINPE.INI " 文件.打开先看看里面是啥内容.查看发现,这个文件是一个外部程序的配置文件,就是PE系统里面的一些外部工具.沐珑觉得还是有必要留下这些工具的. (如果你觉得没有用,就可以把它连同"OP.WIM"一块删掉)配置文件里面写得很明显,它调用一个名为"OP.WIM" 的文件. 这个"OP.WIM"文件也自然要保留了.好,接下来删除其他无关的所有文件.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -删减工作到此结束. 接下来是修改启动文件: "DEFAULT.EZB"先把启动界面做好.(找张自己看了舒服的图片,格式要求: BMP256色. 640*480 分辨率)沐珑觉得这个图片不错,就它啦☆⌒_⌒☆先简单PS一下....................好,就这样啦. 接下来把这张图片转成BMP256色. 640*480 分辨率并给它取个名字,就叫"apple"吧(*^__^*)转完格式,直接把图片丢到刚刚提取的" MINIPE " 文件夹里面.准备工作完成.接下来修改"DEFAULT.EZB" 文件.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -需要工具: " EasyBoot "打开EasyBoot 并打开文件" MINIPE " 文件夹下的"DEFAULT.EZB" (可能会提示"找不到图片"别理他)接下把"背景图像"前面的勾勾上.再填入刚刚做的图片文件名"apple.bmp"OK 开始编辑.先把下面的"坐标框"中所有坐标给删光光了. 这些没有用的了.之后要操作的地方就是三个."执行命令" 里面填写要启动的文件.bin 文件格式是bin_*.binbif 文件格式是bif_*.bifini文件要特别注意了.这个有路径指向的! (类似这里沐珑需要启动PQ,它的路径是bcdw/minipe/pq.ini )添加工作完成,接下来是坐标调整.(就是启动画面上鼠标的触发位置)类似这样,选中一个坐标之后.把右边画面上的虚线框调整到合适的大小.(刚好套住PS 上去的字就好啦.)注: 记得把"高亮属性"和"正常属性"所有设置都改成"白色" 白色在这里的意思就是"透明色"好调整完成,可以保存了.接下来是打包iso镜像文件.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -需要工具: " UltraISO "打开软件后," 新建→ 启动光盘镜像"选择文件是刚刚用创建好的EasyBoot 创建好的" DEFAULT.EZB "之后把刚刚提取的那些文件和文件夹一起拉到上面去.给光盘镜像起个名字. 就叫" VMware PE" 吧☆⌒_⌒☆好啦. 文件→另存为. 保存iso镜像文件.全部创建工作到此结束. 看看运行情况怎么样.☆⌒_⌒☆使用虚拟机装载这个iso镜像.设置为" 打开电源时连接" .→ 启动虚拟机!启动正常☆⌒_⌒☆接下来看看PQPQ也启动正常☆⌒_⌒☆再看看PE。

PE文件格式详解(一)

PE文件格式详解(一)

PE文件格式详解(一)0x00 前言PE文件是portable File Format(可移植文件)的简写,我们比较熟悉的DLL和exe文件都是PE文件。

了解PE文件格式有助于加深对操作系统的理解,掌握可执行文件的数据结构机器运行机制,对于逆向破解,加壳等安全方面方面的同学极其重要。

接下来我将通过接下来几篇详细介绍PE文件的格式。

0x01 基本概念PE文件使用的是一个平面地址空间,所有代码和数据都被合并在一起,组成一个很大的组织结构。

文件的内容分割为不同的区块(Setion,又称区段,节等),区段中包含代码数据,各个区块按照页边界来对齐,区块没有限制大小,是一个连续的结构。

每块都有他自己在内存中的属性,比如:这个块是否可读可写,或者只读等等。

认识PE文件不是作为单一内存映射文件被装入内存是很重要的,windows加载器(PE加载器)便利PE文件并决定文件的哪个部分被映射,这种映射方式是将文件较高的偏移位置映射到较高的内存地址中。

当磁盘的数据结构中寻找一些内容,那么几乎能在被装入到内存映射文件中找到相同的信息。

但是数据之间的位置可能改变,其某项的偏移地址可能区别于原始的偏移位置,不管怎么样,所表现出来的信息都允许从磁盘文件到内存偏移的转换,如下图:PS:PE文件头以下的地址无论在内存映射中还是在磁盘映射中都是一样的,当内存分页和磁盘分页一致时无需进行地址转换,只有当磁盘分页和内存分页不一样时才要进行地址转化,这点很重要,拿到PE文件是首先查看分页是否一致。

前两天一直没碰到内存和磁盘分页不一样的,所以这个点一直没发现,今天特来补上。

下面要介绍几个重要概念,分别是基地址(ImageBase),相对虚拟地址(Relative Virtual Address),文件偏移地址(File Offset)。

1)基地址定义:当PE文件通过Windows加载器被装入内存后,内存中的版本被称作模块(Module)。

映射文件的起始地址被称作模块句柄(hMoudule),可以通过模块句柄访问其他的数据结构。

PE文件格式(内容详细)

PE文件格式(内容详细)
EXE文件的格式
简介
在DOS环境下有四种基本的可执行文件格式
批处理文件,以.BAT结尾的文件
设备驱动文件,是以.SYS结尾的文件,如CONFIG.SYS
COM文件,是以.COM结尾的纯代码文件
• 没有文件头部分,缺省情况下总是从0x100H处开始执行, 没有重定位项,所有代码和数据必须控制在64K以内
在Win32位平台可执行文件格式:可移植的可执行文件 (Portable Executable File)格式,即PE格式。MZ文件头 之后是一个以“PE”开始的文件头
安装在硬盘上的程序没运行-静态 加载到内存-动态
EXE文件的格式
MZ文件格式-Mark Zbikowski
.EXE文件由三部分构成:文件头、重定位表和二进制代码 允许代码、数据、堆栈分别处于不同的段,每一段都可以是64KB.
EXE文件的格式
PE文件格式
一般来说,病毒往往先于HOST程序获得控制权。运行 Win32病毒的一般流程示意如下:
①用户点击或系统自动运行HOST程序; ②装载HOST程序到内存;
③通过PE文件中的AddressOfEntryPoint+ImageBase,
定位第一条语句的位置(程序入口); ④从第一条语句开始执行(这时执行的其实是病毒代码); ⑤病毒主体代码执行完毕,将控制权交给HOST程序原来的
病毒通过“MZ”、“PE”这两个标志,初步判断当前程序 是否是目标文件——PE文件。如果要精确校验指定文件是 否为一有效PE文件,则可以检验PE文件格式里的各个数 据结构,或者仅校验一些关键数据结构。大多数情况下, 没有必要校验文件里的每一个数据结构,只要一些关键数 据结构有效,就可以认为是有效的PE文件
PE的意思就是Portable Executable(可移植、可执 行),它是Win32可执行文件的标准格式

PE文件结构 (转贴) 收藏

PE文件结构 (转贴) 收藏
以上的宏返回了文件标志的偏移量,而不管它是哪种类型的可执行文件。所以,文件头部是在DWORD标志之后,还是在WORD标志处,是由这个标志是否Windows NT文件标志所决定的。要解决这个问题,我编写了ImageFileType函数(如下),它返回了映像文件的类型:
//PEFILE.C
首先,Windows的可执行文件类型没有出现在这一列表中,这一点看起来很奇怪。但是,在稍微研究一下之后,就能得到原因了:除了操作系统版本规范的不同之外,Windows的可执行文件和OS/2的可执行文件实在没有什么区别。这两个操作系统拥有相同的可执行文件结构。
现在把我们的注意力转向Windows NT PE文件格式,我们会发现只要我们得到了文件标志的位置,PE文件之后就会有4个字节相跟随。下一个宏标识了PE文件的头部: //PEFILE.C
当为Windows 3.1构建一个应用程序的时候,链接器将向你的可执行文件中链接一个名为WINSTUB.EXE的默认残余程序。你可以用一个基于MS-DOS的有效程序取代WINSTUB,并且用STUB模块定义语句指示链接器,这样就能够取代链接器的默认行为。为Windows NT开发的应用程序可以通过使用-STUB:链接器选项来实现。
USHORT e_cp; // 文件页数
USHORT e_crlc; // 重定义元素个数
USHORT e_cparhdr; // 头部尺寸,以段落为单位
USHORT e_minalloc; // 所需的最小附加段
USHORT e_maxalloc; // 所需的最大附加段
USHORT e_ss; // 初始的SS值(相对偏移量)
#define PEFHDROFFSET(a) ((LPVOID)((BYTE *)a + \

pe dump 实现原理 -回复

pe dump 实现原理 -回复

pe dump 实现原理-回复"PE Dump 实现原理" 具体指的是在Windows 操作系统中,如何获取和分析可执行文件(.exe)或动态链接库文件(.dll)的内部结构、段表、符号表等信息。

本文将一步一步回答这个主题,帮助读者了解PE Dump 工具的实现原理。

第一步:了解PE 文件格式PE(Portable Executable)是Windows 操作系统上常见的可执行文件格式。

在深入研究PE Dump 的实现原理前,我们需要理解PE 文件的基本结构和相关的数据结构。

PE 文件由DOS 头、PE 头、节区表和数据目录等部分组成。

DOS 头是为了兼容DOS 操作系统的历史遗留问题,PE 头记录了PE 文件的入口点、大小等重要信息,节区表则存储了各个节区的相关信息,数据目录则记录了一些重要的数据结构,如导入表、导出表等。

第二步:理解PE Dump 工具的目标PE Dump 工具的目标是将PE 文件的各个部分提取出来,包括DOS 头、PE 头、节区表以及节区的原始数据等。

其主要用途是进行静态分析、代码分析和反编译等。

因此,PE Dump 工具需要具备读取PE 文件、解析PE 文件结构的能力。

第三步:读取PE 文件PE Dump 工具需要能够读取PE 文件的原始二进制数据。

在Windows 系统中,可以通过Win32 API 函数CreateFile 和ReadFile 来实现对文件的读取。

通过这些函数,可以获得PE 文件的文件句柄和文件数据。

第四步:解析PE 文件结构在获得PE 文件的原始数据后,PE Dump 工具需要对这些数据进行解析,以获取PE 文件的各个部分的结构和内容。

通过解析PE 头,可以获得PE 文件的入口点、大小等基本信息。

同样,解析节区表可以获取每个节区的起始地址、大小、属性等详细信息。

解析数据目录可以获得一些重要的数据结构的位置和大小。

第五步:提取PE 文件的部分通过解析PE 文件结构,PE Dump 工具能够准确地定位到PE 文件的各个部分的位置和大小。

PE系统FastCopy文件快拷教程

PE系统FastCopy文件快拷教程

大白菜PE系统FastCopy文件快拷教程
1.将制作好的大白菜u盘启动盘插入usb接口(台式用户建议将u盘插在主机机箱后置的usb接口上),然后重启电脑,出现开机画面时,通过使用启动快捷键引导u盘启动进入到大白菜主菜单界面,选择“【03】运行大白菜Win2003PE 增强版(旧电脑)”回车确认。

如下图所示
2.成功登录到大白菜pe系统桌面后,点击开始菜单- 程序- 文件工具- FastCopy文件快拷,打开文件快拷工具。

如下图所示
3.在弹出的FastCopy文件快拷窗口中,点击“来源”浏览并且选择所要复制的文件,再点击“目标”点击选择文件所要粘贴的位置,最后点击“执行”按钮,耐心等待最下方的状态中等待复制到指定路径直至下方显示“完成”状态即可。

如下图所示
以上就是大白菜PE系统FastCopy文件快拷教程,有不懂的如何加快拷贝速度或者是不懂的如何使用大白菜PE系统FastCopy文件快拷的用户,可以尝试以上的大白菜使用教程操作看看,希望以上的大白菜使用教程可以给大家带来更多的帮助。

有何妙法取出PE文件中的位图资源

有何妙法取出PE文件中的位图资源

应 用程 序 的界 面
2 编 写 代 码 .
这 里 只说 明关 键 的代 码 ,完 整 代 码 可 参 考 源 文 件 。 资 源 段 ( 1 c )是 上 表 中 段 1至 段 n中 的 某 一 段 ,它 .3 段  ̄ r 首 先 ,给 程 序 添 加 函 数 G ts et e r c。该 函 数 主 要 完 成 选 择 R S P E文 件 , 判 断 文 件 格 式 ,找 到 资 源 段 的 工 作 。 具 体 代 码 如
维普资讯
… … … … … … … … … … … … … … ‘ … … ’ … … … … …
实 用第一 智慧 密集
, , … … 。 。 … . … 。 , 。 。 , … 。 。 … …
Af Me s g B x( x s a e o OK ) :
是 以索 引 方 式 存 在 的 。 ( 者 : 申华 申晓 ) 作
( IM P IE E D R) B T A FL H A E ,就 可 以 写成 b 文 件 了 。 mp
下面在 Vsa C++ . i l u 6 0中做一个提取 P E文件位 图资源 的
示例程序 。 1 建 立 工 程 并 增 加 控 件 .
_
_
, 经 过
3 层
I— M
E T Y ( 般 是 3 ,也 有 可 能 NR 一 层
更 少些 。第 一层资 源类 型 ,第 二层资 源名 ,第三层 是资 源语
言 。 ) 最 终 会 找 到 一 个 I A ER S U C A AE T Y 结 M G E O R ED T N R

iti1n n .e ;
I GEs C I _ E D R ¥ e ta ; / 表 MA . E TON H A E s cT b / 段

在系统安装盘里提取WinPE的源码

在系统安装盘里提取WinPE的源码

在系统安装盘里提取WinPE的源码展开全文@Echo OffPUSHD %~dp0COLOR 0BSet Prog=小马WinPE专用单ISO提取程序Set L1= ╭══════════════════╮Set L2=║║Set L3=╭══┤小马WinPE专用单ISO提取程序├══╮Set L4= ║║║║Set L5= ║╰══════════════════╯║Set L6=║║Set L7= ╟════════════════════════╢Set L8= ║版权所有:深度mapeimapei 盗版不究║Set L9= ╰────────────────────────╯Title %Prog%::CheckOSif /i not "%os%."=="Windows_NT." goto SystemErro::判断系统版本并设置TheOSver|find /i " 6.1">nul &&set Winver=WIN7&& set TheOS=WIN7ver|find /i " 6.0">nul &&set Winver=vista&& set TheOS=Vistaver|find /i " 5.0">nul &&set Winver=winnt&& setTheOS=2000ver|find /i " 5.1">nul &&set Winver=winnt&& set TheOS=XPver|find /i " 5.2">nul &&set Winver=winnt&& set TheOS=2003goto Start:SystemErroclsEcho.Echo.Echo 注意:未经测试,本软件可能不适用于非Windows PE/2000/XP/2003/Vista/WIN7 操作系统。

第一节PE文件格式-电脑资料

第一节PE文件格式-电脑资料

第一节PE文件格式-电脑资料第一节 PE文件格式教程1: PE文件格式一览考虑到早期写的PE教程1是自己所有教程中最糟糕的一篇,此番决心彻底重写一篇以飨读者,。

PE 的意思就是Portable Executable(可移植的执行体)。

它是Win32环境自身所带的执行体文件格式。

它的一些特性继承自 Unix的Coff (common object file format)文件格式。

"portable executable"(可移植的执行体)意味着此文件格式是跨win32平台的: 即使Windows运行在非Intel的CPU上,任何win32平台的PE装载器都能识别和使用该文件格式。

当然,移植到不同的CPU上PE执行体必然得有一些改变。

所有 win32执行体 (除了VxD和16位的Dll)都使用PE文件格式,包括NT的内核模式驱动程序(kernel mode drivers)。

因而研究PE文件格式给了我们洞悉Windows结构的良机。

本教程就让我们浏览一下 PE文件格式的概要。

DOS MZ headerDOS stubPE headerSection tableSection 1Section 2Section ...Section n上图是PE文件结构的总体层次分布。

所有PE文件(甚至32位的DLLs) 必须以一个简单的 DOS MZ header 开始。

我们通常对此结构没有太大兴趣。

有了它,一旦程序在DOS下执行,DOS就能识别出这是有效的执行体,然后运行紧随MZ header 之后的DOS stub。

DOS stub实际上是个有效的 EXE,在不支持 PE文件格式的操作系统中,它将简单显示一个错误提示,类似于字符串"This programrequires Windows" 或者程序员可根据自己的意图实现完整的 DOS代码。

通常我们也不对 DOS stub 太感兴趣: 因为大多数情况下它是由汇编器/编译器自动生成。

实验2 PE文件格式分析

实验2 PE文件格式分析
武汉大学信息安全专业计算机病毒实验
第四阶段实验内容
熟悉资源表

利用PEview.exe熟悉资源表的结构

利用PEview.exe分析PEview.exe程序


用UltraEdit修改PEview.exe,使得该文件的 图标变成PEview.ico。 熟悉eXeScope工具的实用,并利用该工具汉 化PEview.exe程序。
实验2 PE文件格式分析
彭国军 guojpeng@
武汉大学信息安全专业计算机病毒实验
实验目的
熟悉各种PE编辑查看工具,详细了解 PE文件格式 2. 重点分析PE文件文件头、引入表、引出 表,以及资源表 3. 了解PE文件格式与PE病毒之间的关系 4. 自己打造一个尽可能小的PE文件
第三阶段实验内容
手工修改hello-2.5.exe程序,使得其可以 弹出第三个对话框(提示框标题为“武 汉大学信安病毒实验”,内容为:你的 姓名+学号)
武汉大学信息安全专业计算机病毒实验
第三阶段实验内容(续1)
找到系统System32目录下的user32.dll文 件,用UltraEdit打开并分析该文件引出表, 找出函数MessageBoxA的地址,并验证 该地址是否正确。
使用UltraEdit观察PE文件例子程序hello-2.5.exe 的16进制数据,在打印稿中画出该PE文件基本 结构

MZ头部+DOS stub+PE文件头+可选文件头+节表+节
使用Ollydbg对该程序进行初步调试,了解该程 序功能结构,在内存中观察该程序的完整结构。 使用UltraEdit修改该程序,使得该程序仅弹出 第二个对话框
武汉大学信息安全专业计算机病毒实验

pe文件格式标准

pe文件格式标准

pe文件格式标准PE文件是Windows操作系统中常见的可执行文件格式,它具有一定的规范和结构。

本文将介绍PE文件格式的标准,以帮助读者更好地理解和应用该文件格式。

一、文件类型PE文件是一种可执行文件格式,其后缀名通常为.exe、.dll或.sys。

根据文件头中的标识,可以确定文件是否为PE文件。

二、文件结构1. DOS头PE文件的第一个部分是DOS头,用于向操作系统提供兼容性支持。

它包含了DOS头标识、指向PE文件的偏移地址等信息。

PE头是PE文件的关键部分,包含了各种信息,如文件类型、入口点地址、导入表、导出表等。

其中,导入表和导出表记录了文件中使用的外部函数和数据。

节表用于描述PE文件的各个节(Sections),每个节都包含了特定的代码、数据或资源。

每个节在节表中都有一个条目,记录了节的名称、在文件中的偏移地址、大小等。

4. 数据目录数据目录记录了PE文件中存储重要信息的位置和大小,如导入表、导出表、资源表等。

每个数据目录都有一个条目,包含了相应信息的位置和大小。

三、文件解析PE文件可以通过解析文件头部和节表来获取所需的信息。

通过解析PE头的入口点地址,可以定位文件的入口点,从而启动程序。

1. 解析DOS头首先,解析DOS头,获取PE头的文件偏移地址。

通过该地址,可以定位到PE头的起始位置。

2. 解析PE头接下来,解析PE头,获取文件的相关信息,如文件类型、入口点地址等。

可以根据需要进一步解析导入表、导出表等信息。

3. 解析节表通过解析节表,可以获取PE文件中各个节的详细信息。

可以根据节的名称或索引来定位到相应的节,并获取节的起始地址、大小等。

四、常见问题与处理方法在处理PE文件时,可能会遇到一些常见的问题,以下列举几个常见问题,并提供相应的处理方法:1. 处理导入表若PE文件中存在外部函数调用,需要解析导入表,并将相应的函数地址重新映射到实际的函数地址上。

2. 处理资源表若PE文件中包含资源,需要解析资源表,并提取所需的资源。

在Windows7中提取Windows PE3.0方法1

在Windows7中提取Windows PE3.0方法1
二、整合需要的文件:
1. 新建h:\pe,新建h:\pe\sources [是文件夹]
2. 复制修改后的boot.wim文件到h:\pe\sources\;复制X:\boot目录(包括文件)到h:\pe\ ;复制X:\efi目录(包括文件)到h:\pe\ ;均在UltraISO里直接[提取到h:\pe\;复制X:\bootmgr文件到h:\pe\ ;(X为windows7光盘符。我的WIN7.ISO文件在I:\分区里)
6、删除h:\new\根目录下的setup.exe文件。
7、imagex /unmount /commit h:\new\ (合并对h:\new\目录中映像文件的修改,并将其卸载) [这个类似(打包)]。实践证明,h:\new\后面的[\]必须有。
8、重新得到的 h:\boot.wim 即为修改后的镜像。 [第一步中提取出来的boot.wim已经被自动(删除)]。
3、在h:下新建文件夹 new ,-这是我新增加的1项,实践证明,此步必作。
4、运行cmd,进入imgaex目录。 我是进入F:\Im\
5、imagex /mountrw h:\boot.wim 2 h:\new\ (将h:\boot.wim镜像映射到h:\new目录) [这个类似(解包)]。实践证明,h:\new\后面的[\]必须有。
如何在提取Windows PE3.0制作方法1:
一、用Imagex6000修改 boot.wim 文件:
1、把windows7光盘(或光盘镜像)里的\sources\boot.wim文件复制到h:\。我是用UltraISO直接从Win7.iso镜像文件里直接提取的。
2、在imgaex目录里右键点击inf文件,选安装。(Imagex 6.0 AIK 封装工具)。我使用的[绿色版]在F:\Im\,就不用安装了。

PE文件格式实验报告

PE文件格式实验报告
五、指导教师评语
成绩
批阅人
日期
1.利用LoadPE软件查询PE文件格式信息。
我们使用LoadPE软件打开3-2.exe文件,位于“实验三”文件夹目录下。
如图所示:
在以上界面中,我们可以看见入口点的值。
点击Sections按钮,可以查询exe文件的区段信息。
点击Directories按钮,可以查询数据目录表信息。
2.使用PE Explorer软件查询PE文件格式信息。
3.利用加壳软件进行加壳处理。
我们这里使用的是ASPACK.exe软件。
下载该软件,打开运行。载入win-1.exe文件,即可进行加壳处理。
将原文件和加壳后处理的提交至网站,分析结果如下:
原文件:
加壳之后的文件:
四、实验小结(包括问题和解决方法、心得体会、意见与建议等)
本次实验是对PE文件格式进行分析,对PE文件有了一个大致的了解,如什么是PE文件的文件头,什么是区段,什么是数据目录。由于现阶段大都的病毒都是PE病毒,所以了解它们可以更好地知道PE病毒是如何感染PE文件的。不仅如此,对PE文件的修改、加壳等操作也证实了PE文件并不是不可编辑的,也可以让我们更好地了解PE文件的内部结构。
打开PE Explorer软件,载入win-1.exe文件,该文件位于“实验三”目录下。
默认查询文件头信息,这里我们可以查询到入口点等信息。
点击“数据目录”按钮,可以查看数据目录信息。
点击“区段头”,可以查询区段信息。
点击“资源”按钮,可以查询资源信息。
点击“多重保存”,可以提取资源信息。
点击“资源编辑”按钮,可以进入编辑状态。选择需要替换的资源,即可成功替换。这里需要注意的是资源图片的大小必须与之前一致。

教你一步一步提取PE3.0

教你一步一步提取PE3.0

教你⼀步⼀步提取PE3.0在D盘新建⽂件夹winpe,在winpe中新建sources、pe3和new⽂件夹,把附件中提供的⼯具imagex连⽂件夹⼀起放到winpe ⽬录中。

制作⽅法:1、把windows7光盘(或光盘镜像)⾥的\sources\boot.wim⽂件复制到d:\winpe\sources⽬录2、在附件提供imgaex⽬录⾥右键点击inf⽂件,选安装。

(Imagex 6.0 AIK 封装⼯具)3、运⾏cmd,进⼊imgaex⽬录。

4、imagex /mountrw d:\winpe\sources\boot.wim 2 d:\winpe\new (将d:\winpe\sources\boot.wim镜像映射到d:\winpe\new⽬录)5、删除d:\winpe\new根⽬录下的setup.exe⽂件。

删除sources⽂件夹,很重要,可以精简winpe哟。

6、imagex /unmount /commit d:\winpe\new (合并对d:\winpe\new⽬录中映像⽂件的修改,并将其卸载)7、imagex /compress maximum /export "d:\winpe\sources\boot.wim" 2 "d:\winpe\pe3\boot.wim",把boot.wim分离并重新压缩。

7、d:\winpe\pe3\boot.wim即为修改后的镜像。

这个时候运⾏这个映像winpe是默认的“命令提⽰符”窗⼝。

制作PE光盘镜像:1. 新建d:\winpe\pe,新建d:\winpe\pe\sources2. 复制(windows7光盘为X)X:\boot⽬录(包括⽂件)到d:\winpe\pe复制X:\efi⽬录(包括⽂件)到d:\winpe\pe复制X:\bootmgr⽂件到d:\winpe\pe复制修改后的boot.wim⽂件到d:\winpe\pe\sources(X为windows7光盘符)3. ⽤UltraISO提取windows7光盘引导⽂件,保存为windows7.bif4. ⽤UltraISO将d:\winpe\pe下的⽬录和⽂件添加到光盘镜像,加载windows7.bif,保存镜像为PE 3.0.iso图像shell(下⾯内容来⾃M$)Winpeshl.ini 可控制是否将⾃定义外壳程序加载到 Windows PE ⽽不是默认的“命令提⽰符”窗⼝。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
signature[4] = '\0';
cout<<""<<signature<<endl;
//FILE_HEADER
cout<<"运行平台:"<<file_header.Machine<<endl;
cout<<"PE中节的数量:"<<file_header.NumberOfSections<<endl;
DWORD DelayIAT;
DWORD DelayINT;
DWORD BoundDelayIT;
DWORD UnloadDelayIT;
DWORD TimeStamp;
}IMAGE_DELAY_IMPORT_DESCRIPTOR;
void Analyse_File_Attr(WORD attribute);
cout<<"文件创建日期和时间:"<<file_header.TimeDateStamp<<endl;
cout<<"指向符号表:"<<file_header.PointerToSymbolTable<<endl;
cout<<"符号表中的符号数量:"<<file_header.NumberOfSymbols<<endl;
cout<<endl;
//OPTION_HEADER
cout<<"扩展头结构的长度:"<<file_header.SizeOfOptionalHeader<<endl;
cout<<"文件属性:"<<endl;
Analyse_File_Attr(file_header.Characteristics);
//IMAGE_FILE_MACHINE_ALPHA
back_insert_iterator <string> (Tem_Str));
return Tem_Str;
}
string DecToHex(int num)
{
string str = "";
int divNum = 0;
while (num)
{
divNum = num %16;
#define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8 //从原映像中的RVA到经过代码重排后的映像中的RVA的映射。
#define IMAGE_DEBUG_TYPE_BORLAND 9 //保留,供Borland公司使用。
#define IMAGE_DEBUG_TYPE_RESERVED10 10 //保留。
str += 'C';
break;
case 13:
str += 'D';
break;
case 14:
str += 'E';
break;
case 15:
str += 'F';
break;
}
num = num /16;
cout<<"OEM信息:"<<dos_header->e_oeminfo<<endl;
cout<<"保留字:";
for (int i = 0; i < 10;_header ->e_res2[i] <<" ";
}
cout<<endl;
"延迟导入表地址:",
"CLR表地址:",
"预留类型地址:",
};
string file_Attribute[16] =
{
"文件中不存在重定位信息",
"文件是可执行的",
"不存在行信息",
"不存在符号信息",
"调整工作集",
"应用程序可处理大于2G的地址",
IMAGE_OPTIONAL_HEADER option_header;
file_header = nt_header ->FileHeader;
option_header = nt_header ->OptionalHeader;
if (nt_header == NULL)
{
case 8:
str += '8';
break;
case 9:
str += '9';
break;
case 10:
str += 'A';
break;
case 11:
str += 'B';
break;
case 12:
{
return;
}
magic[0] = dos_header ->e_magic;
magic[1] = dos_header ->e_magic >>8;
magic[2] = '\0';
cout<<"exe标志:"<<magic<<endl;
cout<<"最后页中的字节数:"<<dos_header->e_cblp<<endl;
switch(divNum)
{
case 0:
str += '0';
break;
case 1:
str += '1';
break;
case 2:
str += '2';
break;
case 3:
str += '3';
#define IMAGE_DEBUG_TYPE_MISC 4 //DBG文件的位置。
#define IMAGE_DEBUG_TYPE_EXCEPTION 5 //.pdata节的副本。
#define IMAGE_DEBUG_TYPE_FIXUP 6 //保留。
#define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7 //从经过代码重排后的映像中的RVA到原映像中的RVA的映射。
break;
case 4:
str += '4';
break;
case 5:
str += '5';
break;
case 6:
str += '6';
break;
case 7:
str += '7';
break;
1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768
};
string Reverse_String(string str)
{
string Tem_Str;
copy(str.rbegin(), str.rend(),
}
str += "x0";
return Reverse_String(str);
}
void WriteDosHeaderInfo(const IMAGE_DOS_HEADER *dos_header)
{
char magic[3];
if (dos_header == NULL)
#ifndef PEINFO_H
#define PEINFO_H
#include <Windows.h>
//调试信息类型
#define IMAGE_DEBUG_TYPE_UNKNOWN 0 //未知值,所有工具均忽略此值。
#define IMAGE_DEBUG_TYPE_COFF 1 //COFF调试信息(行号信息、符号表和字符串表)。文件头中也有相关域指向这种类型的调试信息。
{
"导出表地址:",
"导入表地址:",
"资源表地址:",
"异常表地址:",
"安全表地址:",
"重定位表表地址:",
"调试表地址:",
"版权表地址:",
"全局指针表地址:",
"线程本地存储表地址:",
"加载配置表地址:",
"绑定导入表地址:",
"IAT地址:",
cout<<"初始IP值:"<<dos_header->e_ip<<endl;
cout<<"初始CP值:"<<dos_header->e_cs<<endl;
相关文档
最新文档