- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[Windows可执行文件简述
Windows可执行文件简述Windows操作系统中,一个用户可以最直接体会到的文件的形式就是以.exe、.dll等为扩展名的可执行文件。伴随着Windows操作系统的不断进步,其可执行文件的格式也发生了巨大变化。这期间主要有4个过程:DOS中出现的最简单的以.com为扩展名的可执行文件和以.exe为扩展名的MZ格式(MZ是MZ格式的主要作者Mark Zbikowski的名字的缩写)的可执行文件,Win 3.x下出现的NE(New Executable:分段可执行文件)格式的.exe和.dll文件,Win 3.x和Win9x所专有的LE(Linear Executable:线性可执行文件,专用于VxD文件),Win9x和Win NT/2000/XP下的32位的可执行文件PE(Portable Executable:可移动的可执行文件)。这里面com、MZ和NE属于Win16,PE属于Win32,LE可以兼容Win16和Win32。
?
在一个操作系统中,可执行的代码最终被装入内存执行之前是以文件的方式存放在磁盘中的,也就是以可执行文件的方式。下面是Microsoft Windows操作系统中的可执行文件的概述。
?
1.com格式
Windows下最简单的可执行文件就是DOS下的以.com为扩展名的com文件。com文件是旧有的只有64kb内存的cp/m机器的产物。com格式文件最大64K,com文件内含16位程序的二进制代码映像,没有重定位信息。
?
com文件包含程序的二进制代码的一个绝对映像。也就是说,为了运行程序准确的处理器指令和内存中的数据,MS-DOS通过直接把该映像从文件拷贝到内存而加载com程序;它不作任何改变。
?
为加载一个com程序,MS-DOS首先试图分配内存,因为com程序必须位于一个64K的段中,所以com文件的大小不能超过65,024(64K减去用于PSP的256字节和用于一个起始堆栈的至少256字节)。如果MS-DOS不能为程序、一个PSP、一个起始堆栈分配足够内存,则分配尝试失败。否则,MS-DOS分配尽可能多的内存(直至所有保留内存)。即使com程序本身不能大于64K。在试图运行另一个程序或分配另外的内存之前,大部分com程序释放任何不需要的内存。
?
分配内存后,MS-DOS在该内存的头256字节建立一个PSP(Program Segment Prefix,程序段前缀),PSP结构如下:
?
偏移 大小(Byte) 说?明 0000h 02 中断20H 0002h 02 以节计算的内存大小(利用这个可看出是否感染引导型病毒) 0004h 01 保留 0005h 05 至DOS的长调用 000Ah 02 INT 22H 入口 IP 000Ch 02 INT 22H 入口 CS 000Eh 02 INT 23H 入口 IP 0010h 02 INT 23H 入口 CS 0012h 02 INT 24H 入口 IP 0014h 02 INT 24H 入口 CS 0016h 02 父进程的PSP段值(可测知是否被跟踪) 0018h 14 存放20个SOFT号 002Ch 02 环境块段地址(从中可获知执行的程序名) 002Eh 04 存放用户栈地址指针 0032h 1E 保留 0050h 03 DOS调用(INT 21H / RETF) 0053h 02 保留 0055h 07 扩展的FCB头 005Ch 10 格式化的FCB1 006Ch 10 格式化的FCB2 007Ch 04 保留 0080h 80 命令行参数长度 0081h 127 命令行参数 ?
?
?
如果PSP中的第一个FCB含有一个有效驱动器标识符,则置AL为00h,否则为0FFh。MS-DOS还置AH为00h或0FFh,这依赖于第二个FCB是否含有一个有效驱动器标识符。
?
建造PSP后,MS-DOS在PSP后立即开始(偏移100h)加载com文件,它置SS、DS和ES为PSP的段地址,接着创建一个堆栈。为了创建这个堆栈,MS-DOS置SP为0000h。如果没有分配64K内存,则要置寄存器为比所分配的字节总数大2的值。最后,它把0000h推进栈,这是为了保证与在早期MS-DOS版本上设计的程序的兼容性。
?
MS-DOS通过把控制传递偏移100h处的指令而启动程序。程序设计者必须保证com文件的第一条指令是程序的入口点。
?
注意,因为程序是在偏移100h处加载,因此所有代码和数据偏移也必须相对于100h.汇编语言程序设计者可通过置程序的初值为100h而保证这一点(例如通过在原程序的开始使用语句org 100h)。
?
下面是一个简单的com文件Win32 ASM的例子:
?
MA
您可能关注的文档
最近下载
- 渤海稠油油田聚合物驱高效开采技术.doc
- 重症患者的早期康复课件.pptx
- 中国南方电网公司招聘笔试题库2025.pdf
- 电气工程基础课程设计报告-110kV变电站电气系统初步设计.doc
- 化工常用阀门介绍.doc VIP
- 新仁爱科普2024版英语七年级上册Unit 1 Let's be friends大单元整体教学设计.docx
- 高考数学五年(2020-2024)真题《空间向量与立体几何(解答题)》分类汇编.docx
- 香港街头最不缺的就是美女,来自世界各地.pdf VIP
- 高考数学五年(2020-2024)真题《空间向量与立体几何》分类汇编.docx
- 2024年考务人员培训系统考试参考答案.docx VIP
文档评论(0)