dll的远程注入技术是目前win32病毒广泛使用的一种技术。使用这种技术的病毒体通常位于一个dll中,在系统启动的时候,一个exe程序会将这个dll加载至某些系统进程(如explorer.exe)中运行。 这样一来,普通的进程管理器就很难发现这种病毒了,而且即使发现了也很难清除,因为只要病毒寄生的进程不终止运行,那么这个dll就不会在内存中卸载,用户也就无法在资源管理器中删除这个dll文件,真可谓一箭双雕哉。
记得2003年qq尾巴病毒肆虐的时候,就已经有些尾巴病毒的变种在使用这种技术了。到了2004年初,我曾经尝试着仿真了一个qq尾巴病毒,但独是跳过了dll的远程加载技术。直到最近在学校论坛上看到了几位朋友在探讨这一技术,便忍不住将这一尘封已久的技术从我的记忆中拣了出来,以满足广大的技术爱好者们。
必备知识
在阅读本文之前,你需要了解以下几个api函数:
·openprocess - 用于打开要寄生的目标进程。
·virtualallocex/virtualfreeex - 用于在目标进程中分配/释放内存空间。
·writeprocessmemory - 用于在目标进程中写入要加载的dll名称。
·createremotethread - 远程加载dll的核心内容,用于控制目标进程调用api函数。
·loadlibrary - 目标进程通过调用此函数来加载病毒dll。
在此我只给出了简要的函数说明,关于函数的详细功能和介绍请参阅msdn。
示例程序
我将在以下的篇幅中用一个简单的示例virus.exe来实现这一技术。这个示例的界面如下图: