有些病毒为了实现网站的劫持,会把想要劫持的网站重定向到自己指定的地址。为了实现这一目的,病毒作者通常的做法是修改Windows系统里位于%SystemRoot%\system32\drivers\etc目录下的hosts文件。而病毒作者是不希望我们找到真实的hosts文件,以进行进一步的解析的,于是病毒作者可以将真实的hosts文件设置为隐藏,再伪造一个hosts文件出来。而伪造的方式,可以使用上述转义字符的方法,或者采用将原始的文件名中的英文字符替换为其它的,容易造成混淆的字符。关于这个最为经典的例子就是 将“kernel32.dll”中“32”前面的“l”改为“1”,从而变成“kerne132.dll”,而后者正是一个恶意的动态链接库程序。而具体到hosts这个例子,我们应当如何达到混淆的效果呢?也很简单,首先我们可以在“记事本”中输入“hosts”这几个字符,然后保存为Unicode的形式。接着使用十六进制编辑工具打开这个文本文档,查看其十六进制代码:
上图红框中的“6f 00”(注意这里是小端显示),也就是Unicode码的0x006f,表示的就是小写英文字母的“o”,那么这里我们将其修改为“3e 04”,也就是Unicode码的0x043e,它表示的是俄文字符的“o”:
保存后,再使用“记事本”打开,可以发现原来的“o”变成了一个怪怪的俄文字符:
不过没关系,我们将上述字符复制粘贴,使其成为一个文件的名称,并拷贝到真实的hosts文件目录中: