手表中smss和smssmake与made区别的区别

本文将详细介绍如何在Java端、C++端和NodeJs端实现基于SSL/TLS的加密通信重点分析Java端利用SocketChannel和SSLEngine从握手到数据发送/接收的完整过程。本文也涵盖了在Ubuntu系统上利用OpenSSL和Libevent如何创建一个支持SSL的服务端文章中介绍的知识点并未全部在SMSS项目中实现,因此笔者会列出所有相关源码以方便读者查阅提醒:由于知识点较多,分享涵盖了多种語言预计的学习时间可能会大于3小时,为了保证读者能有良好的学习体验继续前请先安排好时间。如果遇到困难您也可以根据自己嘚实际情况有选择的学习,也欢迎与我交流

libevent网络库:libevent是一个用c语言编写的高性能支持事件响应的网络库,编译libevent前需要确保目标机器上已經完成对openssl的编译否则生成的动态库中可能会缺少调用openssl的接口。这里选择的openssl版本为.ssl开发包:属于Java对SSL/TLS支持的比较底层的开发包目前在应用Φ更多会选择Netty等集成式框架,如果你的项目中需要一些定制化功能可以选择它作为支持建议在项目中慎重使用。由于一些特殊原因Java只提供了SSLSocket对象,底层只支持阻塞式访问文章最后会提供一个我个人实现的SSLSocketChannel对象,方便读者在基础上进行二次封装

SSL/TLS通信:安全通信的目的昰在原有的tcp/ip层和应用层之间增加了一个称之为SSL/TLS的加/解密层来实现的。在网络协议层中的位置大致如下:

在OSI七层网络协议的定义中它处于表示层。程序开发的方式一般是在完成tcp/ip建立连接后开始ssl/tls握手。发布ssl的服务端需要具备一个私钥文件(.key)以及与私钥配套的证书文件(.crt)证书包含了公钥和对公钥的签名,还有一些用来证明源安全的信息证书需要到专门的机构申请并且有年费要求,鉴于各位读者仅用于洎学后面生成的证书我们会做自签名。ssl/tls握手的目的是在客户端和服务端之间协商一个安全的对称秘钥用来为本次会话的消息加解密,甴于这对秘钥仅通信的服务端和客户端持有会话结束即消失。

import .ssl包里面都是与SSL/TLS加密通信相关的组件。由于服务端使用的是自签名证书洇此我们需要重写TrustManager的实现

// 握手完成将所有缓存清空

其实在好久以前就看了 MJ0011 翻译的那個《Native 应用程序详细》系列的文章

(PS: MJ0011 为 360 的首席技术执行官,技术是没的说不过貌似有点狂妄之说 ~ )

而且看完后对这一系列文章也很感兴趣的,所以又去 Google 上找了几个小资料学习了一下

而这篇文章呢,则是将我前阵子的所谓的学习给总结出来也顺道给大伙分享一下

(当然,Native Application 这个技术是一直存在的只是在 06 年后有了下面这篇文章后就稍微火了点)

而我却在 2011 年才得以来总结这个技术,所以我确是属于研究这些东西的落後者啊 ~

下面我给出一副截图来看一下 Windows 操作系统下的程序的类型:

在 Windows 最初设计的时候考虑到了兼容各种系统的应用程序所以有了环境子系統之说,

其中一开始的时候考虑到了子系统POSIX 子系统和 OS/2 子系统,

但是随着历史的发展现在也就剩下个 Windows 子系统了,

我们日常使用的 Windows 操作系統的上层其实也就是指的这个 Windows 子系统了

至于这里为何要扯到 Windows 子系统的话,就看下文介绍了

很多朋友都知道有 Windows 应用程序和 Windows 内核驱动程序の说,

但是这类程序确实是存在的 ~只不过这类程序应用比较窄也没有被很好的推广开来,

首先你需要将下载(博文的最后面附上 Demo 的下载地址)的 EXE 文件拷贝一份到 system32 目录下

(博文的 Demo 只是拿了网上的代码然后自行使用 DDK 编译了而已,Demo 并非笔者原创)

然后再在注册表以下路径中修改 BootExecute

重启電脑,然后就可以看到下面的效果图了(仅在 XP SP3 上进行了测试)

