WEB开发网
开发学院网络安全安全技术 恶意软件反检测技术简介(上) 阅读

恶意软件反检测技术简介(上)

 2008-10-14 13:28:12 来源:WEB开发网   
核心提示: 在上面的例子中,我们看到setup段将ebx设为0,恶意软件反检测技术简介(上)(4),并且它只运行一次,然后,记住,病毒越难以解密,在循环部分将esi和edi设为被加密的代码的起点,将ecx设为被加密的代码的尺寸

在上面的例子中,我们看到setup段将ebx设为0,并且它只运行一次。然后,在循环部分将esi和edi设为被加密的代码的起点,将ecx设为被加密的代码的尺寸,ebx每次递增1。用于解密的基本块会逐字节遍历被加密的代码,并用ebx中的密钥来异或每一字节。当ecx 变成零时,循环终止。之后,由负责检查的代码段来查看当前的代码是否跟预设的校验和是否匹配,如果匹配的话,那么说明代码已经成功解密。如果不匹配,则返回迭代循环并再次尝试下一个密码。如果已经解密,那么它会跳转到新解密代码处。

W95/Fono使用非线性解密算法,即病毒的加密部分是无法使用通常的线性方式来解密的。因为病毒无法一个字节接一个字节地解密,所以它能够迷惑仿真器。W95/Fono使用一个密钥表和解密器来完成基于该表的置换。明文字母中的每个符号对应于密文中的另一个不同的符号。例如:A和L相对应,Z和F相对应,等等。因此,使用这个加密方法后,病毒的各个部分是以半随机的顺序解密的,并且每个位置仅出现一次。此外,W95/Drill和(W32,Linux)/Simile.D也使用非线性解密方法。

W95/Silcer和W95/Resure装入内存时,它们强迫Windows的加载器对受感染的程序的映像进行重定位。映像的重定位处理决定了病毒体的解密处理,因为病毒解密时必须进行特定的重定位处理。W95/Resurrel是继W95/Resure之后出现的一种病毒,该病毒会把刚感染的文件的基地址设为0xBFxxxxxx(其中XXXXXX是一个由API调用GetTickCount()返回的随机值)。然后,它为自己代码部分的每个DWORD值添加一个重定位表项,并对每个DWORD进行加密,方法是将代码部分的DWORD加上基址值,然后减去0x400000。当应用程序被执行时,会因为基地址错误,或者一个地址位于KERNEL32.DLL中而导致程序的映像无法照现在的样子装入内存。这样,系统装入程序就需要把代码重定位到一个有效地址,这实际上也是病毒的解密工作要做的事情。记住,病毒越难以解密,检测起来就越难。

上一页  1 2 3 4 5  下一页

Tags:恶意 软件 检测技术

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接