EXE File英文全名executable file ,译作可执行文件,可移植可执行 (PE) 文件格式的文件,它可以加载到内存中,并由操作系统加载程序执行,是可在操作系统存储空间中浮动定位的可执行程序。如记事本程序notepad.exe ,可以用来编辑文档,如:测试.txt双击打开notepad.exe记事本程序来进行编辑处理。
定义
EXE File 可执行程序 一种可在操作系统存储空间中浮动定位的可执行程序。
MS-DOS和MS-WINDOWS下,此类
文件扩展名为.exe。
WINDOWS操作系统中的二进制
可执行文件,可执行文件分两种一种是
后辍名为·COM另一种就是.EXE 了。
.COM一般用于DOS,在WINDOWS系统中的执行文件一般都是·EXE文件在 MS-DOS 中,用以标识可执行文件的文件
扩展名。用户在提示行中输入不带 .exe
扩展名的文件名后按 Enter 键就能运行可执行程序。
结构
EXE文件分为两个部分: EXE文件头和程序本体。exe文件比较复杂,属于一种多段的结构,是DOS最成功和复杂的设计之一。每个exe文件包含一个文件头和一个可重定位程序的映像。文件头包含MS-DOS用于加载程序的信息,例如程序的大小和寄存器的初始值。文件头还指向一个重定位表,该表包含指向程序映像中可重定位段地址的指针链表。MS-DOS通过把该映像直接从文件复制到内存加载exe程序,然后调整定位表中说明的可重定位段地址。定位表是一个重定位指针数组,每个指向程序映像中的可重定位段地址。
EXE 文件比较复杂,每个EXE文件都有一个
文件头,结构如下:
EXE文件头信息
―――――――――――――――――――
├00h-01h ┤MZ'EXE文件标记 ┤
├2h-03h ┤文件长度除512的余数 ┤
├04h-05h ┤...............商 ┤
├06h-07h ┤重定位项的个数 ┤
├08h-09h ┤文件头除16的商 ┤
├0ah-0bh ┤程序运行所需最小段数 ┤
├0ch-0dh ┤..............大.... ┤
├10h-11h ┤........sp ┤
├12h-13h ┤文件校验和 ┤
├14h-15h ┤IP ┤
├16h-17h ┤CS ┤
├18h-19h ┤............ ┤
├1ah-1bh ┤............ ┤
├1ch ┤............ ┤
―――――――――――――――――――――――――
.EXE文件包含一个
文件头和一个可
重定位程序映象。文件头包含MS-DOS用于加载程序的信息,例如程序的大小和寄存器的初始值。文件头还指向一个重定位表,该表包含指向程序映象中可重定位
段地址的
指针链表。文件头的形式与EXEHEADER结构对应:
EXEHEADER STRUC
exSignature dw 4D5AH ;.EXE标志
exExraBytes dw ? ;最后(部分)页中的字节数
exPages dw ? ;文件中的全部和部分页数
exRelocItems dw ? ;重定位表中的指针数
exHeaderSize dw ? ;以
字节为单位的
文件头大小
exMinAlloc dw ? ;最小分配大小
exMaxAlloc dw ? ;最大分配大小
exInitSS dw ? ;初始SS值
exInitSP dw ? ;初始SP值
exChechSum dw ? ;补码校验值
exInitIP dw ? ;初始IP值
exInitCS dw ? ;初始CS值
exRelocTable dw ? ;
重定位表的字节
偏移量exOverlay dw ? ;覆盖号
详细说明
EXEHEADER ENDS程序映象,包含处理器代码和程序的初始数据,紧接在
文件头之后。它的大小以
字节为单位,等于.EXE文件的大小减去文件头的大小,也等于exHeaderSize的域的值乘以16。MS-DOS通过把该映象直接从文件拷贝到内存加载.EXE程序然后调整定位表中说明的可
重定位段地址。
定位表是一个重定位
指针数组,每个指向程序映象中的可重定位段地址。文件头中的exRelocItems域说明了数组中指针的个数,exRelocTable域说明了分配表的起始文件
偏移量。每个重定位指针由两个16位值组成:偏移量和段值。 为加载.EXE程序,MS-DOS首先读
文件头以确定.EXE标志并计算程序映象的大小。然后它试图申请内存。首先,它计算程序
映象文件的大小加上PSP的大小再加上EXEHEADER结构中的exMinAlloc域说明的内存大小这三者之和,如果总和超过最大可用内存块的大小。则MS-DOS停止加载程序并返回一个出错值。否则面,它计算程序映象的大小加上PSP的大小再加上EXEHEADER结构中exMaxAlloc域说明的内存大小之和,如果第二个总和小于最大可用内存块的大小,则MS-DOS 分配计算得到的内存量。否则,它分配最大可用内存块。分配完内存后,MS-DOS确定
段地址,也称为起始段地址,MS-DOS从此处加载程序映象。如果exMinAlloc域和exMaxAlloc域中的值都为零,则MS-DOS把映象尽可能地加载到内存最高端。否则,它把映象加载到紧挨着PSP域之上。接下来,MS-DOS读取
重定位表中的项目调整所有由可重定位指针说明的段地址。对于重定位表中的每个
指针,MS-DOS寻找程序映象中相应的可重定位段地址,并把起始段地址加到它之上。一旦调整完毕,
段地址便指向了内存中被加载程序的代码和
数据段。 MS-DOS在所分配内存的最低部分建造256字节的PSP,把AL和AH设置为加载 .COM程序时所设置的值。MS-DOS使用
文件头中的值设置SP与SS,调整SS初始值,把起始地址加到它之上。MS-DOS还把ES和DS设置为PSP的段地址.最后,MS-DOS从
程序文件头读取CS和IP的初始值,把起始段地址加到CS之 上,把控制转移到位于调整后地址处的程序。
读取源代码
生成的程序是不能看到源代码的,不过可以看到那个程序的资源,用E-Code Explorer 反汇编调试由易语言编译生成的易格式可执行文件,分析内部结构,查看其中的各项数据。
【功能简介】
1.格式分析:分析易格式可执行文件的总体结构,查看对应项的数据。分别对PE骨骼(PE头)和易格式原体分析,以树形结构清晰的显示,同时辅以详细的分析表格。
2.反汇编分析:快速的静态反汇编易格式可执行文件。提供方便的跳转、调用目标地址的代码预览功能。
3.窗体分析:对易格式可执行文件中包含的窗体数据分析。以树型结构清晰的显示窗体单元的从属结构。详细的控件属性显示、准确的事件处理函数定位、与反汇编模式便捷的切换,让使用者可以立即进入要调试的事件函数领空,避免在runtime的空间里四处打转浪费时间。这一点对于调试非线性事件驱动类型的程序是必须的。
4.符号修饰:可以调用易语言支持库作为符号表,对反汇编后的代码进行修饰,可以直接分析出函数所调用的方法,操作的属性,使用到的常量、基本数据类型、自定义数据类型和窗口单元。极大地提高了代码的可读性。
5.内部数据分析:能够分析出程序使用到的常量、
API函数、服务,调用的支持库。
6.多种加载方式:支持从文件加载和从某一进程的内存中直接加载反汇编。直接从进程列表附加,可以避免一部分AntiDebug造成的调试困难。
7.支持多种格式:支持标准PE可执行文件,易格式原体文件,其他类型的易格式文件。均可正确分析。
8.易格式捕捉者:对于不明外壳的易格式可执行文件(如:加壳后的,通过其它手段封装的),能够方便快速的进行分析。
9.提供十六进制文件查看功能。
10.提供多种辅助工具,完成从内存dump易格式原体、修复重定位信息、易格式原体生成EXE文件等功能。
11.分析结果和反汇编结果均可直接导出生成报告文件。
12.支持自定义反汇编,HEX查看的环境颜色,你可以选择自己喜欢的颜色来阅读代码。
13.详细的分析设置,可以自己设置最合适的调试环境。
14.提供文件拖放功能,直接进行分析或调试。
15.支持从命令行获取要分析的文件。
注意
使用邮箱或qq传送文件时,如果文件类型是exe文件。一般服务器都不允许传送,甚至会当做病毒而报错。对此,可将.exe
文件压缩或修改扩展名后(如改为.ex3)再进行传送。