rootkit开发

1. 首先,你得学习一种语言。C / C++最好的选择。不像其他语言,C具有内嵌汇编语言的能力。虽然大多数程序员极少使用到汇编语言,但是rootkit的开发有时需要汇编语言的灵活性,所以x86汇编应当成为你的辅助编程语言。Randall Hyde的《Art Of Assembly》是汇编编程最好的参考资料之一。该书有印刷和电子书两种可获取的版本。《Art of Assembly》的下载网址是 http://webster.cs.ucr.edu/AoA/DOS/
2. 你需要学习一些操作系统的理论。虽然大学的设计操作系统理论课程不是必需的,但阅读大学计算机学科教材的若干章节是有益的。特别是进程﹑线程﹑内存管理等知识,你得了解。这方面很好的书籍有两本:《Operating System Concepts》Silberschatz, Galvin, 和 Gagne著《Operating Systems》Deitel & Deitel著
3. 你得应用理论知识,理解真实世界中的操作系统比如windows实际上是如何工作的。虽然Windows不公开源代码,但是有很多牛人热衷于对系统内核工作原理进行逆向分析,并公开了他们的发现。弄一本此类的书吧,比如Sven Schreiber写的《Undocumented Windows 2000 Secrets》 或者Prasad Dabak, Milind Borate,和 Sandeep Phadke写《Undocumented Windows NT》。
4. 如果你想着手开发内核rootkit,你还得学习如何编写内核模式驱动程序(KMD)。很不幸,互联网上关于内核编程的教程,适合初学者的很少。不过,Four-4写出了几篇很好的win32汇编版的教程,它们可在 http://www.assembly-journal.com/sitemap.php 获取。除此之外,这方面的书籍还有一些:包括Art Baker 和Jerry Lozano蓍的《The Windows 2000 Device Driver Book》以及Walter Oney蓍的《Programming The Microsoft Windows Driver Model》。
5. 学习逆向代码分析的基础知识,也就是说对于没有源代码的二进制文件也能(通过逆向分析)了解到(代码功能等)有关信息。练习逆向分析软件的保护机制(序列号,时间检验,脱壳,演示软件的功能限制等等)是发展这个技能的有趣方式。有很多程序员编写了训练用的小型程序。这些程序称之“crackmes”和” “reversemes”,我们可用它们来进行练习。在 http://www.crackmes.de 和 http://www.reversemes.de 上收集了大量这样的小程序。 http://www.woodmann.com 上有大量高手写的关于逆向工程的资源。 http://bib.universitas-virtualis.org/ 上也有若干优秀教程和文章。逆向分析同样需要一些特别的工具,包括反汇编器和调试器。IDA Pro是首选的反汇编器,SoftICE (内核调试器)和OllyDebug是可供使用的调试器。其他各式各样的此类工具可从 http://protools.cjb.net获取
6. 最后,本站讨论了一些入侵工具和rootkit,如果你需要理解它们的资料,我推荐Greg Hoglund的《Exploiting Software》(本站就有)和《Shell Coder's Handbook》。两者都会提供给你很好的入门知识。《Exploiting Software》有一章节介绍了基本的rootkit技术。一般,基于它们的数据拦截方法,Rootkit可以分为两种:要么是挂勾,要么是直接内核对象操作(DKOM)。
      为了理解挂勾技术,以下链接可能对你有帮助。API 检测技术(API Spying Techniques) http://www.internals.com/articles/apispy/apispy.htm 挂勾高级函数(Advanced Function Hooking) http://www.phrack.org/show.php?p=58&a=8 挂勾Windows NT服务表(Windows NT Service Table Hooking) http://www.wiretapped.net/~fyre/sst.html 挂勾Windows NT系统服务(Hooking Windows NT System Services) http://www.windowsitlibrary.com/Content/356/06/2.html 挂勾Windows NT系统调用(Windows NT System-Call Hooking) http://www.ddj.com/articles/1997/9701/ 为了理解DKOM,你可以阅读fuzen_op 写的FU rookit的源代码。

你可能感兴趣的:(rootkit开发)