科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道内核级Rootkit技术入门(4)

内核级Rootkit技术入门(4)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文介绍了Windows下的内核级Rootkit的最基础性的东西,以及利用驱动程序将代码导入到内核的方法。虽然我们还没有涉及到真正的Rootkit,但这些内容是我们掌握Rootkit的必经之路.

作者:51CTO.COM 2007年10月24日

关键字: 黑客入侵 内核模式 Rootkit技术 函数指针

  • 评论
  • 分享微博
  • 分享邮件
 四、Windows设备驱动程序

  下面我们介绍如何在Windows XP平台上开发一个简单的设备驱动程序。在此过程中,我们要用到设备驱动程序开发包DDK。需要注意的是,微软为不同的Windows版本提供了不同的DDK。就目前来说,我们可以使用Windows 2003 DDK,因为该版本能够支持Windows 2000、Windows XP和Windows 2003等三个平台下的设备驱动程序的开发。

  1. 驱动程序源文件

  首先在C盘根目录下新建一个目录,本例为C:\myrootkit,此后向相应文件都存放在该目录之下。然后可以在VC++下建立一个C源文件,让其内容如下所示:

  //一个简单的驱动程序实例

  #include "ntddk.h"

  NTSTATUS DriverEntry ( IN PDRIVER_OBJECT theDriverObject,

  IN PUNICODE_STRING theRegistryPath )

  {

  DbgPrint("I am a driver!");

  return STATUS_SUCCESS;

  }

  之后,将其保存在我们的C:\myrootkit目录下,并且该文件命名为mydriver.c。下面对上面的代码作简要的解释:

  DriverEntry是该驱动程序的入口点,即当该驱动程序启动时,操作系统会首先调用该函数。它相当于一般C/C++程序中的main或Winmain函数。另外,我们看到DriverEntry的两个参数中都含有一个关键词IN,说明这两个参数只能用于输入。第一个参数指向应被初始化的当前驱动程序的驱动对象;第二个参数是设备服务键的键名。

  该驱动程序实在太简单了,它只是在内核运行时,利用调试语句给出一则消息:“I am a driver!”。不过,和一般程序不同,该消息不会显示在标准输出设备上,也就是说,我们在屏幕上看不到这则消失,关于调试输出的处理我们会在后文中加以详细介绍。

  有一点需要指出,那就是上面的驱动程序没有设置卸载例程。尽管卸载例程不是必需的,但有时它却非常有用:启动驱动程序时,系统会将参数theDriverObject传递给该驱动程序的主函数,这个参数指向的数据结构含有许多函数指针,其中一个指针称为“unload routine”。如果我们设置该指针,就能从内存中卸载驱动程序;如果不设置该指针的话,除非重新启动机器,否则无法将载入内存的驱动程序卸载掉。同时,驱动程序在开发过程中,会不断添加或改变功能,所以要经常装载以及卸载它们。为了避免每次测试新版本的驱动程序时都必须重启系统,我们应当设置“unload routine”指针。事实上,设置该指针并不是什么难事:先建立一个卸载例程,就可以设置该卸载指针了。

  现在以前面的驱动程序为例,介绍如何为其添加卸载例程:

  //一个简单的驱动程序实例

  #include "ntddk.h"

  // 这里是我们的卸载函数

  VOID MyUnload( IN PDRIVER_OBJECT DriverObject )

  {

  DbgPrint("MyUnload called\n");

  }

  NTSTATUS DriverEntry(IN PDRIVER_OBJECT theDriverObject,

  IN PUNICODE_STRING theRegistryPath)

  {

  DbgPrint("I am a driver and I loaded!");

  // 初始化DriverObject对象中指向卸载函数的指针

  theDriverObject->DriverUnload = MyUnload;

  return STATUS_SUCCESS;

  }

  这样一来,我们用重启系统就能方便地装载和卸载驱动程序了。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章