文/too2y
【程序编程相关:Windows 98优化】下载本文源代码 【推荐阅读:在WIN98中解决双硬盘盘符交错】
【扩展信息:WIN98(2)】 windows2000/xp内含的任务管理器(taskmgr)相信大家都熟悉吧,相比之下xp里的要比2000功能更加强大,返回的信息也更加的详细,不过您是否觉得还有很多希望获得的消息没有包含在里面吗?您是否觉得windows的系统管理工具箱里的东西太分散了吗?下面就让我们看看它们的开发原理,并动手实现一个真正的任务管理器.现在我们是调用win32api来实现这些功能的,但是大家都说ms隐藏了太多的细节,以后我们将讨论更多关于windows内核的东东. 可能大家对任务管理器里最熟悉的功能要数进程管理了,常 常我们在怀疑中了病毒/木马的时候都会看看任务管理器里有没有什么特别的进程在运行,所以进程查看器应该是一个非常重要的功能.我们除了需要获得进程的名称外,还有什么呢?当然包括它的进程标识符(processid),用户信息(username),cpu使用时间(cputime)与存储器的使用情况(memoryusage),还有它的优先权(basepriority). cpu与memory信息可以帮助我们分析进程的运行情况,而优先权可以表示进程在cpu分配处理器使用时的优先情况.这些都是通用的进程信息,让我们再看看其他的信息吧.进程的父进程标识符(parent process id),创建时间(create time),程序名称等在很多情况下也是我们关心的信息.我们再看看进程相关的性能信息.在windows下通常有两种模式:内核模式(kernel: level 0)与用户模式(user: level 3),进程往往在两种模式中来回切换,所以可以获得进程在内核模式与用户模式各自的使用时间.同时还包括进程相关的工作集(workingset),分页池(pagedpool),非分页池(nonepagedpool)与页面文件(pagefile)信息.进程相关的i/o操作包括读/写/其他等动作,我们可以获得这些操作的次数与传送数据的数量. 如果您怀疑某个进程是木马,那您还想获得哪些信息呢?简单的进程名称应该是不够的吧!我们希望获得进程的实际程序的路径,这样可以帮助我们判断究竟是那个程序在运行.前段时间不是在讨论什么进程隐藏的,其中一种就是“创建远程线程”,而注体往往又是以动态链接库(dll)的形式存在的,我们就希望看到某个具体进程所包含的所有模块(module),常常是dll也.“线程”是一个大家熟悉的名字,它是windows系统中的实现体,而进程则是线程运行的环境.一个进程到底创建了多少线程了?我们同样可以枚举进程内部的所有线程信息.如果您发现一个木马进程,下面的动作就应该是分析它的运行机制(如果您对它感兴趣),不过最终您还是要将它结束吧.在windows2k下,很多系统关键进程在taskmgr里是不能被结束的,不过现在您不用担心了.好的,对进程的操作当然就包括结束进程.如果您用过中文的xp,您是否常常遇到任务栏“假死”的情况,虽然您的电脑没有挂掉,但却动弹不得,那好我们也同样可以将任意的进程挂起来,不管您对它做什么动作(除了结束),它都不会有任何的反应.有了挂起进程,同样我们也可以将进程从“挂起”状态激活哈. 桌面窗口是大家接触得最多的交互界面了,您是否想获得每个窗口的标题信息呢?当然我们还可以获得与窗口关联的进程,线程与窗口句柄属性.... 下一页