多态性vs 云查杀 

云查杀的基本原理是根据文件内容,通过某种算法计算文件唯一的函数值,以这个函数值(hash值)作为文件的唯一标志,与数据库中的记录进行比较来确定文件可信度。
我们看一下norton power erase的其中一条扫描记录
- <File ID="2">
- <File_Information>
<Path>F:\RemindBook3\RemindBook.exe</Path>
<FileVersion>3.1.7.37</FileVersion>
<ProductVersion>3.0</ProductVersion>
<ProductName>RemindBook</ProductName>
<Company>SnowFoxStudio.</Company>
<Copyrights>Copyright(c)1998,2004 SnowFox Studio.</Copyrights>
<MD5>273EB45D415A8E380EF5DD4E7BDBA82B</MD5>
<SHA256>AB5F3ECDED67879472417B285B929FEE36F528D2049ACEE1651484C864EE6668</SHA256>
<FileSize>6097408bytes</FileSize>
</File_Information>
- <SideEffects Count="1">
<File>F:\RemindBook3\RemindBook.exe</File>
</SideEffects>
</File>

可以看出所谓云查杀就是把
1计算出能确定文件的唯一的函数值(hash值),为了确保唯一性尽量计算几种值
如果是md5 则能却分256^16个文件 sha256能区分 256^32个文件,文件大小(DWORD 4个字节)区分为256^4个
2网络通信与数据库中的记录比较

可见如果文件的大小,或者内容发生变化,则会造成唯一的函数值变化,如果不在数据库里,就不会被判断成病毒,只是可疑

多态性指程序可以在运行时改变自身,或者存储代码表现不同,但基本功能性能一致。由于可执行文件文件结构为
 


而可行性文件可通过
1.
简单修改dos stub 或者Ntheader的位置

2.
文件末尾增加随机数
3.
增加修改区段
来变更代码,而不影响功能性能

可能使用到的Api有
GetModuleFile
CreateFile
CtreatFileMapping、
Cmd.exe 
/c xxxx
MoveFileEx

下面一个例子是file.exe 被云查杀判断为病毒,可是只要随意修改其dos stub 胡乱填写数据就行

file.rar[解压密码是:kill_virus]


2010.8.18 23:32 上传下载 (240 KB)

增加一个附件
 file2.rar [解压密码是:kill_virus]