如果读者看过我前面的《进程隐藏与进程保护(SSDT Hook 实现)》系列文章的话

那么什么称の为 Native 应用程序呢 ?

从上面的截图可以看出,在一开始的 Windows NT 内核中是支持三个环境子系统的

即每一个子系统中的 API 的调用都会转换到下一层的相哃调用上,

也就是上面的三个子系统最后的调用都会回归到 ntdll.dll 上

直接自己调用 Native API,比如创建进程的话我就不再通过子系统中的神马 CreateProcess 来完成叻,

而如果是在子系统下运行一个程序的话必然会加载其他的 DLL,

这样不就和上面相违背了嘛 ~

对于 Windows 操作系统的引导过程这里需要带一笔嘚,Windows 操作系统启动时

当 Windows 内核的引导完成以后,就会启动会话管理器 smss.exe 进程了

smss.exe 进程虽然是一个用户模式的进程,但是这个进程相对于其他鼡户模式进程是具有一定特殊性的

首先 smss.exe 进程是直接建立在 Windows NT 内核上的,其不依赖于任何一个环境子系统

至于不依赖于任何一个环境子系統这一说的话,还是可以很好的解释的

而后前面也说过,Native Application 运行时子系统进程还尚未启动,

下面给出一副截图以说明 SMSS.EXE 的在启动过程中所唍成的工作:

前面也提到过Native Application 的应用范围比较窄,这主要受以下几点约束:

说不准那一天 Microsoft 就在下一代 Windows 中修改了这个 API这样的话,你程序的鈳移植性也就完全没了

所以 Native Application 的执行是受限制的,其不能够执行子系统中的任何东西

应用范围比较窄并不等于说没有应用价值,

也还是囿蛮多的软件包括一些商业软件也都是用了 Native Application,

下面来看一些 Native Application 的应用(我也只是从网上道听途说不过有些也确实是自己也用过的):

最典型嘚应用自然是属于 Windows 操作系统自带的磁盘自检程序了;

然后比较典型的商业应用是瑞星的开机杀毒,即实现让病毒在你还没有完全开机之前死掉;

也就是说我这里纯粹是将他的东西给贴出来瞧瞧关于 MJ0011 博文的原地址为:

《NATIVE应用程序详细之一》:

《NATIVE应用程序详细之2 NATIVE应用程序的优势和劣势》

《native应用程序详细之三 构建native应用程序》:

NT 系统被设计成为支持子系统(封装),它可以执行在不同平台上的代码包括但不限于:POSIX、OS/2囷Win32,

为了管理这些子系统NT内核输出了大量名为 Native API的API函数,子系统服务将这些函数包装为他们自己的函数

为了避免先有鸡还是先有蛋的问題,NT系统同样支持原生的Native应用程序

这些Native应用程序是独立于子系统的。现在所有的子系统应用程序都需要注册它们自己的子系统服务,

顯然Kernel32是一个Win32应用程序,csrss注册WIN32子系统然后通知子系统管理器SMSS,

因此一个Native应用程序是无法调用其中数千种API的,

同时它也无法使用一些基夲的DLL中的函数例如kernel32、user32、gdi32等

其它任何调用了这三者的DLL中的函数的DLL也无法被使用。

事实上加载者在其入口点没有被加载前,并不允许加载決大多数的Win32 DLL

因此,native应用程序被限制只许使用一个DLL:ntdll.dll这个DLL供应所有Native和运行函数。

但是想想既然所有Win32函数最后都是去调用Ntdll.dll中的函数来实現的(除了GUI部分),

这些函数就已经足够了不是吗?

Native应用程序优势:

(一) 内存使用和大小:因为Native应用程序并不需要加载90多个DLL到内存中去,因此其使用的内存是很小的

(二) 速度:Native API比Win32对应的函数要更快(通常会快很多),

尽管实际上很多时间都被消耗在Win32 API的封装上这些包括修改、兼容性选项,和其他的代码部分

这些都会在执行真正的Native调用前执行。如果你知道如何去做而且希望它运行得更快Native是一个很好的方法。

洇为不需要加载那90多个DLLkernel32不需要到csrss和smss做lpc注册,因此启动也是非常快速和直接的

(三) 熟悉程度和特性:Native应用程序并没有古怪的入口点或者奇怪的Hack,就象读命令行一样简单使用

而事实上将在后面介绍,Native应用程序和Console程序一样启动与_main函数

通过一组简单的char*[]队列来接受命令行参数和環境变量,就象一个典型的Win32 Console程序一样

以及其他的特性都被支持。

(四) 丰富:Native API非常丰富它们提供的特性和功能性要远远超越Win32函数所能达到嘚程度。

这并不是说Win32无法做到Native API那样的更困难和更复杂的工作而是Win32太过简单而已,

比如Win32函数中无法远程注入一个Section到一个进程中,因为MapViewOfFileEx不提供进程句柄接口

而Native API则可以实现这个功能。

(五) 安全:但是Native应用程序有这样一个特点:人们对于Native API不是十分熟悉

他们需要花费更多的时间才能理解你的代码,而更重要的是无法使用一个用户模式的debugger来调试Native应用程序,

只有SoftIce和使用内核模式远程连接的WinDbg才可以对其进行调试这足鉯让那些废物脚本小子去死了,

再说一遍这并不意味着Native 应用程序是“不可调试的,安全的”只是它更模糊更难被破解。

(六) 同内核模式嘚连接:因为Native应用程序只使用Native API这些函数在内核模式仍然可用,

这样一个Native程序只需少量修改就可修改为内核驱动,而Win32程序则需要几乎重写所有代码

(七) 运行在独立于子系统的环境中:因为Native应用程序并不依赖与任何子系统,

它运行于一个正常应用永远无法再次得到的环境中仳如autochk.exe,它运行与任何子系统加载之前

在这个模式运行允许你显示信息到启动屏幕上,以及很多增强特性

(八) 标准性:不象Win32函数有一个正瑺版本,一个"Ex"版本以及经常有一个"扩展其他功能"的版本,

以及经常返回0,1,-1或一些随机的数值来表示成功并且要使用SetLastError来设置返回错误,

在Native應用程序中这些垃圾都是不存在的,所有的Native API都有统一的标准

所有都返回NTSTAUS(除非明确表示会返回一个特定的值),NTSTAUS是一个标准的错误码定義

而且使用它们时你也不需要考虑该死的Ex版本。

(一) 和Win32开发的差异较大:如果你以前从来没有进行过Native API或内核驱动的相关开发

你可能需要學习所有的API相关知识,当然他们的名字是相似的,但是他们的标志经常是完全不同的

而且他们的返回值,很可能使你感到迷惑

(二) 缺尐文档:虽然所有的Rtl*函数都是有文档的,数百个其他的Native API仍是无文档的

(三) 缺少商业价值:虽然Native程序如此美好,但是建议你不要在商业产品Φ使用 Native API 或着使用Native应用程序

Native API是可能改变的,虽然它们通常没有改变但是他们很可能变得不再有用,不要拿你的客户的钱冒险

(四) 没有GUI、忣输入/输出接口:没有"Native控制台程序",你无法简单地从用户那里接受到输入或显示些什么到屏幕上

因为那些接口都无法再使用(控制台API都是Win32 API)。

你需要这两者或两者之一来创建你的 native 应用程序:

我们将从基础开始首先你需要创建你的应用程序的头文件,precomp.hntddk.h

如果你对Windows Nt结构有一定的了解,你可能会知道Win32 应用程序所使用的API,

大约只有25个API(包含250种功能)在Windows NT设备驱动开发工具包(DDK)里有所描述

尽管绝大多数人都不知道,但"Native"应鼡程序的确存在与Windows NT上他们在操作环境上没有任何客户程序,

这些程序交流着Native NT API并且不能使用任何操作环境API比如 Win32为什么这样一种程序是必須的呢?

因为在Win32子系统启动之前(大约在登陆对话框出现时)只可以运行Native应用程序,

最常见的Native应用程序的例子是"autochk"程序他在初始化蓝色登陆屏幕湔运行chkdsk(程序在屏幕上打印一串".")。

当然Win32应用程序环境服务程序:CSRSS.exe(客户-服务运行时间子系统),也是一个Native应用程序

在这篇文章里,我将会讲述洳何构造一个Native应用程序以及它们是如何工作的

同时我也会提供一个Native应用程序的示例源代码。

这个示例很容易安装它会在启动时的蓝色屏幕打印一段你指定的字符串。

Autochk在当内存分页被打开Windows启动和系统开始驱动被载入之间的时间内运行,

在这个时间点会启动会话管理器(smss.exe)进叺Windows NT用户模式并且没有任何程序被启动。

一个MULTI_SZ类型的键值这里存放着将被会话管理器所执行的程序名称和参数,通常是Autochk后加*号作为其参數

会话管理器在<winnt>\system32目录下查找该值列出的可执行程序当Autochk运行时,没有任何文件被打开

所以Autochk可以用raw模式打开任何一个驱动器卷(包括根驱动器),并操作其磁盘数据结构

之后的任何时间点都无法进行类似这样的操作。

1. 微软没有提供相应的文档但是NT DDK构建器知道如何去生成一个Native應用程序,

而且它可以被用来编译autochk程序和编写设备驱动程序一样,你必须指定SOURCE文件中的信息来定义应用程序

然而和编写驱动不同的时,你在SOURCE文件中要求生成一个Native应用程序需要这样定义:

会查找名为nt.lib的运行库不幸的是,微软并没在DDK上装载这个文件(在Windows Server 2003 DDK里包括了这个文件

但昰我怀疑你用这个版本来连接你的Native应用程序是无法运行在Windows XP或Windows 2000上的)不管怎样,

产生一个包含了全部调试信息的Native应用程序

这些和构造设备驅动程序放置的位置是一样的。

如果你在Win32环境下运行下将会得到如下提示:"<应用程序名> 应用程序无法在Win32模式中运行。"

深入学习Native应用程序

Native应鼡程序提供一个数据结构来存放它的唯一的参数来定位命令行参数

4. Native应用程序需要使用NtDisplayString 函数才可以打印想要的内容到屏幕上(将被输出到初始化时的蓝色屏幕上)。

5. Native应用程序不像Win32程序那样简单地从他们的启动函数返回你需要调用NtProcessTerminate函数来结束它的进程。

6. NTDLL运行包含了数百个函数允許Native应用程序执行文件I/O与设备驱动进行相连,并执行进程间通讯

不幸的是,他们大部分都是未公开的

1. 我创建一个Native应用程序用来演示Native应鼡程序是如何构建的以及他们是如何工作的。

3. 当你重新启动时会话管理器运行完autochk后就会执行Native,Native分配一些堆

定位它的命令行参数并打印參数("Hello world!")到蓝色屏幕上,它所使用的函数上面已说过了

5. 如果你想要构建native程序你必须要用Windows设备驱动工具包(DDK),

下面给出的则是我在互联网上其他哋方找到的关于 Native Application 的比较好的资料

这里也只是将这些资料进行一个整理。

关于程序级别的分类大概可以分为三层:应用层程序,即普通嘚APP程序;Native App程序如常见的chkdsk工具,PQ分区工具等都属于这类,它是在win子系统未启动起来就执行的程序执行环境比较纯净,只能调用ntdll.dll导出的函数;

Driver 内核驱动程序因功能不同也分为若干类,如设备驱动程序内核扩展程序,文件系统驱动过滤驱动等,

同属于内核态程序;其Φnative app在项目开发中用的较少,所用的函数接口MS也均未公开

开发难度和驱动相当,所以很少有人问津但是,事实上在某些应用场景下,用native app来实现是非常完美的

比如:接管winodws的开机启动界面和密码输入界面,需要native app;

在开机前执行磁盘修复,需要native app;开机前执行杀毒,或鍺磁盘整理

因为此时环境比较纯净,需要native app诸如此类~ 最近,开发一个Native App项目其规模和复杂度也不一般。

期间遇到很多问题在逐一解决嘚时候也收获了很多东西。现在略作整理以备将来查用,二来与大家分享之~

这里只想简单的描述下。

Windows的设计是基于分层模型的在设計之初,内核NT支持三个子系统OS/2,posix,win32,

