Rootkits读书笔记1

本文介绍了如何使用DDK编译Windows驱动程序。作者通过实践记录了从安装开发环境到编译简单驱动的过程,并分享了所需的配置文件内容。

 最近在看Rootkits.Subverting.the.Windows.Kernel,一是太无聊了,二是长期以来对ring0编程处于白痴状态。
写读书笔记,可以督促自已用功,也可以向高手们学习,因此写了这第一篇,主要内容就是怎么编译第一个驱动程序。呵呵,网上已经有N多这种文章了,我再炒一遍冷饭,顺便给论坛灌点儿水。

首先要下载DDK。驱动开发网上有,不过我没有权限,而是在emule上下的。2003的DDK,安装以后显示为WINDOWS DDK 3790,安装2003的DDK可以编译2003、XP和2000及以下的驱动。

DDK安装完毕,就可以开始写程序了。最简单的例子(取自书中)
#include "ntddk.h"

NTSTATUS DriverEntry( IN PDRIVER_OBJECT theDriverObject,

IN PUNICODE_STRING theRegistryPath )'

{

  DbgPrint("Hello World!");

  return STATUS_SUCCESS;

}

保存成mydriver.c。为了方便,我在E盘建了一个myrootkit的文件夹,将mydriver.c保存在文件夹中,同时建立如下两个文件
一是SOURCES
内容是:
TARGETNAME=MYDRIVER

TARGETPATH=OBJ

TARGETTYPE=DRIVER

SOURCES=mydriver.c

这里只用了最简单的几个关键词,常用的还有INCLUDES,TARGETLIBS,其中后者有两种格式:
TARGETLIBS=$(BASEDIR)/lib/w2k/i386/ndis.lib

或者是:

TARGETLIBS=$(DDK_LIB_PATH)/ndis.lib

好,保存SOURCES文件,再建立MAKEFILE文件,就一行内容:
!INCLUDE $(NTMAKEENV)/makefile.def

文件全部创建完毕,下面开始编译。开始-->Windows DDK 3790-->Build Environments-->Windows XP-->Windows XP Checked Build Environment,进入DOS命令行。进入后,系统已经自动将环境变量设置好了,当然,你也可以选择其它的命令行。

在命令行中进入源程序所在的文件夹:
cd/
e:
cd myrootkit
build
一会儿就提示编译完成了。找到那个mydriver.sys文件,用www.rootkit.com/vault/hoglund/InstDvr.zip提供的程序加载和卸载,加载前打开DbgPrint,就可以看到程序运行结果了。


写完收功,纯属垃圾,自已看着都觉得恶心,就当灌水。

【源码免费下载链接】:https://renmaiwang.cn/s/8okgv 软件开发项目"驱动加载工具(附源码)"旨在模仿知名驱动加载工具InstDvr的架构进行优化设计。该功能模块的主要作用是辅助开发者在编写驱动程序时更加便捷地完成程序加载与调试任务。基于Win API SDK(Windows应用程序接口软件开发工具包)和C语言实现,该工具通过编译好的可执行文件直接插入系统内存空间来达到驱动加载的目的。 采用C语言进行编程的原因在于其对底层系统的强大交互能力,特别适合编写驱动程序。开发环境选用Visual C++ 6.0这一经典的微软IDE,虽然已逐渐被淘汰,但因其在相关教程和学习资源中仍被广泛使用,因此适合作为初学者实践开发的平台。 本压缩包中的源代码包含完整的项目文件结构,涵盖头文件、源码文件等。具体包括: 1. LoadSys.aps:Visual C++ 6.0工程预编译头文件。 2. LoadSys.c:C语言实现驱动加载逻辑的核心代码文件。 3. LoadSys.dsp和LoadSys.dsw:相关项目配置信息的IDE工作区文件。 4. resource.h:定义系统资源标识符的头文件,包含菜单、对话框等对象描述。 5. LoadSys.ico:程序图标文件。 6. LoadSys.opt:项目编译选项设置文件。 7. LoadSys.rc:非代码资源脚本文件,定义字符串、菜单等内容。 8. 说明.txt:工具使用说明文档。 9. Release:编译完成后生成的可执行文件目录。 通过解析这些相关组件,开发者可以深入了解驱动加载工具的构建与运行流程。源码的开放性特征使其具备高度灵活性,用户可根据实际需求对功能进行调整和扩展,从而获得更加贴合自身开发需求的应用工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值