危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2289 浏览19379026

驱动级进程保护

在病毒木马与杀毒软件的彼此较量中,驱动程序对杀毒软件进程的保护是极其重要的,谁优先加载了驱动,谁就占据了这场“战争”的制高点。在通常情况下,杀毒软件都是事先安装在计算机上的,所以当木马或者病毒携带驱动开始运行的时候就会被拦截下来,并提示用户是否允许加载该驱动。如果我们写的这个驱动不含杀毒软件的病毒特征,杀毒软件的拦截功能一般会将修改选项默认设置在“允许”选项上。国内常见的拦截软件有金山卫士、360安全卫士,危险漫步在测试时候发现这两款软件都将选项设置在“允许修改上”。当然我们采用编程的方法可以使他们不弹出提示,然后再运行我们的驱动。本文中笔者将介绍利用驱动来保护指定的进程,并制作一款个人专用的进程保护工具。对于驱动的制作笔者将在后面的文章中介绍,这里仅仅提供了一个可移植的驱动,读者可以直接拿来用。

文章中所使用的语言为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”。此时我们将来到所示的代码位置,我们在这里添加相应代码即可。代码的具体实现笔者就不在赘述了,代码中已经给出了比较详细的注释。

每一个都可以单独拿出来用到其他的程序中,应该说移植性还是比较强的,读者可以将其提出并使用在自己的程序中。这里要提醒的一点就是在驱动的测试过程中建议读者尽量在虚拟机中测试,因为稍有不慎就会是机器蓝屏。

感兴趣的读者可以在本基础上继续开发,同时要增强程序的安全性,以及错误处理。在使用驱动保护后,被保护的进程将不会再金山进程管理器中出现,同时任务管理器将无法结束该进程,这里用记事本程序做演示。