Windows任务管理器开发原理与实现

上传人:206****923 文档编号:91042672 上传时间:2019-06-21 格式:DOC 页数:12 大小:29KB
返回 下载 相关 举报
Windows任务管理器开发原理与实现_第1页
第1页 / 共12页
Windows任务管理器开发原理与实现_第2页
第2页 / 共12页
Windows任务管理器开发原理与实现_第3页
第3页 / 共12页
Windows任务管理器开发原理与实现_第4页
第4页 / 共12页
Windows任务管理器开发原理与实现_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《Windows任务管理器开发原理与实现》由会员分享,可在线阅读,更多相关《Windows任务管理器开发原理与实现(12页珍藏版)》请在金锄头文库上搜索。

1、 本文属于第 24期 , 适合中级读者 剖析 Windows 任务管理器开发原理与实现作者:TOo2y源代码 1:T-PsKit源代码剖析 Windows 任务管理器开发原理与实现Author: TOo2y原创 E-Mail: Brieffz5fz.orgHomepage: http:/www.fz5fz.org & http:/Date: 05-01-2003Windows2000/XP内含的任务管理器 (Taskmgr相信大家都熟悉吧,相比之下 XP 里的要比 2000功能更 加强大,返回的信息也更加的详细,不过您是否觉得还有很多希望获得的消息没有包含在里面吗?您是否 觉得 Windows

2、 的系统管理工具箱里的东西太分散了吗?下面就让我们看看它们的开发原理,并动手实现一 个真正的任务管理器。 现在我们是调用 Win32API 来实现这些功能的, 但是大家都说 MS 隐藏了太多的细节, 以后我们将讨论更多关于 Windows 内核的东东。可能大家对任务管理器里最熟悉的功能要数进程管理了, 常常我们在怀疑中了病毒 /木马的时候都会看 看任务管理器里有没有什么特别的进程在运行,所以进程查看器应该是一个非常重要的功能。我们除了需 要获得进程的名称外,还有什么呢?当然包括它的进程标识符 (ProcessID,用户信息 (UserName, CPU 使 用时间 (CPUTime和存储器的使

3、用情况 (MemoryUsage, 还有它的优先权 (BasePriority。 CPU 和 Memory 信 息可以帮助我们分析进程的运行情况,而优先权可以表示进程在 CPU 分配处理器使用时的优先情况。这些 都是通用的进程信息,让我们再看看其他的信息吧。进程的父进程标识符 (Parent Process ID ,创建时间 (Create Time,程序名称等在很多情况下也是我们关心的信息。我们再看看进程相关的性能信息。在 Windows 下通常有两种模式:内核模式 (Kernel: Level 0和用户模式 (User: Level 3,进程往往在两种 模式中来回切换,所以可以获得进程在内

4、核模式和用户模式各自的使用时间。同时还包括进程相关的工作 集 (WorkingSet, 分页池 (PagedPool, 非分页池 (NonePagedPool和页面文件 (PageFile 信息。 进程相关 的 I/O操作包括读 /写 /其他等动作,我们可以获得这些操作的次数和传送数据的数量。如果您怀疑某个进程是木马,那您还想获得哪些信息呢?简单的进程名称应该是不够的吧!我们希望 获得进程的实际程序的路径,这样可以帮助我们判断究竟是那个程序在运行。前段时间不是在讨论什么进 程隐藏的, 其中一种就是“创建远程线程”, 而注体往往又是以动态链接库 (DLL的形式存在的, 我们就希 望看到某个具体进

5、程所包含的所有模块 (Module,常常是 DLL 也。“线程”是一个大家熟悉的名字,它是Windows 系统中的实现体,而进程则是线程运行的环境。一个进程到底创建了多少线程了?我们同样可以 枚举进程内部的所有线程信息。 如果您发现一个木马进程, 下面的动作就应该是分析它的运行机制 (如果您 对它感兴趣 , 不过最终您还是要将它结束吧。 在 Windows2k 下, 很多系统关键进程在 TaskMgr 里是不能被 结束的,不过现在您不用担心了。好的,对进程的操作当然就包括结束进程。如果您用过中文的 XP ,您是 否常常遇到任务栏“假死”的情况,虽然您的电脑没有挂掉,但却动弹不得,那好我们也同样

6、可以将任意 的进程挂起来,不管您对它做什么动作 (除了结束 ,它都不会有任何的反应。有了挂起进程,同样我们也 可以将进程从“挂起”状态激活哈。桌面窗口是大家接触得最多的交互界面了,您是否想获得每个窗口的标题信息呢?当然我们还可以获 得与窗口关联的进程,线程与窗口句柄属性。如果大家对 VC 比较熟悉,就应该知道其中的一个 SPY+工具 吧,它就可以获得桌面窗口,进程和线程的详细信息,不过现在就不用打开这个,打开那个了,通通搞定 了!系统性能是每个用户关心的话题。它包括整个系统当前创建的句柄,进程以及线程的数目。还有物理 存储器 (Physical Memory的总量和使用情况,系统高速缓存 (S

7、ystem Cache的大小,存储器保留与提交 (Commit Charge状况,当然还有核心分页 /非分页池 (Kernel Memory的使用情况。几乎包括了 Windows 系统下存储器管理的大部分信息。虽然现在硬盘的价格已经很低了,不过我还是在用 6.4G 的小东东,所以常常遇到“Low Disk”!我们 常常要看看硬盘的使用情况,不过每次都要进入我的电脑,太麻烦了。而我们现在可以一次了解所有磁盘 的容量和当前使用情况,同时还有它们的格式类型 (如 FAT,NTFS,CDFS 等 和磁盘标签。说到环境块, 或许不是那么熟悉吧, 它包含一些环境变量, 而每个环境变量对应一个 /多个字符串

8、, 您 可以在控制面板的 SYSTEM/Advanced(系统 /高级里对它们进行设置,包括添加新的环境变量,删除和编 辑系统环境变量。事件记录对我们分析系统的使用情况有很大的帮助。事件记录分为三种:应用程序,系统和安全。而 对应的每种事件又可以分为几种类型,它们分别是常规信息,警告和错误。其中包括记录序号 (Record Number , 事件类型 (Type, 标识符 (Event ID , 来源 (Source, 产生时间 (Time Generated , 用户名 (User和相关描述信息 (Description。 有时间大家可以多看看事件信息, 当然每个网络管理员对它们应该是很熟

9、悉的,不过还包括其他的事件日志信息。Windows系统下的 ipconfig /all这个命令我是常常用,因为我们使用的是 DHCP ,没事看看自己的 IP 地址变了没有。其中包括详细的网络适配器的信息,包括适配器名称,描述,硬件地址和类型, IP 地址及 相应的子网掩码, 网关与 DHCP 服务器地址等。 不过您是否对网络流量也感兴趣呢?我们当然可以获得主机 接受 /发送了多少(非广播数据报,出现了多少错误,一共接受 /发送了多少信息,这些对每个网友都是 有用的信息哟。网络共享往往是大家注意的地方,您究竟共享了多少信息,它们的文件路径是什么,还有它们的共享 类型信息。我们在不需要某些共享资料

10、时,当然不要忘了将其删除,以免泄露自己的机密信息。Windows的 NT 是一个多用户的系统,允许多种类型用户的存在。我们希望获得用户账号的使用期限 (Password Expired , 记住要不定时的修改用户的密码哟, 以及用户标识符 (User ID , 组标识符 (Group ID , 还有用户账号的类型 (Type, 不同的类型有不同的权限, 我们当然希望有最 High 的权力哟! 看看系统对某个账号的磁盘空间使用情况是否有限制 (Max Storage,账号登录的次数 (Number Of Logon和登录时间信 息 (Logon Hours等,对我们分析用户的使用情况也有帮助的。

11、系统的 Win32服务和设备驱动信息也是很重要的,我们希望探测每个服务 /设备启动程序的具体路径, 状态,类型,启动方式等等信息。我们还希望对服务进行控制,比如停止,启动和删除操作。大家可以参 阅浅析 Windows2000/XP服务与后门技术获得更多关于 Win32服务的信息。关机也不是那么的单调的,您可以注销自己的系统,如果您要离开当然就需要锁定了。最近大家都不 喜欢关机,太麻烦了,所以都习惯使用冬眠,系统将会为我们保留当前信息,不过还有支持电源管理的关 机和休眠。 Windows2000的用户注意了, 我们同样可以使用 XP 系统下的带有到记时与消息提示的关机和重 启功能了。系统的版本信

12、息是比较固定的, 主要包括操作系统的指纹, 注册组织 /用户, 主机名和系统相关目录等 信息。说了这么多,我们也该谈谈如何实现了。1.窗口信息MS为我们提供了打开特定桌面和枚举桌面窗口的函数。hDesk=OpenDesktop(lpszDesktop,0,FALSE,DESKTOP_ENUMERATE;/打开我们默认的 Default 桌面;EnumDesktopWindows(hDesk,(WNDENUMPROCEnumWindowProc,0;/枚举打开桌面上的所有窗口,由回调函数实现。BOOL _stdcall EnumWindowProc(HWND, LPARAM;/在回调函数中,我们

13、可以获得窗口的标题和相关进程,线程信息;GetWindowText(hWnd,szWindowText,dwMaxCount;GetWindowThreadProcessId(hWnd,&dwPID;2.设备驱动器信息 (服务和设备驱动器差不多,在此不做重复 设备驱动信息有服务控制管理器 (SCM来管理的, 我要打开服务控制管理器, 并枚举所有的设备驱动器。 OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS;/以所有权限打开服务控制管理器;EnumServicesStatus(schManager,dwDeviceType,dwDeviceState,

14、EnumStatus,dwBufSize,&dwBytesNeeded,&dwDevicesReturned,&dwResumeHandle/枚举所有设备的当前状态;CloseServiceHandle(schManager;/记住,在结束访问后要关闭服务句柄;OpenService(schManager,szDeviceName,SERVICE_ALL_ACCESS;/打开特定的设备驱动器;QueryServiceConfig(schDevice,lpDeviceConfig,1024*8,&dwBytesNeeded;/查询驱动器的服务配置信息;QueryServiceStatus(sch

15、Device,&DeviceStatus;/查询设备驱动器的当前状态;QueryServiceConfig2(schDevice,SERVICE_CONFIG_DESCRIPTION,(LPBYTElpDeviceDescription,8*1024,&dwBytesNeeded/查询设备的描述信息;StartService(schDevice,0,NULL;/启动设备;ControlService(schDevice,SERVICE_CONTROL_STOP,&DeviceStatus;/停止设备;DeleteService(schDevice;/删除设备;3.磁盘信息我们希望获得系统所有磁

16、盘的信息,包括软盘,硬盘,光盘等等;GetLogicalDriveStrings(dwBufferLength,lpBuffer;/获得逻辑设备的信息;GetVolumeInformation(lpRootPathName,lpVolumeNameBuffer,dwVolumeNameSize,&dwVolumeSerialNumber,&dwMaximumComponentLength,&dwFileSystemFlags,lpFileSystemNameBuffer,dwFileSystemNameSize;/获得磁盘卷信息,包括卷名称和格式类型;GetDiskFreeSpaceEx(lpRootPathName,&Fr

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号