在内核中引入代码

  将代码植入内核中的直接方式是使用可加载模块(或设备驱动程序或内核驱动程序).大多数现代操作系统都允许加载内核扩展模块,以便第三方硬件如存储系统/显卡/主板和网络硬件的制造商能够添加对自己产品的支持.操作系统通常都提供了关于将驱动程序引入内核中的文档和支持.这种简单方法也是我们将要将代码植入内核所采用的途径.

  正如其名称所示,设备驱动程序通常是用于设备的.然而,通过驱动程序可以引入任何代码.一旦拥有了在内核中运行的代码,就能够完全访问内核和系统进程的全部特权内存空间.通过内核级的访问,可以修改计算机上所有软件代码和数据结构.

  典型的模块结构包含一个入口点,有时还含有清理例程.例如,linux的可加载模块结构类似于以下形式:

int init_module(void)

{

}

void cleanup_module(void)

{

}

  在某些情况下,例如对于windows设备驱动程序,入口点必须注册函数回调.其模块结构类似于以下形式:

NTSTATUS DriverEntry( ... )

{

theDriver->DriverUnload = MyCleanupRoutine;

}

NTSTATUS MyCleanupRoutine()

{

}

  清理例程并非总是必要的,因此windows设备驱动程序将其设置为可选项.在希望卸载驱动程序时才需要清理例程.在许多情况下,rootkit在置入系统之后可以驻留其中,无需卸载.但在开发过程中包含一个卸载例程是有用的,因为在rootkit的改进过程中可能需要加载最新的版本.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值