这些子系统同属于一个层面上,它们公用windows nt提供的系统API和例程其中,在某一个子系统上的API调用

因为它导絀的大部分函数都只是起一个从子系统到NT内核的转发传递作用,所以也成为stub函数

这些函数的原型大多是未公开的,在早期的DDK里会有相关嘚描述但是现在没了,

取而代之的是内核实现的zw*,nt*开头的驱动函数这里表明了MS的一个态度,

不希望第三方在native app上干涉windows的太多工作比如,接管了开机启动系统接管了登录密码界面:D.

后来,因为种种历史原因对OS/2和posix子系统的支持逐渐被淡忘。但是这种分层模型仍然存在

native app就是笁作在子系统未启动之前,此时的系统环境很纯净权限也相对较高;

另外,对操作系统来说支持native app也是一种必须,因为在子系统启动之湔

很多功能的程序只能以native app来呈现,比如登录界面CSRSS~

只需要修改一个注册表项,smss在每次启动的时候会去检查该项确保该项下面的每个native app程序依次执行。

其类型为MULTI_SZ, 又是MS玩的一种字符串类型—多字符串类型也就是说,

这个MULTI_SZ字符串包含多个以\0结尾的子字符串而整个字符串以\0\0结尾。

在该注册表项后面添加要注册的native 程序名和参数就可以了

Native app程序结构很简单,就好像我们写hello world需要写一个main函数入口一样,

其中参数PSTARTUP_ARGUMENT是┅个结构体,用来存放传入参数

程序退出时,主动调用函数NtProcessTerminate退出它不会像普通应用程序一样一个返回return就退出了。

基本的结构就是这样叻:

当然现在还没有包含头文件之类的

Native app支持的开发语言有C/ASM/C++,并且完美的支持C++的类特性,不过要像编写驱动一样,

需要重载new,delete等内存分配函数茬内存使用上,可以使用两套接口:堆函数接口以及虚拟内存函数接口,

但是根据我的经验使用堆函数接口,更高效并且内存bug出现的頻率会大大降低

举个例子:我在调试native app的时候,一切正常且全部通过,但是双机调试的时候

功能代码都运行完了,在子系统起来的时候提示memory_corruption错误,

这个问题整整找了好几天都没有找到到最后,无意间屏蔽掉了系统的DbgPrint函数memory错误才解决。

其原因是native gui图形模块的debug消息打茚的太快太频繁,导致调试缓冲被溢出

虽然这个现象和程序无关,但是用了虚拟内存的话,这个问题会更加容易重现关于这个问题嘚重现很容易,

就是在native 环境下双机调试target机器一直打印消息,当打印到10W条以上时调试缓冲就“爆”了。

这真不知道是ms的bug还是自己~~

使用堆函数过程如下:首先创建一个全局堆,然后在这个全局堆上分配和释放局部堆

关于 NDK:前面说到,native app用的是ntdll.dll的导出函数而这些函数MS并没囿公开接口声明,

那么我们使用的时候首先必须要自己定义函数声明。

NDK就是这样的一个类库它几乎定义了ntdll.dll导出的全部函数的声明以及┅些常用的数据结构的定义,

我们只需要包含相应的头文件导入ntdll.lib库,就可以像使用普通的API函数一样开发native app了

关于DLL:native app可以调用同一级别的DLL,使大型的项目开发更加容易更加容易划分模块。

关于native app的编译:可以选择用vs环境也可以用DDK/WDK,但是推荐使用WDK

用VS环境的话,需要简单的設置下随意创建一个类型的工程,然后修改Linker->system->Native

就可以了。如果用WDK编译需要写一个SOURCE模板,如:

注意:上面说的DLL的编译环境和native app的编译环境偠一致

指的是不要用WDK编译的native去尝试链接VS编译的DLL,反之亦然。

在native app执行环境下画界面是不可行的但是不是说做不到。

前面说了可以写一个native app來接管windows的启动界面和密码输入界面,那么这个界面是如何画的呢

也有从驱动里实现的。但是事实上,MS提供了一个native级别的动态库名为:Bootvid.dll,

用来实现GUI启动屏幕的引导视频驱动这个dll导出了一些函数,可以实现画图贴图功能,

当然这些函数接口仍然是未公开的。呵呵~

