1.基础的C语言2.保护模式下的汇编语言3.基础的NT式驱动开发知识4.对NT内核的掌握和了解5.对文件系统和网络方面的了解(ROOTKIT需要利用文件系统实现隐藏,如果要实现隐藏的网络连接也需要相关知识)6.X86体系结构的知识7.WIN32的编程知识下面解释一下为什么需要以上知识,首先ROOTKIT主要以驱动形式存在,驱动基本都是用C和汇编完成,所以最基本的汇编和C语言是要掌握的。其次是关于NT内核的知识,举例:什么叫SSDT?系统服务是怎么通过SSDT分发的?IRQL是什么?Windows是如何通过IRQL实现中断处理的?什么叫内核对象?内核对象在内存中如何表示?windows的启动流程是什么?当然你还需要了解体系结构方面的知识,比如:什么叫保护模式?保护模式下是如何通过GDT、页表、页目录实现分段和分页机制的?什么叫Ring3?什么叫Ring0?当然也需要win32的开发能力,如果连win32 api都不会用,那么更别提内核了。参考书籍《ROOTKIT系统灰色地带的潜伏者》个人认为是世面上关于ROOTKIT最好的一本书,这本书的翻译没有网上说的那么糟糕。《黑客大曝光:恶意软件和ROOTKIT安全》这本书很薄,但涵盖的很多。更像是一个全面的简介。《ROOTKIS》很老的一本书,内容非常不错《WINDOWS内核安全与驱动开发》驱动入门书,很大篇幅都是各种过滤驱动《WINDOWS核心编程》了解应用层层面下的系统原理《WINDOWS内核情景分析》有源代码可以结合下面一本书一起看《深入解析WINDOWS操作系统》大名鼎鼎的windows internal,都是概念性的知识,有时候看的云里雾里。结合上面的内核情景分析,有WRK或是reactos的代码看起来会有帮助PS:个人认为基于内核的rootkit现在已经是"穷途末路"了,未来的rootkit可能不再依托于系统内核来实现功能。