EXE文件里奇怪的东西!有谁知道?

seuqcaj 2003-08-29 08:38:40
用MASM32生成的PE文件头里,在字符串“This program cannot be run in DOS mode”与“PE”标志之间的是什么东西?竟有几十字节之多!这些东西即不属于dos头,也不属于pe头,我看了所有介绍dos和windows可执行文件格式的资料,全都没有提及那些是什么东西,我把它全填0,文件在dos和windows里仍可正常运行,真是太奇怪了,希望大家都来研究研究。

就是地址0080到00BF这里面的东西

0000 4D-5A-90-00 03-00-00-00 04-00-00-00 FF-FF-00-00 MZ?........
0010 B8-00-00-00 00-00-00-00 40-00-00-00 00-00-00-00 ?......@.......
0020 00-00-00-00 00-00-00-00 00-00-00-00 00-00-00-00 ................
0030 00-00-00-00 00-00-00-00 00-00-00-00 C0-00-00-00 ............?..
0040 0E-1F-BA-0E 00-B4-09-CD 21-B8-01-4C CD-21-54-68 ?.???L?Th
0050 69-73-20-70 72-6F-67-72 61-6D-20-63 61-6E-6E-6F is program canno
0060 74-20-62-65 20-72-75-6E 20-69-6E-20 44-4F-53-20 t be run in DOS
0070 6D-6F-64-65 2E-0D-0D-0A 24-00-00-00 00-00-00-00 mode....$.......
0080 5F-57-0B-BF 1B-36-65-EC 1B-36-65-EC 1B-36-65-EC _W?6e?6e?6e?
0090 95-29-76-EC 16-36-65-EC E7-16-77-EC 1A-36-65-EC ?v?6e扃w?6e?
00A0 52-69-63-68 1B-36-65-EC 00-00-00-00 00-00-00-00 Rich6e?.......
00B0 00-00-00-00 00-00-00-00 00-00-00-00 00-00-00-00 ................
00C0 50-45-00-00 4C-01-03-00 2C-81-86-3E 00-00-00-00 PE..L.,亞>....
00D0 00-00-00-00 E0-00-0F-01 0B-01-05-0C 00-06-00-00 ....? ...
00E0 00-00-01-00 00-00-00-00 8F-11-00-00 00-10-00-00 .......?.....
00F0 00-20-00-00 00-00-40-00 00-10-00-00 00-02-00-00 . ....@.......
0100 04-00-00-00 00-00-00-00 04-00-00-00 00-00-00-00 ..............
0110 00-30-01-00 00-04-00-00 00-00-00-00 02-00-00-00 .0...........
0120 00-00-10-00 00-10-00-00 00-00-10-00 00-10-00-00 ............
0130 00-00-00-00 10-00-00-00 00-00-00-00 00-00-00-00 ...............
0140 20-20-00-00 28-00-00-00 00-00-00-00 00-00-00-00 ..(...........
0150 00-00-00-00 00-00-00-00 00-00-00-00 00-00-00-00 ................
0160 00-00-00-00 00-00-00-00 00-00-00-00 00-00-00-00 ................
0170 00-00-00-00 00-00-00-00 00-00-00-00 00-00-00-00 ................
0180 00-00-00-00 00-00-00-00 00-00-00-00 00-00-00-00 ................
0190 00-00-00-00 00-00-00-00 00-20-00-00 20-00-00-00 ......... .. ...
01A0 00-00-00-00 00-00-00-00 00-00-00-00 00-00-00-00 ................
01B0 00-00-00-00 00-00-00-00 2E-74-65-78 74-00-00-00 .........text...
01C0 9C-05-00-00 00-10-00-00 00-06-00-00 00-04-00-00 ?...........
01D0 00-00-00-00 00-00-00-00 00-00-00-00 20-00-00-60 ............ ..`
01E0 2E-72-64-61 74-61-00-00 E6-00-00-00 00-20-00-00 .rdata..?... ..
01F0 00-02-00-00 00-0A-00-00 00-00-00-00 00-00-00-00 ...............

把它独立出来看:

0080 5F-57-0B-BF 1B-36-65-EC 1B-36-65-EC 1B-36-65-EC _W?6e?6e?6e?
0090 95-29-76-EC 16-36-65-EC E7-16-77-EC 1A-36-65-EC ?v?6e扃w?6e?
00A0 52-69-63-68 1B-36-65-EC 00-00-00-00 00-00-00-00 Rich6e?.......

...全文
39 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
紫郢剑侠 2003-08-31
  • 打赏
  • 举报
回复
DELPHI生成的可执行程序也有 DOS STUB.

大家在回贴时请先看清楚楼主的原贴.
W32API 2003-08-30
  • 打赏
  • 举报
回复
这个是 PE 文件结构故意加上去的,以注明该文件运行的系统环境。
在 DOS 下运行时,DOS 系统会显示这一个提示。
c17338996 2003-08-30
  • 打赏
  • 举报
回复
这个鸟东西是采用微软的开发工具开发的时候, 编译的时候,编译器默认添加到dos stub 中的,添加这个冬冬的目的是为了在dos 下能够对这个window 下的程序进行解析执行,不过执行的结果就是告诉你“The program can.....”如果没有这个dos stub ,在dos 下是无法执行windos程序的。 这是ms 人性化的一个体现。
蚊子王 2003-08-30
  • 打赏
  • 举报
回复
对EXE本身来说,好象没有用,可能是LINKER的额外信息吧。
记得DOS下,BORLAND的TLINK在1Fh处要插入TLINK的版本号,对于PE这方面不太清楚。
nicememory 2003-08-30
  • 打赏
  • 举报
回复
mark
紫郢剑侠 2003-08-30
  • 打赏
  • 举报
回复
同意cui(蚊子王) 的看法.
asmzyd 2003-08-30
  • 打赏
  • 举报
回复
DOS插桩代码
seuqcaj 2003-08-29
  • 打赏
  • 举报
回复
请大家看清楚贴子开头的文字内容再回贴,以上两位完全答非所问。
再次说明一下,用Delphi等的linker生成的EXE文件不会有那些奇怪的内容。
即不属于dos头,也不属于pe头!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
gks686 2003-08-29
  • 打赏
  • 举报
回复
如果把PE格式的文档拿到DOS下运行,那么DOS就会装入你所说的那些东西,一般来说是一段显示This program cannot be run in DOS mode字符串的小程序,你把它全部置0,肯定可以在Windows下运行,但在DOS下运行就会出错.另外你可以在连接的时候手工指定这一段程序,详细方法可见LINK.EXE的参数说明文档.
linquanhouzi 2003-08-29
  • 打赏
  • 举报
回复
你取学学 pe结构 网上有自己看好了

21,453

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