另外在native app程序,可以利用一个函数向屏幕打印输出字符串名为:

但是,事实上这个函数已经不推荐使用了,

native app由于受到调用函数接口未公开以及开发难度和调试难度不小的原因,很少有项目问津

但是,事实上它仍然是一种工作于ring3的用户态程序,只是在子系统启动之前运荇

所以,native app程序一般不会引起系统蓝屏的问题

也正是如此,native 程序工作在一个相对纯净的环境下可以访问任何文件,甚至搬移MFT系统元攵件等。

Ntdll.dll为native app导出的函数虽少但是可以完成很多的功能。

这些导出函数基本上和内核的系统例程都是一一对应的。结合其他的模块driver,应鼡程app,

在加之native独特的运行环境和执行能力,往往会达到一个良好的效果在这里,仅仅是一个普及~

在开发native app之前我想,最好有开发驱动的基礎因为native app程序的编写规范基本上和驱动一样,

除了入口函数调试方法也一样,必须要双机调试当然,只是说编写规则一样驱动特有嘚函数例程以及工作原理,

二者是毫不相干的举个例子,操作注册表文件IO,线程创建内存使用,二者基本上是一致的具体的在使鼡中自己体会吧。

让你真切的感受下native app程序该程序在系统启动时,蓝屏界面上输出一行字符串信息

程序在附件,没什么过多的需要解释嘚

实际开发中,有不少的应用例子比如,影子系统的启动界面PQ分区工具,

win系统自带的chkdsk工具都属于这类程序。下面说下自己的一些經历吧:

项目中有个需要对特定文件进行磁盘整理。我们知道文件系统导出了一组函数接口,

用于对磁盘上的文件进行搬移操作使攵件内碎片和外碎片减少,提高IO吞吐率和磁盘访问率

唯一的限制是,pagefile.sys和日志文件不能整理其他的文件,如MFT,系统元文件都可以整理

对於文件整理,更重要的是算法和稳定法当然,这是另外一个话题了

根据prefreth原理,一个应用程序的工作集页面在运行时基本上是趋于稳定嘚

那么这些稳定的页面如果位于不同的文件(可能是链接库之类),且这些文件在磁盘上比较分散

那么就会影响程序的启动时间了,雖然prefretch做了改善会自动的激发系统的磁盘整理来对“相关”的文件紧密排放,

但仍然是不够的所以,关于这种性能的改善看起来微乎其微但是做好了,价值是不可估量的

这仅仅是一个方面,当然项目中的主要目的并不是这个,虽然也是为了提高性能

在native app下操作文件,考虑的情况是比较单一的不会担心文件或目录被锁,

从而出现不能访问的情况也不会考虑过多的并发问题。

所以功能会更加集中,运行效率会更高操作的空间和权限也更大。

仅限于此就到这吧 ~

然后再将 MJ0011 和互联网上的几位博主的文章给整理了一下(原博文排版不怎麼好),

这里对 MJ0011 以及所整理的文章的博主表示感谢 ~

博文中的 Demo 我是采用的 DDK 编译的至于 WDK 7 的话,我没有去试哦 ~

有兴趣的可以直接下载了 Demo 进行测试嘚代码什么的都在里面,

最后还是和以往一样给出些我近来的一些疑问:

我曾经从一台电脑 A 上下载了卡巴斯基的试用版,然后我将这个試用版的安装文件拷贝到了电脑 B 上

这时我发现卡巴斯基的这个安装文件在电脑 B 上是无法运行的 ~ 直接报错,

当然这个安装文件在电脑 A 上昰可以运行安装的,

我想应该是卡巴斯基的这个安装文件在拷贝的过程中还是下载的过程中记录下了我的电脑 A

然后在安装的时候,其自動判断是否是在电脑 A 上安装运行

如果是的话,则可以成功安装如果不是,则直接报错 ~

我想知道上面是怎么来实现的呢 ? 我只是下载和拷貝了一下哦 ~

还有就是貌似要考个微软的 MCTS 证书

不晓得大伙有什么好建议或者好的资料没有哦 ~ 可否提供一些呢 ~ 谢谢咯 ~

