- 4
- 0
- 约5.96千字
- 约 7页
- 2017-09-01 发布于河南
- 举报
Explorer.EXE进程自动重启的故事
Explorer.EXE 进程自动重启的故事
Smallfrogs
[smallfrogs@, http://www.KZT]
修订:1.00,2005/11/15
注意:
1. 本文内容用于揭示Explorer.EXE 运行的一个现象,作者拥有本文的全部版权。
2. 未经许可,严禁任何个人、组织将本文用于任何商业场所、各种平面媒体和各种商业网站上。违
者需要承担相应的法律责任。
3. 对于本文提供的内容,作者保留随时进行修订而不告知的权利。
4. 对于本文所列举软件、书籍的版权,均由软件持有者和书籍作者所有。
Explorer.EXE 进程自动重启故事 Smallfrogs ( http://www.KZT )
很早就发现一个奇怪的现象了,如果你使用任务管理器杀死 Explorer.EXE ,Windows 不会将
Explorer.EXE 自动唤起,但是如果你自己使用TerminateProcess() 函数结束Explorer.EXE 进程,你会发现
一个奇怪的现象:被杀死的Explorer.EXE 又被Windows 自动唤醒了。
在描述具体原因之前,简单介绍一下Explorer.EXE 。Explorer.EXE 作为Windows Shell 的组件之一,主
要的用途包括有:
显示桌面、任务栏
提供图形化的文件操作方式(例如大家熟知的资源管理器)
……
总而言之,没有Explorer.EXE 的Windows 不是不能运作,而是操作很不方便。
作为Windows Shell 重要的一环,Explorer.EXE 的启动由注册表键值(Windows 2000/XP/Server 2003 ):
键:HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon
键名:Shell
默认键值:Explorer.EXE
或配置文件system.ini 决定(Windows 98/ME ):
[Boot]
Shell=Explorer.EXE
需要注意的是,Windows 提供了更换Shell 的功能,如果上述的配置点不同,那么Windows 会使用其
它的Shell,例如把注册表键值更换为cmd.exe,那么启动以后你看到的不是图形化的操作界面而是命令行
提示符(很多软件更换Shell 就是这样变出来的)。如果上述的配置点出现问题,那么登陆以后你只能看到
一个桌面,而桌面上没有任何的图标显示(有部分计算机病毒会这样操作)。
在回顾了Explorer.EXE 的功能以后,下面进入正题,说说Explorer.EXE 进程杀死的问题。
由于某些特殊原因,我们需要在某些时候杀死Explorer.EXE 进程以达到某些效果,但是在使用中发现,
很多程序,包括著名的IceSword 在杀死Explorer.EXE 以后,Explorer.EXE 都会被Windows 自动唤醒。但
是如果使用任务管理器(Taskmgr.EXE )或Process Explorer ( ),则没有这样的
现象,为什么呢?
对这 2 个程序的导入表进行分析和动态跟踪以后,发现这 2 个程序在结束进程的时候并没有使用
Undocumented API ,使用的还是已经公开的API 函数TerminateProcess(),这就很奇怪了,为什么我们使用
TerminateProcess()去结束Explorer.EXE 会出现Explorer.EXE 在结束以后被Windows 自动唤醒的问题而任务
管理器和Process Explorer 不会呢?
先研究一下 TerminateProcess() 的调用方式:
1. 以 PROCESS_TERMINATE 方式使用 OpenProcess() API 或其他等同方法打开进程句柄
2. 调用 TerminateProcess() API 对被打开的句柄执行终止操作
3. 使用 CloseHandel() API 关闭句柄。
整个流程非常
原创力文档

文档评论(0)