EXE与TXT 的问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 10:45:50
今天突发奇想,把我编的一个程序A.exe重命名为A.txt
结果打开后全部都是乱码文字(其中也有能看懂的一些规则文字)
比如 This program cannot be run in DOS mode

然后我又将A.txt重命名为A.exe,发现A.exe仍然能正常运行

然后我又将A.exe重命名为A.txt ,把A.txt中的文本信息一字不漏得复制下来,新建一个B.txt,把那些乱码复制到B.txt,一字不漏
重命名B.txt为 B.exe
打开B.exe,不能运行

为什么?谁能详细讲下,谢谢

缺少文件头或壳代码 EXE生成封装的时候都会加一个可自身试行的文件头 如果用TXT直接复制代码 是缺少文件头的

参考资料:

EXE文件结构

EXE 文件比较复杂,每个EXE文件都有一个文件头,结构如下:
EXE文件头信息
―――――――――――――――――――
├ 偏移量 ┤ 意义 ┤
├00h-01h ┤MZ'EXE文件标记 ┤
├2h-03h ┤文件长度除512的余数 ┤
├04h-05h ┤...............商 ┤
├06h-07h ┤重定位项的个数 ┤
├08h-09h ┤文件头除16的商 ┤
├0ah-0bh ┤程序运行所需最小段数 ┤
├0ch-0dh ┤..............大.... ┤
├oeh-0fh ┤堆栈段的段值 (SS) ┤
├10h-11h ┤........sp ┤
├12h-13h ┤文件校验和 ┤
├14h-15h ┤IP ┤
├16h-17h ┤CS ┤
├18h-19h ┤............ ┤
├1ah-1bh ┤............ ┤
├1ch ┤............ ┤
―――――――――――――――――――――――――
.EXE文件包含一个文件头和一个可重定位程序映象。文件头包含MS-DOS用于加载程序的信息,例如程序的大小和寄存器的初始值。文件头还指向一个重定位表,该表包含指向程序映象中可重定位段地址的指针链表。文件头的形式与EXEHEADER结构对应:
EXEHEADER STRUC
exSignature dw 5A4Dh ;.E