1.基础c语言2。保护模式3下的汇编语言。NT驱动开发基础知识4。nt内核5的掌握和理解。文件系统和网络知识(rootkits需要被文件系统隐藏,要实现隐藏网络连接需要相关知识)6。6的知识。X86架构7。7.WIN32的编程知识,下面是为什么需要以上知识。一是rootkits主要以驱动的形式存在,驱动基本都是c做的,二是关于NT内核的知识,比如:什么是SSDT?这项服务在SSDT是如何分配的?什么是IRQL?Windows如何通过IRQL实现中断处理?什么是内核对象?内核在内存中是如何表示的?windows的启动过程是怎样的?当然,你还需要了解架构,比如:什么是保护模式?如何在保护模式下通过GDT、页表、页目录实现分段分页机制?什么是环3?什么是Ring0?当然,我们还需要win32的开发能力。如果我们连win32 api都不会用,更别说内核了。参考书《ROOTKIT系统灰色地带的渗透者》个人认为是世界上最好的关于ROOTKIT的书,而且这本书的翻译也没有网上说的那么差。黑客曝光:恶意软件和ROOTKIT安全是一本薄薄的书,但它涵盖了很多。更像是全面的介绍。ROOTKIS是一本内容非常好的旧书。《WINDOWS内核安全与驱动开发》的驱动介绍书,里面全是各种过滤驱动。WINDOWS内核编程在应用层理解系统原理。WINDOWS内核场景分析有源代码。可以和下面这本书一起看《WINDOWS操作系统深度分析》。著名的windows internal就是概念性的知识,有时候能看的云里雾里。结合上面的内核场景分析,似乎带有WRK或reactos的代码会有所帮助。PS:个人认为基于内核的rootkit现在已经穷途末路,未来的rootkit可能不再依靠系统内核来实现功能。