《天书夜读-从汇编语言到windows内核编程》从开读到弃坑
0x00 基础知识
以下都来自于谭文的《天书夜读-从汇编语言到windows内核编程》的读书笔记。
驱动的本质:上一篇blog中,我们已经知道,内核并非一个进程,想法,他在所有进程的虚拟地址空间的高位。而驱动程序作为内核的一部分,同样也非单独的一个进程,也在所有进程的内存高位,类似于共享的dll。
驱动的安装方式(截止到xp):①用inf脚本安装,②作为一个服务安装
调试windows xp,在c盘下有个boot.ini可以更改它进入调试模式,然后虚拟机配置对应的串口,用主机上的windbg调试虚拟机里的xp系统。调试需要用到两种辅助文件:①源代码,自己写的驱动是有的,②符号表,自己写的驱动,和对应的windows都是有的(windows的由微软提供,详见,提醒下,windows内核的符号表要下很多东西,很慢很卡)。这两个都需要在windbg里设置。
0x01该书已弃坑(两天后)
这本书的结构是,先介绍一点点汇编,再介绍一下windows内核里面的编程基础,然后直接开始驱动编程。看起来是没什么问题的,但是后面两个部分之间只能说是毫无联系。介绍内核编程基础的时候,泛泛地谈一下,没有实践佐证,而开始编写驱动的时候,又不能结合之前的内容。导致这本书结构松散,给人一种知识没法融汇贯通的感觉,每一章都收获不大,但是每一章又都是新的,食之无味,总体来说,这本书读完既没有理论上的增长,实践经验也没有提升。(很多实验都省略了很多,对于一本入门向的书来说,给新人带来很大困扰,无法复现)。下一本书是国外的《Programming the Microsoft Windows Driver Model》,更古老但是理论性更强,看起来能够将windows驱动编程的来龙去脉讲清楚。技术和工具会过时,但是思想和脉络会延申,开卷有益!