windows内核怎么入门?这几个方法让你少走弯路!

吉云

哥几个,今天来聊聊我最近折腾 Windows 内核的事儿。这玩意儿真够深奥的,我搞好一阵子才摸到点门道。不过过程还是挺有意思的,跟大家分享一下我的血泪史。

我连驱动是个啥都不太清楚。然后我就去网上找资料,发现一个叫 Driver Development Part 的系列教程,是 code project 上的,一共 7 章,内容那是相当的精简,我感觉比很多国内的教程都里面把驱动开发最难的那部分讲得挺透彻的,我这脑子都能看懂,挺神奇的。有兴趣的可以去看看!

然后我就觉得,学这玩意儿就得从写 rootkit 开始,毕竟这东西听起来就很酷炫对?我就找《Professional Rootkits》和《subvert the windows kernel》这两本电子书来看,书里的代码例子我都跑一遍,还琢磨着怎么改进一下,把那些 rootkit 的功能各种排列组合,看看能不能搞出个更厉害的。我还去 * 这个网站,上面有很多开源的 rootkit 和键盘记录器的代码,真是大开眼界!

windows内核怎么入门?这几个方法让你少走弯路!

我还挺懵的,不知道从哪下手。后来我就想,干脆直接动手写个小程序试试。我打开 VS2019,选 Empty WDM Driver 模块,新建一个项目。它初始的项目文件夹里有一个 Driver Files,里面有一个 .inf 的文件,我看这玩意儿没啥用,直接删,然后就开始写我的代码。

我还发现,X86 系统支持 32 位寻址,支持 4GB 的虚拟内存空间,内核空间和应用层空间各占一半,各占 2GB。Windows 的 CPU 权限还分好几个级别,最核心的就是零环(Ring0),也就是内核层,跟它对应的是三环(Ring3),是应用层。

然后我就琢磨,这些漏洞是怎么利用的?我发现,不同的漏洞,利用方法也不同。有些漏洞可以直接让你读写任意地址,那就可以通过修改 Token 来提权。这部分内容真的挺烧脑的,我研究好久才搞明白。

对,我还翻翻《Windows NT(2000) Native API Reference》这本大部头,虽然很厚重,但真的很有用,没事翻一翻都能有新发现。看到感兴趣的函数,我就去 Google 上搜一下用法,有时候搜不到或者搜到的不满意,我就把函数放到 reactos 里去查,这也是个学习的好办法,毕竟 reactos 是一个开源的 XP 内核源码嘛

我还看《windows internal》这本大块头书,现在都出到第五版。不得不说,这本书真的非常详细,里面讲很多关于进程管理、内存管理、文件系统之类的知识,非常深入。想深入解操作系统内核的设计和实现方式,看这本书就对。前提是你得熟练掌握 C/C++ 编程语言,不然看起来会很吃力。

还有在 code project 上面有很多关于 Windows 驱动编程的文章,没事也可以搜一搜,比如用“hook”或者“rootkit”这几个关键词。发现外国人还挺大方的,经常分享他们的创新想法和程序代码,供大家学习参考。这倒是挺不错的。

windows内核怎么入门?这几个方法让你少走弯路!

这段时间我算是入 Windows 内核的门,虽然过程很艰辛,但收获也很大。以后有啥新的发现,我再来跟大家分享!

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]