首页
社区
课程
招聘
[求助]为什么exe文件把后缀改为com后仍可运行
发表于: 2010-9-30 09:59 10405

[求助]为什么exe文件把后缀改为com后仍可运行

2010-9-30 09:59
10405
小弟初学pe结构,近日电脑中毒,感染全部exe文件,病毒修改exe文件关联,导致exe文件无法打开。想修改注册表奈何regedit.exe也打不开,一气之下将其后缀改为com,竟然可以运行。经实验其他exe文件也是如此。我知道exe的结构与com的完全不同,那为什么修改后缀后可运行?

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
系统很聪明,载入com后发现是pe文件,就进行pe载入运行的工作。
2010-9-30 10:22
0
雪    币: 110
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
wzb
3
exe的pe结构与com完全不同啊
2010-9-30 10:25
0
雪    币: 33
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
com和exe在注册表里的OPEN是一样的吧
2010-9-30 11:34
0
雪    币: 37
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
COM文件是一种可执行程序的内存映象文件,它与只有16位地址线的8位机上的CP/M操作系统下的可执行程序结构相似。在COM程序执行过程中,除了调用DOS功能和 ROM BIOS 功能,以及用户特意安排外,段寄存器一般不发生变化。四个段寄存器具有同样的内容,都指向PSP,因此程序的大小仍限于64k以内。COM文件的入口必须是100H,而EXE文件可以有多个段。其中CS和SS以及IP和SP在程序装入时由DOS根据文件头中的信息初始化,ES和DS则指向PSP。EXE文件除了程序本身外,还要包括文件头(512字节的整数倍),因而所占磁盘空间大一些,装入也慢一些,但程序大小不受限制。EXE文件用debug修改后,无法直接写回磁盘上去。

一、相同点
二者都是DOS下的可执行文件。.COM文件是可执行的二进制代码文件,.EXE文件是可执行的浮动代码文件。
二、不同点
(1).COM文件一般比较小,其大小不能超过64KB,而.EXE文件一般比较大,可以超过64KB。
(2).COM文件装入内存较快,而.EXE文件较慢。
(3).COM文件一般比较简单,.EXE文件则比较复杂,编写的难度较大。
(4).COM文件在执行时段寄存器含有相同的值,即代码、数据等混合在一起,而.EXE文件在执行时段寄存器含有不同的值,即代码、数据等驻留在不同的段中。
(5)驻留在磁盘上的.COM文件既无文件头也没有任何其它的内部标识信息,而驻留在磁盘上的.EXE文件有一个文件头(也称作控制信息块)、一个重定位图以及DOS使用的其它信息。
xxxx(6)对.COM文件来说,DOS的装入程序不能为其执行段重定位,而对.EXE文件来说,其执行段可以被重定位。
(7).COM文件只能有一个段,而.EXE文件可以有一个以上的段。
(8).COM文件不能有段堆栈,.EXE文件则可以有。
2010-9-30 14:24
0
雪    币: 110
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
wzb
6
COM文件大小不能超过64KB,但是把一个大小超过64KB的exe文件改后缀为com仍可执行
COM文件只能有一个段,但是把一个有多个段的exe文件改后缀为com仍可执行
COM文件不能有段堆栈,但是把一个有段堆栈的EXE文件改后缀为com仍可执行
怪哉,怪哉
2010-9-30 15:37
0
雪    币: 37
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这课呢个是程序设计的一个缺陷吧,目前也没有去研究有什么具体的影响。
2010-9-30 15:46
0
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我说是智能化载入,你说是bug,真是理解不同啊。
2010-9-30 20:24
0
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
你如果真把exe文件当成com文件载入内存并运行,那么就挂了。想想4d,5A......是什么代码?接下去,死机。
2010-9-30 20:26
0
雪    币: 500
活跃值: (11)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
10
你改为.bat……照样走。。。这个系统管的
2010-9-30 20:59
0
雪    币: 38
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
当你在 资源管理器中 打开一个文件 时,它首先按照后缀名 寻找与此 文件相关联的 可执行程序(EXE),然后把这个文件的完整路径按照参数传递给 相应可执行文件,并执行这个可执行文件。
但是若这个文件 恰好 自己就是可执行文件,windows就会将它执行,装载之前还要判断可执行文件的类型,而不是单单按照 .com或.exe的后缀名直接就执行了

可以理解为两个步骤吧,1)有后缀名判断是否为可执行文件。2)若是,是哪种可执行文件
像下面的使用 cmd中 ftype 命令显示的文件关联,可以看出exe,com,bat都是用 自己本身 打开,就是说运行自己
那么windows当然要继续判断到底是 bat还是exe什么的
你的中毒应该就是出在 第1)步,病毒把 %1 给改了

txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1
exefile="%1" %*
comfile="%1" %*
batfile="%1" %*

试想这样一种情况,一个txt你把后缀名改为 exe,双击执行,什么后果呢?
windows看到是 exe 后缀,于是满怀欣喜对这个exe进行判断,可是当它继续判断时,它发现
这不是bat,com,exe。。。。的任意一中格式,怎么办?
此时它会把这个文件当做 COM 文件执行。有的时候exe文损坏的话,执行就会黑框一闪---
就是这个原因。
2010-9-30 21:29
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
系统能够自动识别的。
2010-9-30 23:10
0
雪    币: 660
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
好像还真的....我换win7去改改.
2010-10-1 04:15
0
雪    币: 101
活跃值: (43)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
你改BAT照走,你改cmd还是照走,你改SCR……没问题,还是照走!
2010-10-1 05:12
0
雪    币: 172
活跃值: (573)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
支持2楼,你就是把扩展名改成.bat、.scr、.cmd、.lnk、.pif也都可以运行(windows下),只要扩展名是可执行文件扩展名就行,系统载入后会自动识别的。
2010-10-1 06:51
0
雪    币: 38
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
16
楼上说的有误吧----  .lnk  可不是可执行文件
2010-10-1 10:02
0
雪    币: 172
活跃值: (573)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
额,是我打错了,失误失误,让大侠见笑了
2010-10-1 10:40
0
雪    币: 172
活跃值: (573)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
.lnk是快捷方式的扩展名
2010-10-1 10:41
0
游客
登录 | 注册 方可回帖
返回
//