我记得在一个安全站点上看到类似的资料,我找找先:)<br>啊,找到了,以下是节选: <br>第二种方法是不使用进程,不使用进程使用什么?为了弄明白这个问题,我们必须要先了解<br>Windows系统的另一种“可执行文件”----DLL,DLL是Dynamic Link Library(动态链接库)<br>的缩写,DLL文件是Windows的基础,因为所有的API函数都是在DLL中实现的。DLL文件没有<br>程序逻辑,是由多个功能函数构成,它并不能独立运行,一般都是由进程加载并调用的。<br>(你你你,你刚刚不是说不用进程了?)别急呀,听我慢慢道来:因为DLL文件不能独立运<br>行,所以在进程列表中并不会出现DLL,假设我们编写了一个木马DLL,并且通过别的进程来<br>运行它,那么无论是入侵检测软件还是进程列表中,都只会出现那个进程而并不会出现木马<br>DLL,如果那个进程是可信进程,(例如资源管理器Explorer.exe,没人会怀疑它是木马吧?<br>)那么我们编写的DLL作为那个进程的一部分,也将成为被信赖的一员而为所欲为。<br> 运行DLL文件最简单的方法是利用Rundll32.exe,Rundll/Rundll32是Windows自带的动态<br>链接库工具,可以用来在命令行下执行动态链接库中的某个函数,其中Rundll是16位而<br>Rundll32是32位的(分别调用16位和32位的DLL文件),Rundll32的使用方法如下:<br> Rundll32 DllFileName FuncName<br>例如我们编写了一个MyDll.dll,这个动态链接库中定义了一个MyFunc的函数,那么,我们<br>通过 Rundll32.exe MyDll.dll MyFunc就可以执行MyFunc函数的功能。<br><br> 这个和木马的进程隐藏有什么关系么?当然有了,假设我们在MyFunc函数中实现了木马<br>的功能,那么我们不就可以通过Rundll32来运行这个木马了么?在系统管理员看来,进程列<br>表中增加的是Rundll32.exe而并不是木马文件,这样也算是木马的一种简易欺骗和自我保护<br>方法(至少你不能去把Rundll32.exe删掉吧?想从Rundll32进程找到DLL木马还是有一点麻烦<br>的)使用Rundll32的方法进行进程隐藏是简易的,非常容易被识破。(虽然杀起来会麻烦一点)<br>比较高级的方法是使用特洛伊DLL,特洛伊DLL的工作原理是使用木马DLL替换常用的DLL文件,<br>通过函数转发器将正常的调用转发给原DLL,截获并处理特定的消息。例如,我们知道WINDOWS<br>的Socket1.x的函数都是存放在wsock32.dll中的,那么我们自己写一个wsock32.dll文件,替换<br>掉原先的wsock32.dll(将原先的DLL文件重命名为wsockold.dll)我们的wsock32.dll只做两件<br>事,一是如果遇到不认识的调用,就直接转发给wsockold.dll(使用函数转发器forward);二<br>是遇到特殊的请求(事先约定的)就解码并处理。这样理论上只要木马编写者通过SOCKET远程输<br>入一定的暗号,就可以控制wsock32.dll(木马DLL)做任何操作。特洛伊DLL技术是比较古老的<br>技术,因此微软也对此做了相当的防范,在Win2K的system32目录下有一个dllcache的目录,这个<br>目录中存放着大量的DLL文件(也包括一些重要的exe文件),这个是微软用来保护DLL的法宝<br>,一旦操作系统发现被保护的DLL文件被篡改(数字签名技术),它就会自动从dllcache中恢复这<br>个文件。虽然说有种种方法可以绕过DLL保护(例如先更改dllcache目录中的备份再修改DLL<br>文件、或者利用KnownDLLs键值更改DLL的默认启动路径等),但是可以想见的未来微软必将<br>更加小心地保护重要的DLL文件;同时由于特洛伊DLL方法本身有着一些漏洞(例如修复安装<br>、安装补丁、升级系统、检查数字签名等方法都有可能导致特洛伊DLL失效),所以这个方<br>法也不能算是DLL木马的最优选择。<br><br>还有很多的,大家可以去www.patching.net/shotgun看看的^_^<br><br>