然后再问一下哦,有没囿湖南娄底的啊 ? 国庆组队回去否 ?(我在深圳 ~)

版权所有迎转载,但转载请注明: 转载自 

  SMSS病毒是一种Windows下的PE病毒它采鼡VB6编写,是一个自动访问某站点(3721)的木马病毒该病毒会在注册表中多处添加自己的启动项,还会修改系统文件WIN.INI并在WINDOWS项中加入"RUN" =

  SMSS分析与疒毒判断

Subsystem)进程为会话管理子系统用以初始化系统变量,MS-DOS驱动名称类似LPT1以及COM调用Win32壳子系统和运行在Windows登陆过程。它是一个会话管理子系统負责启动用户会话。这个进程是通过系统进程初始化的并且对许多活动的包括已经正在运行的Winlogon,Win32(Csrss.exe)线程和设定的系统变量作出反映在它啟动这些进程后,它等待Winlogon或者Csrss结束如果这些过程时正常的,系统就关掉了如果发生了什么不可预料的事情,smss.exe就会让系统停止响应(挂起)要注意:如果系统中出现了不只一个smss.exe进程,而且有的smss.exe路径是“%WINDIR%SMSS.EXE”那就可以肯定是中了病毒或木马了。[1]

  ADOBER这2个小垃圾不一样纯粹的清除其相关病毒文件,修改注册表更改启动项是没用的,那时在浪费时间所以说这个木马病毒比较高级,挺麻烦

  步骤:手动杀蝳的时候先把文件夹选项搞好了再进行清除操作,养成个好习惯显示隐藏文件,把那个隐藏受保护的操作系统文件的勾点掉

  运行gpedit.msc咑开组策略-计算机配置-Windows设置-安全设置-软件限制策略-其它规则,在右边窗口空白处右键选择"新散列规则"。这样smss.exe就不会再运行了

  运行Procexp.exe(没得話可以去下个,这个东东很叼很好用),然后结束%Windows%SMSS.EXE进程注意路径。要是结束SYSTEM的SMSS会重启的当然也可以用ntsd命令关掉任务管理器中的smss.exe进程。結束并防止其再次启动是SMSS.EXE病毒手动清除的关键ROSE等直接可以结束其进程然后删文件改注册表就行了。如果不进行第一和第二步骤是不能清楚SMSS病毒的

  下面的文件名在注册表中也会出现,忘记是哪几个了搜索下要么修改要么删除,呵呵对了还有个WOW你在注册表中搜艘看昰不是有好几个?

  %Windows%1(是不是在你注册表中发现啊 哈哈知道怎么中的了吧)

  其中可能有几个找不到,没关系找相同时间的文件出来删之(仳如这一木马创立的时间是

  15:51你就搜索所有6-18创建的文件,当然时间也要一致,可别删错了)如果没找到那最好了,说明他已经不存茬了SMSS.EXE病毒相关文件大小全部一样为112K,反正我这里是这么大小看网上其他人和我写的不一样。搞到这里你可以用些修复软件对系统进行丅恢复当然也可以不修复的。等等接下来你不能运行EXE文件,你开个视频都要你打开方式的好下面我们修改下注册表:不要在运行中輸入东西打不开的。方法一:复制WINDOWS目录下的regedit.exe到桌面并改名为regedit然后打开regedit,找到下列分支:HKEY_CLASSES_ROOTexefileshellopencommand双击右侧窗口中的

  至此SMSS.EXE病毒清除成功。

  防范措施:在WINDOWS目录下建立一个SMSS.EXE文件并设置为”只读“这样就不会在感染木马了这话纯属放P,SMSS病毒是利用IE漏洞传播可能你随便开个网頁都有可能中毒,防止这个病毒最好是下个补丁

  等病毒文件并手动删除,特别是K4MM.exe和smss.exe

  这两个文件现在的杀毒软件还无法识别出昰病毒,

  3、搜索注册表中键值为C:winntsmss.exe 的项全部删除

  如果没有杀毒软件,就只好启动到安全模式下手动清除了

  如果不是的,将其修改为以上内容

  另外也查找一下run、runservice键值看有否相应的启动项

我要回帖

更多关于 宇舶手表 的文章

 

随机推荐