绍兴网站建设制作,网站制作模板程序,怎么制作一张自己的图片,网页设计制作教程近几年杀毒软件泛滥#xff0c;很多人不知道该如何选择合适的杀毒软件#xff0c;也许杀毒软件并非是必需的#xff0c;真心觉得杀毒软件没啥用#xff0c;而且运行起来还严重影响系统性能#xff0c;但是很多小白电脑都会用杀毒软件#xff0c;他们怕#xff0c;因为不… 近几年杀毒软件泛滥很多人不知道该如何选择合适的杀毒软件也许杀毒软件并非是必需的真心觉得杀毒软件没啥用而且运行起来还严重影响系统性能但是很多小白电脑都会用杀毒软件他们怕因为不了解所以怕。但这不是今天要谈论的话题今天要谈的是杀毒软件究竟是个什么东西它到底是如何杀死病毒的也许当你了解了它的工作原理和运行模式你也许对病毒也会有所认识然后不装杀毒软件也就不再感到畏惧。
1、杀毒软件分类 杀毒软件(Anti Virus)也称反病毒软件以下可简称AV软件是一种保护用户的数据和信息的一套安全系统。从类别上划分它可以分为几种类型如扫描型防御型主动控制型等。 扫描型(Scan)这是一种最原始的方式由于病毒出现得比较早从DOS和win3.x时代就开始流行那时候的病毒可能只是几行简单的代码不过破坏力却是不可小视的。说到病毒其实它和其它普通的程序没什么不同所不同的只是它们的立场一个是保护一个是破坏只此而已。所谓扫描病毒就是扫描病毒程序本身的特征然后与杀软病毒库中的特征码作对比找到了说明它是个病毒否则就是无危险的程序随着病毒种类的增多病毒库的体积也会越来越大。直到后来进入Windows时代就出现了一种防御型的杀毒软件。 主动防御控制型也叫HIPS(主机入侵防御系统)它可以是单独的一种软件如E盾(EQSecure)、360的Malware Defender、Comodo(科摩多)也可以是附加的功能如卡巴斯基360等现在它是大部分杀软都具有的功能有些以扫描为主有些则以主防为主扫描型病毒比较经典的我只记得有一个macfee(麦咖啡)的软件主防型的有东方微点主动防御软件。 除此之外还有几种形式其实可以把它们看作是主防的变形这种程序叫做沙盘(SandBox)、沙盒或沙箱这是一种主动控制型的沙盒程序控制了系统比较重要的API所以目标程序的行为基本都会在沙盒的监控之中。但是注意会有漏沙的可能而且前面说了它只是控制了关键API而不是所有所以沙盒并不是绝对的安全只能说它在一定程度上是安全的。在沙盒中运行程序既能保证安全又不影响程序原本的功能这种说法严格讲是不对的因为这两者是矛盾的沙盒既不能保证绝对的安全又不能做到完全不影响程序自身的功能事实上市面上普通的安全工具在沙盒中运行就无法发挥它的原有功能例如一个进程管理器要结束系统进程不用说沙盒肯定会阻止。那有没有绝对安全的呢有那就是另一种更强大的沙盒也就是虚拟机。虚拟机程序是利用驱动控制计算机的硬件达到从逻辑上创建若干虚拟主机的目的在虚拟机里所有的程序都无法与真实操作系统中的程序直接传递信息所以虚拟机可以说是绝对的安全除非你能找到它的漏洞但是这种概率非常低虚拟机里的病毒想穿透机器到原始系统中搞破坏几乎是不可能的。其它这些形式并没有严格的区分反病毒软件可包含以上所有功能它可能有自己的虚拟运行环境可能有病毒数据库也可以有主防系统。
2、杀毒机制 再看杀毒软件的杀毒机制。一般来说杀软都有自己的数据库里面存放病毒程序的特征理论上只有一个文件存在这个特征就会被认定是有危险的无论它的格式是什么哪怕是一个TXT也会被当作病毒被隔离甚至这个文件是它自己的东西。当然杀毒软件一般不会自己杀自己那是因为它自己的文件都会有一个签名倘若签名丢失那它就瓦解了换句话说连自己都不认识了。前不久有个叫熊猫卫士的产品据说是因为数字签名损坏所以把自己的一个核心程序当作病毒杀掉了结果也就无法再启动。这还不算讽刺前几天发现了个可疑驱动DMProtectEx.sys删掉后会再生以为是病毒没想到最后经诊断居然是ADSafe的广告拦截驱动。所以有了签名就不会被杀那么如果我购买一个签名就相当于向杀软公司交了保护费这样以后凡是我写的程序该杀软都会认为是正常的程序。这么看就算杀毒软件不理也并不意味着它是安全的其实事实远不止于此据说有些杀毒软件厂商甚至还自己制造病毒然后再拿来杀掉以提高自己产品的知名度以上这些不知道是否是杀毒界的潜规则。 主动防御的任务就是在目标程序对系统进行破坏之前拦下它。那怎么看目标是否是一个有害的程序呢判断标准是通过行为特征分析观察和监控它的动作看它是否做出一些出格的举动。例如一个程序运行后先是创建自己的副本之后立即将该副本注册为开机启动对象这样的行为是病毒或木马的典型特征再者将自己注入系统进程、安装系统消息钩子、安装和加载驱动等等这些全都属于危险行为。那么问题是杀毒软件怎么知道这些的它怎么知道目标程序具体都做了些什么下面不得不简要说一下Windows的原理。 在Windows上运行的程序能够执行的有EXE、DLL、SYS、OCX等这些都叫做可执行文件(Executable File)也就是包含CPU指令、可以控制电脑硬件和指挥电脑的一类程序。这些可执行文件属于PE(Protable Executable)文件是一种可移植的执行格式这是一种具有特殊结构的程序程序中包含数据、资源和指令。而文档(Document)又称数据文件里面不含任何指令但是能被可执行文件读取。病毒可以是EXE也可以是DLL、SYS等但是不可能是BMP、TXT之类的程序因为这些程序都不能执行命令当然不排除病毒伪装成普通档案的情况。有些病毒将自己命名为test.txt.exe如果系统扩展名没有显示表面上并不能看出它的文件类型。照这么说如果一个文件名字的结尾确实是.txt那就代表它一定没有危险吗当然不是因为文件名其实并不能说明什么重要的是文件内容和格式因为但凡稍微改动一下注册表就会让一个扩展名为txt的应用程序能够双击触发这个牵涉到系统的文件关联(Association)机制后面会讲到。用记事本(notepad)打开一个txt如果开头是MZ说明它极可能是一个可执行程序(EXE或DLL等)紧接着后面还会有这样一句话This program cannot be run in DOS mode. 意思是这个程序不能运行在DOS模式说明它是Win32位应用程序而DOS系统下只能运行16位的程序而且后面会看到PE两个字符这些是EXE的通用格式所有EXE都是如此否则就无法执行。DLL(Dynamic Link Libraries)是动态链接库文件也属于可执行文件的一种能够被其它EXE间接调用并执行从某个角度而言DLL比EXE更加危险EXE运行后至少有一个进程(Process)而DLL则没有进程它的代码位于进程内部要查看进程的DLL模块就要用到第三方软件。进程(Process)是指程序活动的地方内存中的一片区域一个空间一个场地。一个程序比如Windows记事本文件名叫notepad.exe运行后会创建一个进程进程名也叫notepad.exe路径是C:\Windows\System32\notepad.exe其实这个路径是模块路径进程本身是没有路径的它就是一个空间里面存放着各种不同的资源其中包括一个exe和多个dll这些exe和dll到了内存中叫做模块(Module)模块路径就是文件路径进程路径是指EXE模块的文件路径。进程只是一个区域执行任务的则是线程(Thread)。一个进程可以有多个线程没有线程它就成了僵尸进程什么也做不了。如果我要同时做一些不同的任务只需多创建一些线程即可。
3、病毒怎么搞破坏 杀毒软件要控制另一个程序就必须控制系统的API调用。API(Application Programming Interface应用程序编程接口)函数是软件完成相应功能必须要调用的东西一个API对应一个功能参数决定功能的细节。API的本质就是一段代码这些代码位于系统的DLL中一个DLL文件含有若干API。举例说明例如结束进程就要调用一个TerminateProcess的API任务管理器(Taskmgr.exe)里面终止一个进程就是调用了它。当然其它进程管理软件大多也是调用它。这个函数位于kernel32.dll中而这个函数的代码里会继续调用另一个更底层的APIZwTerminateProcess(NtTerminateProcess)Zw/Nt系列函数位于文件ntdll.dll中也就是说ntdll.dll比kernel32.dll里的代码更接近系统底层所以你也可以直接调用ZwTerminateProcess去终止一个进程。然而单独靠这个函数是无法结束其它进程的还要有其它函数配合使用才行要结束一个进程首先要打开(Open)这个进程OpenProcess(打开进程)函数正是负责干这个的。Windows下的每一个进程都有一个进程ID(ProcessId)它是进程唯一的标识符要打开进程就要指定进程ID标明你究竟要打开哪个进程例如记事本notepad.exe的进程Id是1234你就要OpenProcess这个1234获取目标进程的句柄。句柄(Handle)你可以理解为一把钥匙一种权限有了对象的句柄你才可以访问这个对象就像有了钥匙才能开门一样。比如刚才我们打开了记事本的句柄得到句柄值0x100然后再TerminateProcess这个0x100意思是终止句柄值为0x100这个进程这样就把记事本给杀掉了。那么如果我打开了记事本的进程得到0x100后然后用另一个程序调用TerminateProcess去结束这个0x100能把记事本给结束掉吗答案是不能因为首先句柄值是会变的你这次打开得到0x100下次再打开就可能会变成0x200每次打开的值都是不同的而且这个0x100是私有对象只对打开它的程序有用也就是说0x100这个值属于你自己内部的东西只对你有意义对其它程序来说0x100不代表任何进程。进程句柄属于内核对象句柄除此之外还有一种叫做GDI的句柄这种句柄是不变的例如窗口句柄(HWND)窗口在创建后其句柄就保持不变直到窗口销毁(Destroy)也就是我们平时所说的关闭窗口。窗口句柄是公开的完全暴露给用户通常情况下任何进程都能访问。
4、无法结束进程 现在当你在任务管理器里去结束一个进程结果却提示拒绝访问这是怎么回事呢这是因为你没有权限访问目标进程。一种可能是你不是管理员(Administrator)另一种可能是这个进程被Hook(钩住、控制、拦截)了。为什么会被Hook呢因为有进程采用了Hook API技术修改了这个函数地址它钩住了OpenProcess这个API函数当发现你要结束的进程是它时它就跳过这个API什么也不执行直接返回。所以你收到的就不是进程句柄而是0既然打开失败下一步结束进程就别谈了只有当你有了句柄有了所有权你才能结束它读写它或者做其它什么都行没有句柄就什么也做不了。杀毒软件Hook了NtOpenProcess、NtTerminateProcess这些API所以你想用普通的方法结束杀毒软件的进程是没有用的但是不代表不能用其它方法结束它的进程如通过结束GUI界面来结束它。同样的杀毒软件能够监控你的行为得到你的一举一动并随时准备kill掉你也全是因为hook了和系统安全相关的API所以才如鱼得水。
5、进程和杀毒 杀软要监控系统是从创建进程(CreateProcess)开始的每一个进程都是由其它进程创建记事本所以能运行是因为你双击了一个TXT文件而TXT又和Notepad.exe关联所以系统就调用了Notepad顺便传给它一个命令行参数(Command Line)参数就是TXT文件的路径Notepad运行后会检查自己后面是否带有参数有的话就把它当成一个文件路径并打开它如何处理参数则是程序员的事情。双击notepad.exe或者从开始程序中选择记事本或从开始-运行中输入notepad并打开notepad都是由Explorer.exe这个进程来创建的notepad的父进程就是Explorer.exe(Windows Shell进程)就是我们通常所说的桌面进程。如果在cmd中输入命令并启动这时启动后的程序的父进程就是cmd.exe。而Explorer.exe的父进程是userinit.exe创建完Explorer后它就退出了userinit的父进程是winlogon.exe(登录进程)winlogon.exe的父进程是smss.exe(会话管理器第一个进程由内核创建)。杀软hook了NtCreateProcessEx、NtCreateSection等API这样任何进程启动都在它的监控之中如果有可疑动作就弹窗提示或直接隔离。那么hook究竟做了什么呢其实hookAPI就是改掉目标进程API入口地址跳转到它自己的地址如果是这样的话病毒运行后难道不会检查自己进程内存是否被修改过从而再改回来吗其实hook也分很多种杀毒软件hook的不是目标进程的数据而是系统内核数据这就要谈到进程内存管理。 Windows系统每个进程的内存都各自独立一个进程的崩溃不会影响到另一进程更不会影响到操作系统进程这是因为为了避免用户的代码波及系统内核代码系统把内存划分开来一个是用户内存一个是内核内存应用程序代码工作在用户模式(user mode)操作系统的代码运行在内核模式(kernel mode)这样用户进程发生的错误由自己承担而不会引起系统崩溃。当程序需要到内核请求服务时它会通过指令从用户模式切换到内核模式完成服务后控制权会切换回来。Win32下每个进程都有一个虚拟的4GB内存空间用户代码只能访问2GB以下空间驱动程序代码可以访问全部空间不过有一个64KB的区域地址从0x7FFF0000-0x7FFFFFFF这个地方它们都不能访问。EXE、DLL都在用户内存活动而不会跑到内核内存操作系统则在内核内存中运行要访问内核内存的数据就要写成驱动程序(Drivers)Sys格式只有sys格式的可执行文件才有权限进入系统内核从而获取系统的完全控制权。所以杀毒软件都会有自己的驱动也就是至少有一个sys文件运行后加载到内存便可充分进入Windows系统。如果驱动的代码存在漏洞则可能会导致系统内核崩溃从而引起蓝屏(BSOD)。蓝屏是驱动程序代码发生异常的结果而EXE的代码是不会造成系统崩溃的因为它没有访问系统内存的权限。从用户空间(ring3)进入内核空间(ring0)需要经过一道门----SSDT(System Services Descriptor Table)称系统服务描述符表这是一张系统服务表ntdll.dll中的NT系列函数最终要访问的就是SSDT所以要最终结束一个进程必然要经过SSDT中的NtTerminateProcess函数杀软在驱动中拦截了NtTerminateProcess、NtTerminateThread、NtOpenProcess等系统服务从而保证自己不被ring3下的EXE程序干掉。SSDT最终要通往系统内核去执行真正的代码所以要挂得彻底就要挂钩内核也就是inline Hook。不过相对而言SSDT更稳定所以有些程序还是挂的SSDT当然也有挂内核的例如360。那如果病毒也进入内核怎么办病毒一旦进入内核杀毒软件就无法再对其进行安全控制系统就被完全劫持杀软的主防也就彻底失去了作用。所以驱动病毒(Rootkit)是最危险的如果一个程序要安装驱动一定要确定它是安全的才能放行。 可是有些杀毒软件已经过滤了终止进程的服务可为什么还是会被其它进程Kill掉呢这是因为杀进程不一定要用标准的终止进程函数还可以从它的GUI(图形用户界面)下手。早期的安全软件自我保护不够彻底只单单保护了进程和线程而没有保护窗口界面。Windows有一个消息通信机制依靠消息传递来和窗口进行通信窗口创建后会收到许多系统消息如果病毒进程向杀毒软件发送了这些消息杀软进程将会出现问题甚至挂掉。比如要杀掉一个窗口就向目标窗口发送WM_CLOSE、WM_QUIT、WM_DESTROY等消息窗口就会被销毁进程也随之退出。不过现在的杀软保护机制比以前要完善这些消息如今已经过时了。但没有绝对的安全任何程序都有漏洞(bug)要干掉AV软件就要寻找它的漏洞然后给它致命一击。除此之外Windows的消息还有好多如WM_MOVE(移动窗口)WM_SIZE(改变窗口大小)等等。那我有没有办法控制其它进程的窗口呢办法是有的还是调用系统API例如我要移动记事本notepad的窗口就必须先得到它的句柄(hWnd)然后MoveWindow它或SetWindowPos它到任意位置。句柄怎么获取呢可以通过EnumWindows、GetWindow、FindWindow等函数遍历系统所有窗口然后再得到其标题和类名就能大致找到它。 但是有些窗口却无法关掉即使向它发送了WM_CLOSE这是怎么回事因为目标窗口Hook了WM_CLOSE消息将它拦了下来。不急我们还有其它方法就是隐藏(Hide)它。系统有许多窗口大部分都处于隐藏状态只有少数能看见隐藏属于窗口样式(Window Style)的一种窗口样式也叫窗口风格是指一个窗口的外观就像人的相貌一样不同的人长相不同窗口也是如此。有些窗口能改变大小有些不能有些有最小化最大化按钮有些一直位于顶层还有些没有标题栏甚至有些窗口是透明的鼠标点击不到等等这些都属于窗口的样式要获取窗口的样式就要GetWindowLong改变一个窗口的样式要SetWindowLong比如要隐藏一个窗口就要把它的WS_VISIBLE样式去掉当然通常的做法是ShowWindow(显示窗口)ShowWindow可以将目标窗口隐藏或显示、最小化及最大化实际上依然是改变了窗口的样式。同样的要让一个窗口永远处于最前面就要用SetWindowPos给它添加一个WS_EX_TOPMOST样式。有些窗口比较特别它们是编程中的控件(Control)比如TextBox、ListBoxButton等控件本质也是窗口只不过是子窗口是属于某个窗口内部的窗口这样的窗口不能移出它的父窗口子窗口除了具有标准窗口的样式之外还有它自己独特的Style子窗口可以再有子窗口如此形成窗口树这一点和进程差不多。获取子窗口用GetWindow获取父窗口可以用GetParent不过不建议使用因为GetParent这个API有问题它有时会取到所有者(Owner)窗口获取父窗最好用GetAncestor。每个窗口都有一个顶级父窗叫做桌面(Desktop)这个桌面不是Explorer的桌面而是系统内核win32k.sys创建的窗口属于win32子系统进程csrss.exe的窗口但是有些可能不属于Desktop例如消息(Message)窗口。另外窗口还有其它属性比如窗口大小获取窗口尺寸用GetWindowRect这个API会取到一个矩形(Rect)Rect由两个点(Point)组成一个是窗口左上角坐标一个是窗口右下角坐标当窗口最小化时是取不到的只能用GetWindowPlacement得到它的还原矩形。窗口是由进程创建的确切地说是由线程创建的所以每个窗口一定都有一个对应的进程和线程比如桌面图标窗口(Progman)、任务栏窗口(Shell_TrayWnd)以及文件管理器窗口(ExploreWClass)都属于Explorer.EXE进程。当我们双击一个txt或jpg也会产生一个窗口这个窗口是个exe程序或者说是一个软件软件和相关文件类型存在关联所以才能自动调用EXE而txt和jpg是不会有窗口的。窗口除了窗口矩形还有客户矩形(Client Rect)客户矩形是一个窗口的工作区是可以通过代码控制的部分是程序员可以直接访问的那片区域而非客户区(Not Client)则由Windows系统控制标题栏(CaptionBar)、菜单栏(MenuBar)、窗口边框(Border)都属于非客户区。注意菜单栏不一定是含有菜单的栏目它也可能是伪菜单栏比如工具栏(ToolBar)或自绘控件。工具栏是一个窗口属于窗口类而菜单栏不是窗口没有句柄它只是窗口非客户区的一个区域罢了如资源管理器中的菜单栏实际上是一个ToolBar窗口仍然属于客户区部分。获取窗口属性的常用工具有Spy、ViewWizard等。
6、如何防毒 所谓知己知彼百战百胜杀软要对付病毒就要知道它的原理知道它一般要干些什么事。早期的病毒一般是感染感染可执行文件病毒遍历所有EXE文件并将它自己的文件Bytes写入EXE之前这样双击一个EXE首先启动的就是病毒程序病毒程序获取控制权后再回到原始文件的代码入口执行原来的程序代码这样用户便发现不了它的踪迹还有些则是纯属玩笑程序(Joke)。而如今的病毒程序一般以木马为主他们利用木马入侵用户的计算机并从中获取利益。典型的木马程序有键盘记录(Keyboard Logger)、勒索程序等。 键盘记录的方式有很多比如消息钩子、定时截取按键、过滤驱动等。消息钩子最为常见病毒启动后通过SetWindowsHookEx注册一个系统钩子然后就能监控到系统全局的按键。一种方式是通过DLL注入系统所有GUI进程获取记录另一种是通过低级钩子(WH_KEYBOARD_LL)捕获记录定时截获一般是通过GetKeyState、GetAsyncKeyState等函数截取记录DirectX游戏按键记录等更底层的则是直接释放一个键盘过滤驱动(Filter Driver)到用户电脑。另一种形式是通过发送WM_GETTEXT、EM_GETPASSWORDCHAR获取编辑框和密码框的内容来达到记录用户输入信息的目的。钩子的作用不仅限于键盘记录它还有其它许多作用相比之下另一种技术则显得有些过时它是远线程注入(Insert Thread),一般的程序不需要什么注入其它进程所以但凡调用CreateRemoteThread则基本会被认定是木马。还有种病毒属于恶意程序专门搞破坏比如删除文件格式化磁盘改文件夹图标伪装成文件夹等这种病毒行为虽然简单但破坏性却很为严重看似简单的东西反而是最危险的。与EXE病毒相比DLL病毒则更加可怕如LPK.dll病毒它和系统文件lpk.dll同名运行后在本机搜索WinRAR等压缩器程序然后将自己写入到压缩包中去属性设为隐藏。当用户双击EXE后EXE会在当前目录下寻找lpk.dll找到的话就加载随之病毒就从Dll入口处执行目标代码。对付它的办法是在注册表中声明该DLL库使程序在运行后先到系统目录(system32)中寻找该DLL而不是先到应用程序目录下寻找该库文件。所以说设置成显示所有文件是有必要的真正重要的东西不必隐藏而应该加密。中了病毒重装系统就没事了吗并不是的有时病毒会将自己复制到所有分区下恢复系统只是恢复了系统盘(C盘)而其它盘并没有发生改变(D盘可能会被安装些程序)所以如果你不小心又运行了其它盘的病毒那就悲剧了。病毒的启发方式也有很多如改变注册表关联改IFEO(映像劫持)写Autorun.inf等。在资源管理器中双击一个程序并没有立即为它创建进程而要到注册表寻找其对应的另一个程序病毒将目标程序篡改从而达到偷粱换柱的目的。一个进程运行的步骤是shell32.ShellExecute-kernel32.CreateProcess-ntdll.ZwCreateProcessEx最后是SSDT的NtCreateProcessEx。双击是从ShellExecute开始执行的到了ntdll时进程目标才得以确定中途可以在注册表中改掉目标。
7、病毒伪装 仅运行了起来是远远不够的病毒还要将自己写入自启动列表以便长久落脚。自启动是一项很复杂的机制有开始菜单启动、注册表开机启动还有服务启动、驱动启动、DLL启动等。自启目标未必是EXE只要代码到了内存就会执行有时一个程序后台启动了但却无论如何找不到它的启动项这是因为它采用了DLL的方式启动。工欲善其事必先利其器要查看这些启动项就要用到利器Autoruns就是专门干这个的。要阻止病毒就要充分了解启动项从一定上意义讲阻止了自启就等于阻止了病毒。只要它不自启重启电脑后它也就不会再运行不运行就没有控制权那么我们就有时间揪出潜藏在深处的恶意程序。 病毒要生存就要首先保护自己。隐藏(Hide)和伪装是一个有效的方法首先要隐藏进程那要就hook掉获取进程的API最基本的是在系统的任务管理器(Taskmgr)中隐藏自己Taskmgr获取进程用的是NtQuerySystemInformation那病毒就要hook掉该API抹去自己。然后是伪装比如伪装成系统进程的名字如svchost.exe或者修改模块PEB伪装自己的路径。接下来是隐藏文件hook掉NtQueryDirectoryFile(查询目录文件)在资源管理器就看不到它了。除了隐藏和伪装还可以保护比如像杀软一样过滤掉NtOpenProcess等API就能防止Taskmgr结束自己但如果碰到驱动级管理器就无效了带驱动的辅助工具称为ARK也就是反内核工具它工作在ring0层属于手杀工具的一种它不但能够保护自己还能检查系统内核的状态判断内核代码是否异常当然还具有强杀功能比较有知名度的软件代表是IceSword(冰刃)、PCHunter(原XueTr)、PowerTool等ring3下的工具比较少比如我编写的FxIce(XP下可用现已开源)。进程要删除一个文件必须用到DeleteFile包括Explorer在内DeleteFile前要先SetFileAttributes以便移除文件的只读(ReadOnly)属性因为只读文件是无法删除的。病毒要防止自己被删除就要在内核中的Hook NtDeleteFile和NtSetInformationFile防止自己被访问就要Hook NtCreateFile、NtOpenFile。和进程一样文件也有文件句柄hFile要读写一个文件首先要OpenFile或CreateFile这个文件得到一个句柄(Handle)然后才能对其WrieFile或ReadFile句柄用完要关闭(CloseHandle)它以便释放资源。最后是保护窗口首先是隐藏这里是指改变它的Style让自己不再拥有Visible(显示)属性其次是在内核中隐藏自己的信息或者挂上内核钩子让ring3(用户模式)下的进程无法获取到自己的信息比如在ShadowSSDT中Hook NtUserQueryWindow、NtUserFindWindowEx等。
8、病毒测试 测试一个程序是否是病毒最安全的环境是虚拟机把可疑程序扔到虚拟系统中就可以放心大胆地运行它了。隐藏是相对的存在是绝对的完全隐藏对象是不可能的因为至少操作系统能够检测到它的存在那么其它程序就也能。所以没有不透风的墙病毒的隐藏是暂时的。病毒一般是网上下载的程序或者来自可移动盘里的程序而且都是因为你无意的点击或者一时疏忽才让病毒有了可乘之机侵入了系统。少数病毒可能会自动运行比如移动盘自动播放触发了病毒或者某些程序设置了自动运行功能等比如自解压自运行对于这种情况可以选择使用HIPS软件不必驻留内存测试完了退出即可程序运行过程发现存在异常行为直接中止另外还要不定期查看系统启动项的状态及驱动状态避免自动程序过多以及病毒落脚。那病毒或木马会不会远程侵入电脑这个是不会的远程控制实际上仍然是本机控制木马能够控制你的电脑说明它已经进入了你的系统而且已经成功地进入内存。不过如果没有把握对抗病毒还是装个防护软件比较好。