释义
如记事本程式notepad.exe ,这类程式通常用来处理或者辅助处理其它档案。比如:myfile.txt双击打开由notepad.exe记事本程式来进行编辑。我们做一件事,可以把顺序以及具体做什么事写在mybat.bat档案中,那运行它就可以把要做的事件执行了。
可以理解为:这类档案可以“单独运行”,或者理解为“有生命”的档案!
如果把它用日常通俗的一点的例子来形容:衣服,鞋子等都是普通的档案,那人就是执行档! 人可以做衣服穿衣服,衣服却要依靠人来做。布也要由人加工成衣服!
脚本
不是所有的执行档,都只存有电脑能阅读的资料。以脚本语言撰写的脚本档案,都可以是执行档,而且内含的资料可被人类阅读,多数以ASCII文本存档。原因是:脚本语言无需经过编译器预先编译,就可经过直译器(如Perl、Python、Shell)执行
开发过程
在DOS下,生成一个执行档的步骤比较简单,用编译器将源程式编译为obj档案,再用连结器将obj档案连结成exe档案,不同语言的开发过程都差不多。
DOS执行档中的内容是由源程式中所写的代码和数据定义转换而来的。惟一的例外是带覆盖部分(Overlay)的exe档案,它在基本的exe档案后附加了一些自定义的数据,其中可执行部分的长度由档案头偏移0002h和0004h中的长度给出,该长度之后到档案实际长度这部分就是Overlay部分。这样,即使一个带覆盖的exe档案大小远远超过640 KB,在DOS下也能运行,因为作业系统只装入真正的可执行部分,然后由程式自己去读取覆盖部分的数据。一些打包软体生成的奇大无比的自解压包就採用这种结构,可执行部分是解包代码,覆盖部分是被压缩的数据。DOS对执行档覆盖部分的数据格式并没有规定,它是程式设计师按自己的方式组织的。如果程式设计师愿意,也可以把这些数据单独放在另外一个档案中。
Win32执行档叫做PE档案。PE档案的基本结构和DOS执行档有很大的不同。它把程式中的不同部分分成各种节区(Section),其中可以有一个节区是放置各种资源的,如选单、对话框、点阵图、游标、图示和声音等。虽然可以把资源部分理解成类似DOS执行档中的“覆盖”部分,但由于资源是Win32执行档的标準组成部分,而且是非常重要的组成部分,它的格式是固定的。所以与DOS软体的开发过程相比,Win32软体的开发中多了一个创建资源档案的步骤。
以使用MASM32软体包为例,在用Win32彙编开发软体的流程中,程式设计师要做的工作分创建代码和创建资源两部分,如图2.1所示。
代码部分的开发工作与DOS下写代码的步骤是一样的。程式设计师用文本编辑器书写彙编原始码(*.asm档案)。与C原始码类似,asm档案中也可以用include语句包含数据定义和函式声明的头档案,Win32彙编的头档案一般用inc作扩展名。大部分的include档案是编译器软体包附带提供的,如MASM32软体包附带的Windows.inc档案定义了Win32 API中很多参数和数据结构,其他的inc档案则是不同DLL中的Win32 API函式声明。最后,asm档案经彙编编译器编译成以obj为扩展名的目标档案。
资源档案中可以包括对话框、快捷键、选单、字元串、版本信息和一些图形资源等内容。资源档案的源档案是一种类似“脚本”的文本档案,它的扩展名一般为rc,其中用不同的语法定义了不同类型的资源,资源脚本档案最后由资源编译器编译成资源档案*.res。资源脚本档案同样用到很多预定义值,所以软体包中一般也包括资源头档案供源档案来导入。MASM32软体包中的资源头档案是Resource.h。
在资源档案中,不同类型资源的记录方式是不同的。对话框资源只记录定义值,如对话框的大小、位置等,并非真正存储对话框最后显示在萤幕上的像素。这些大小、位置等信息最后由Windows解释后才在萤幕上被绘画成像素;选单、字元串、快捷键等由文本构成;图形资源则真正由像素组成,它们在资源脚本中被定义为一个档案名称,由资源编译器从磁碟档案导入。Windows在资源中支持的图形档案有bmp点阵图档案、cur游标档案和ico图示档案,这些图形档案可以用其他图形处理软体生成。另外,wav声音档案也可以用在资源中。创建资源的方法在第5章中有详细的描述。
编译好目标档案*.obj和资源档案*.res后,最后一步是用连结器将它们连结成执行档。连结的时候要用到函式馆。在DOS环境下编程的时候,使用的函式馆是静态库。静态库是一些已经编译好的代码模组。当用户在源程式中用到某个函式的时候,连结器从库档案中将这个函式的二进制代码取出,与obj档案合在一起生成最终的exe档案。但在Win32环境下,大部分的公用函式封装在DLL档案中,以动态连结的方式供用户程式调用。这时候库档案中只需要包含函式在DLL中的位置信息,不再需要有二进制代码部分。所以连结的时候也只是把库档案中的位置信息取出放入最后的执行档中。Win32中这种只包含位置信息的库档案称为导入库。
防毒
病毒的检测与解除
档案型病毒
在计算机病毒中绝大部分是档案型。所谓档案型病毒是指此类病毒寄生在执行档上,并依靠执行档来传播。从数学角度而言,解除这种病毒的过程实际上是病毒感染过程的逆过程。通过检测工作、(跳转、解码),已经得到了病毒体的全部代码,用于还原病毒的数据肯定在病毒体内,只要找到这些数据,依照一定的程式或方法即可将档案恢复,也就是说可以将病毒解除。
引导型病毒
这类病毒的种类也比较多,我国发现的第一例病毒--“小球”病毒就是引导型病毒,它们占据软碟或硬碟的第一个扇区,在开机后先于作业系统得到对计算机的控制,影响系统的I/O存取速度,干扰系统的正常运行;此类病毒可用地址法、相对法、逻辑法、覆盖法、特殊法予以解除。
记忆体解毒
因为记忆体中的活病毒体会干扰反病毒软体的检测结果,所以几乎所有反病毒软体设计者都要考虑到记忆体解毒。新的记忆体解毒技术是找到病毒在记忆体中的位置,重构其中部分代码,使其传播功能失效。
未知病毒检测
通过对大量病毒的分析,可以掌握病毒的共性,并按照其发展衍生规律进行分类,总结病毒常用代码(这些代码是病毒存在、传播和发作的根本),以档案中包含这些代码的加权统计值作为对未知病毒检测的依据,使用可执行档案格式知识分析启始代码,通过一定程度的反彙编和预测跳转,综合结果报告未知病毒。这种方法是建立在独特病毒描述语言基础上的,具有描述準确、误报率低等特点。
包裹档案病毒
包裹程式是一些常见的工具软体,它可以包裹执行档,减小磁碟占用空间,加快运行速度。但把一个病毒包裹后,病毒就会被保护起来,使得各种反病毒软体无法查到。已被包裹并含有病毒的执行档在执行时,病毒会到处传播,使用反病毒软体将病毒解除之后,被包裹的执行档中的病毒却保留下来,危害较大。通过特有的解包裹模组,可以即查解被包裹后的病毒,又不破坏被包裹后没有病毒的执行档。压缩工具
磁碟上经常会有一些被压缩工具处理过的档案,这样做可以节省磁碟空间,便于保密和携带。但如果有人无意将病毒传染的档案使用压缩工具压缩了,那么一般反病毒软体就无法将病毒从压缩档案中查出,採用解压缩算法和流程处理可以根治这种病毒。
网路病毒防治
对于单机病毒防治,运用以上技术或使用具有相应功能的反病毒软体即可基本保障计算机系统不受病毒的侵扰。相对于单机病毒的防护来说,网路病毒的防治具有更大的难度,网路病毒防治应与网路管理集成。网路防病毒最大的优势在于网路的管理功能,如果没有把管理功能加上,很难完成网路防毒的任务,只有管理与防範相结合,才能保证系统的良好运行。
管理功能就是管理全部的网路设备和操作:从Hub、交换机、伺服器到PC,包括软碟的存取、区域网路上的信息互通及与Internet的接驳等所有病毒能够感染和传播的途径。
一般来讲,计算机病毒的防治在于完善作业系统和套用软体的安全机制,但在网路环境下,应该相应採取新的防範手段。 在网路环境下,病毒传播扩散快,仅用单机反病毒产品已经难以清除网路病毒,必须有适用于区域网路、广域网的全方位反病毒产品。
为实现计算机病毒的防治,可在计算机网路系统上安装网路病毒防治伺服器;可在内部网路伺服器上安装网路病毒防治软体;可在单机上安装单机环境的反病毒软体
Linux
Linux执行档格式为ELF即Executable and Linkable Format。
格式:
ELF header
program header table
.txt .rodata .data
Section header table
Mac
Mac执行档格式为Mach-O即Mach Object格式。


















