Explorer.EXE进程自动重启的故事.pdfVIP

  • 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)

1亿VIP精品文档

相关文档