我的Windows内核编程学习之旅(1-1)

有志于成为安全工程师的我开始学习一本名为《Windows内核安全与驱动开发》的优秀书籍。随书资源我以上传。接下来我将记录我的部分历程,为同在学习此书的人们提供小小的帮助。因为软件的时效性,所以多少会有一点事情不能按书里的来。

我也不知道为什么在win10已出的时候,这本书的内容是从XP的驱动开发教起,也许,越是古老简单的系统,越容易让人理解其构造吧,而越新越复杂的系统反而难以学习,尤其是对windows这样的闭源系统来说.

内核编程使用的开发包为Windows Driver Kit,适用于本书的开发包我已经上传到我的百度云中: https://pan.baidu.com/s/1qYRrsTI ,这个是WDK7.xxxx,里面的东西包适用于从XP到vista到win 7的驱动开发。详情自己安装了就知道,win10上安装时请不要选择完全安装,不要安装debug frame和help document相关的东西,否则很可能安装失败,至少我就是失败了。

学习本书时,我使用的代码编辑器是VS2015,我不知道为什么我的VS2015没有内置的驱动开发模板。。。所以我自己建了个简陋的仅用于编辑代码,为了能有代码提示,没有编译调试能力的模板,建立方式是选择新建一个MAKEFILE项目,然后,不用配置,直接点击 完成/finish 



然后嘛,在右侧的解决方案视图,右击项目名称,选择菜单里的项目属性单击,弹出来的面板里找到VC++ Directories单击,去右侧找到include Directories,并编辑这个栏目,把你安装的WDK7里的inc文件夹里的东西通通加进去,详情见下图



最后就是按OK,按确定就可以了,此后,你在这个项目里写代码就有相关的代码提示了。

然后,往项目里添加文件MAKEFILE和SOURCES,由于直接添加是没有这种文件的,所以我是添加了txt文件后修改名称。

扫描二维码关注公众号,回复: 2631028 查看本文章

SOURCES的内容视你的代码文件而定,举个具体的SOURCES文件内容作为例子:

文件里就下面三行

TARGETNAME=first //此处表明编译完成后模块的名称为first.sys
TARGETTYPE=DRIVER //表明你要编译出一个驱动。。。
SOURCES=first.c //表明你要编译的源文件是first.c

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

MAKEFILE内容统一如下:

!IF 0


Copyright (C) Microsoft Corporation, 1999 - 2002


Module Name:


    makefile.


Notes:


    DO NOT EDIT THIS FILE!!!  Edit .\sources. if you want to add a new source
    file to this component.  This file merely indirects to the real make file
    that is shared by all the components of Windows NT (DDK)


!ENDIF


!INCLUDE $(NTMAKEENV)\makefile.def


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

最后,保存整个项目,并选择VS2015 左上角的File->Export Template..,然后一路默认你就成功做出了一个模板还导入了VS里面,以后你创建项目时就会发现多了一个你建立的模板。


好了,接下来说说编译。。

在安装了WDK7以后,去win10的菜单找到windows driver kit,在里面自己翻几下。。总之你会找到 x86 Checked Build Environment,也许不止一个,但随便选一个都能用,点击,会进命令行界面,然后嘛,在命令行里用cd切换目录,去到你写好的代码和MAKEFILE,SOURCES所在的位置,接着输入build按回车,代码没问题就肯定能编译成功。你会发现多出来一堆诡异的东西,其中有个名字超长的文件夹,进去,再继续深入你会找到一个后缀为sys的文件,那就是你编译好的系统模块文件了。。。


未完待续,下一篇文章的标题可能是1-2,除非我打算继续写WinDBG相关的玩意儿....

总之我使用WinDBG调试虚拟机时参考的是 http://blog.csdn.net/ayang1986/article/details/38285343,我觉得非常有用



猜你喜欢

转载自blog.csdn.net/CreatorGG/article/details/76183948
1-1