0x00前言
这个文件格式基本上已经见不到了,但是有些病毒和恶意软件还会使用这种文件格式模仿网页让人下载。防不胜防,所以这里笔者简单的讲述一些说明。
阅读本文,您可能需要掌握的知识:
技能 | 熟练度 |
---|---|
数据结构 | 了解 |
0x10 格式
就像上文讲述的TEXT文件一样,COM文件因为其历史过于久远,完全没有任何的格式所言,几乎就是完全的汇编语言的映射,某种程度下和obj文件差不多的。
首先需要确认的是,在当年那个时代下,文件系统内存极小,且导致当前的COM文件不会有很大,一般不会超过64KB(16位机器)。
也就是说,这个文件格式就是完全的汇编语言的执行包。不存在任何已知的文件格式定义。与TEXT其实是一致的。只不过一个存储的是对人类友好的字符,一个是存储机器相关的汇编语言。
这就是一个标准的可执行文件了。
0x20 需要小心的部分
其实COM与TEXT都是差不多的,但是唯一的区别在于COM是可以运行的。所以就给不法分子以可乘之机。而且因为万维网的特殊性,使得很多的com文件被伪装为网页的形式被人下载。
其实按道理来说就算是网页下载了的可执行文件,也还是没办法有很大的危害。但是需要注意的是,EXE可以被隐藏成COM文件,这样的情况下就很危险了,因为可能被执行在任何位置,也就可能造成不可弥补的危害。
当然这个也很简单就可以识别。一个EXE文件是一个典型的PE的文件格式的可执行文件,所以和COM文件最大的不同在于,COM文件不具备任何的可执行的格式。但是EXE有规定的执行格式:
可以看到EXE文件在开始时写入了MZ的ASCII代码。这个代码在32位PC平台下的执行汇编为:
0100 4D DEC BP
0101 5A POP DX
可以看到,这两行代码不可能在程序的刚开始,也就可以区别出来伪装的EXE文件。至于伪装的文件大概率也不是什么好的用途。
0x30 更多
本文首发自 系列:COM——基础的执行格式,更多文章可进入我的博客详查。