本文中笔者将介绍利用驱动来保护指定的进程,并制作一款个人专用的进程保护工具。对于驱动的制作笔者将在后面的文章中介绍,这里仅仅提供了一个可移植的驱动,读者可以直接拿来用。
文章中所使用的语言为VC+t平台是VC6.0。在使用本代码的时候需要安装xpDDK开发包,并将DDK头文件以及lib文件包含到VC6.O平台审,同时还要在工程中添加winsvc.h、tlhelp32.h两AI头文件,否则编译过程中会有错误出现。文章中将只为大家介绍过程实现的核心代码。新建MFC应用程序,并添加3个按钮,一个编辑框,以及一个列表控件。然后为控件添加变量,这里只要为编辑框以及列表控件添加变量,编辑框控件的类型为CEdit,列表框控件的变量类型为CListCtrl,名称为m_process- list。添加完毕后,我们开始书写代码。第一部分是获得进程列表,并添加到列表框中,我们将代码书写在对话框初始化的代码中,即OnInitDialog(),代码就不写出来了,有需要的可以找我要。
为了使我们的列表框中的进程能够实时刷新,这里我们采用设置定时器的方法,设置为5s刷新一次。启动定时器的代码我们也写在初始化对话框中,代码为SetTimer(l,5000,NULL)。上面的代码一定要写在return TRUE返回代码之前,否则代码将不会被执行。
下面要做的是获取进程列表,我们添加一个公有成员函数init0,首先在头文件OOOOOODlg.h中添加我们需要的在后面用到的函数的声明。
添加完毕后,我们就需要在OOOOOODlg.cpp文件中实现这些代码。init()的实现代码笔者就不列举了。在init()实现,后,由于我们前面已经设置了定时器,所以这里要添加相应定时器的函数,操作方法如下。在程序的class窗口中,选择料料Dlg类点击右键,选择添加消息响应。然后在消息列表中选择WM TIMER消息,然后点击“ADD and EDIT”。此时我们将来到所示的代码位置,我们在这里添加相应代码即可。代码的具体实现笔者就不在赘述了,代码中已经给出了比较详细的注释。
每一个都可以单独拿出来用到其他的程序中,应该说移植性还是比较强的,读者可以将其提出并使用在自己的程序中。这里要提醒的一点就是在驱动的测试过程中建议读者尽量在虚拟机中测试,因为稍有不慎就会是机器蓝屏。
感兴趣的读者可以在本基础上继续开发,同时要增强程序的安全性,以及错误处理。在使用驱动保护后,被保护的进程将不会再金山进程管理器中出现,同时任务管理器将无法结束该进程,这里用记事本程序做演示。