二、DOS文件头和DOS块
一个标准的DOS可执行文件部分包含两个结构,分别是DOS文件头和DOS块。
DOS文件头是一个IMAGE_DOS_HEADER结构,该结构定义如下:
IMAGE_DOS_HEADER STRUCT
e_magic WORD ? :魔术数字
e_cblp WORD ? :文件最后页的字节数
e_cp WORD ? :文件页数
e_crlc WORD ? :重定义元素个数
e_cparhdr WORD ? :头部尺寸.以段落为单位
e_minalloc WORD ? :所需的最小附加段
e_maxalloc WORD ? :所需的最大附加段
e_ss WORD ? :初始的SS值(相对偏移量)
e_sp WORD ? :初始的SP值
e_csum WORD ? :校验和
e_ip WORD ? :初始的IP值
e_cs WORD ? :初始的CS值(相对偏移量)
e_lfaric WORD ? :重分配表文件地址
e_ovno WORD ? :覆盖号
e_res WORD 4 dup (?) :保留字
e_oemid WORD ? :OEM标识符(相对e_oeminfo)
e_oeminfo WORD ? :OEM信息
e_res2 WORD 10 dup (?) :保留字
e_lfanew WORD ? E头部的文件地址
IMAGE_DOS_HEADER END
三、MultiCCL定位原理
MultiCCL是一款非常成秀的特征码定位工具,定位比MyCCL更准确,而且能应对更多的杀毒软件(前面说过,MyCCL无法应对使用隐式隐含特征码查杀技术的杀毒软件)。但是MultiCCL的操作和原理都要比MyCCL稍微复杂。本节就来简单的讲一下MultiCCL定位特征码的原理。
首先我们假设一种比较极端的情况:
某杀毒软件针对某病毒样本抽取了如下a b c d e的五个特征码片段,而其中的任何一个单独的片段都不构成完整的特征码。也就是说,假如文件中存在完整的a段和完整的b段,那么杀毒软件就将其判定为病毒。倘若我们将b段改掉,杀毒软件依旧会将该文件判定为病毒,因为该文件中出现了完整的a段和c段。也就是说,任意两段特征码完整的出现在文件中,杀毒软件都将会判定其为病毒。文件特征码示意如下图:
.............................aaaaaaaaa....................
...................................................................
..........bbbbbbb..........ccc............................
..............ddddddddd.................eeeee........ (图1)