当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 文/Ivo Ivanov摘要拦截和追踪进程的执行对实现NT任务管理器——像需要外部进程处理的应用程序和系统——是非常有用的。
 

 

    摘要:实现的前提:你已经做好了帮助文件xx.chm,放于程序目录 实现的步骤:1。在你的cwinapp类头文件中添加onhelp()消息处理函数,如: //{{afx_msg(ccaimappdlg) afx_msg void onhelp(); //}}afx_msg 2。在cwinapp类cpp文件中添加消息映射: //{{afx_msg_map on_comma......
    摘要:oracle数据库的启动和关闭方式 一、几种启动方式: 1、startup nomount 非安装启动,这种方式启动下可执行:重建控制文件、重建数据库 启动instance,即启动sga和后台进程,这种启动只需要init.ora文件。 2、startup mount dbname 安装启动,这种方式启动下可执行:数据库日志归档、数据库恢复、重新命名一些数据库文件 如:系统表空间或日志文件。 执......


检测WINDOWSNT/2K下进程的执行

摘要 【程序编程相关:WINDOWS NT/2000下如何屏蔽

文/ivo ivanov 【推荐阅读:VC++中的函数调用惯例

解决方案 【扩展信息:文件类型探测程序

拦截与追踪进程的执行对实现nt任务管理器——像需要外部进程处理的应用程序与系统——是非常有用的.在新进程的开始之上通知感兴趣的部分是开发进程监视系统与全系统钩子的一个典型问题.win32 api提供了一个很好的库(psapi and toolhelp [1])的集合,这些库允许你列举当前在系统中运行的进程.虽然这些api非常有用,但当一个新的进程开始或结束时它们不允许你获得通知.这篇文章提供了一个有效而且完整的技术,为了完成这个目标,它基于一个公开的接口.

幸运地,nt/2k提供了一个api集合,知道的像“process structure routines“[2]通过ntoskrnl输出.一个api函数pssetcreateprocessnotifyroutine()提供了注册全系统回叫函数的能力,每次当一个进程开始,存在或已经终止时这些回叫函数都会被os呼叫.上面提到的api函数对简单地通过执行一个nt核心模式的驱动程序与用户模式的win32控制程序追捕进程时可以作为一个容易实现的方法来使用.驱动程序的角色是检测进程的执行与通知控制程序这些事件.

要求

● 为监视进程的执行提供一个简单,有效,可靠与线程安全机制

● 在驱动程序与用户的应用程序之间解决同步问题

● 打造一个易于使用与扩展的oop用户模式的框架

● 允许回叫函数的注册与解注册,还要有动态加载与卸载核心驱动程序的能力

它怎样工作

控制程序在hklm\system\currentcontrolset\services下注册核心模式驱动程序,并且动态加载.核心驱动程序然后建立一个指定的事件对象,当新的事件已经触发时(如进程开始或结束),这个事件对象就向用户模式的应用程序发出信号.控制程序打开相同的事件对象,然后建立一个等待这个事件的监听线程.接下来,用户模式的应用程序发送一个请求给驱动程序来开始监视.驱动程序调用pssetcreateprocessnotifyroutine(),这个函数接受两个参数.一个指定呼叫者提供的回叫程序的入口指针,责任是从windows接受所有的通知.在回叫时发生的一个通知上面,驱动程序发出那个信号事件是为了通知用户模式应用程序说有事情发生了.控制程序然后从驱动程序中得到那个特定事件的数据,然后为了更多的进程,将它存储进一个特殊的列队容器.如果不再检测进程执行,用户模式应用程序发送一个请求给驱动程序来停止监视.然后驱动程序释放观察机制.再后来,控制模式应用程序可以卸载驱动程序与对它解注册.

设计与实现

nt模式驱动程序(procobsrv)

入口指针driverentry() (procobsrv.c)只执行驱动程序的初始化.当驱动程序加载时,i/o管理器呼叫这个函数.既然pssetcreateprocessnotifyroutine()允许解注册回叫,这些回叫是我在驱动程序的调度程序中执行的已注册或解注册的实际的进程.这就允许我通过使用一个单独的ioctl(控制代码ioctl_procobsrv_activate_monitoring)来动态地开始与停止监视活动.一旦回叫被注册,每次当一个进程开始或终止时,os就呼叫用户提供的processcallback().这个函数被植入一个会通过用户模式应用程序选择的缓冲区中.接下来发出指定的事件对象信号,因此等待它的用户模式应用程序会被通知说有可利用的信息检索.
...   下一页
 ·键盘钩子    »显示摘要«
    摘要:文/anoop thomas这篇文章描述了怎样在microsoft windows里安装键盘钩子。钩子有两种类型——线程特殊钩子和全系统钩子。线程特殊钩子只关联特别的线程(呼叫线程拥有的任何线程)。如果你想把钩子与其他进程和线程关联在一起,你将不得不使用全系统钩子。一个钩子程序关联一个钩子,当特定事件发生时这个程序总会被呼叫。例如鼠标,当与鼠标关联的事件发生,这个钩子程序就会被呼叫。钩子通过呼叫s......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE