《Windows Internals》学习心得(1)
以前做开发的时候用VC, MFC, 对于Win32和Driver是一点也不感兴趣。后来乱七八糟混了好几年,IT业大变,自己碰巧就做上了测试。测试又做了快5年了,大部分时间是自我摸索,到了现在这情况变成了一定要学习Windows internals了。这本书从开始看也两年多了,我很难说我看懂了多少,只是最近才开始有点立体的感觉,当然这跟工作上接触到一些相关内容还是有关系的,否则只是硬看应该是看不懂才对。我想目前由于不精通Windows internals对于我的测试工作有以下几个障碍:
跟开发人员的沟通存在Gap。
不能更好地去设计测试用例,因此不能抓到更深入,复杂的bug。
对于一些复杂点的问题很难去debug。
对于code review, code coverage, security test等等都受到了很大的限制。
职业发展也有了bottleneck。
因此,我觉得在今后的几年应该在Windows internals上下下功夫,争取能够达到精通。今天我就想谈谈自己以前比较混乱的一些概念,windows internals, windows kernel, SDK, DDK, Win32, driver。
Windows internals应该是讲Windows OS实现的一些细节,它并不局限在kernel mode的模块和知识,还涉及到了user mode的一些系统进程。因此,我说学习windows internals就应该包括了所有Windows OS的知识。
Windows kernel,我主要是按照在kernel mode运行的模块来理解的,因为Kernel mode里还有个kernel,容易造成概念的混淆。
Win32 API就是windows提供的在user mode的应用程序编程接口,它的工具包叫做SDK。但是涉及到系统服务,也就是内核上的服务的时候,他们是通过ntdll.dll转到kernel mode去实现的。也就是说,实现的细节还是在kernel mode。
Kernel里提供了一套接口叫DDK,是给driver的开发人员使用的。如果你想在Kernel mode运行你的程序,你应该只能通过编写driver来实现,正常来说。
由于windows internals的大部分知识都是在kernel里,因此我也想主要集中在kernel mode里的模块和知识。
对user mode开放的服务都有哪些,实现细节如何?
DDK里的函数都有哪些,实现细节如何?
Executive层的模块都有哪些,实现细节如何?比如,memory manager, IO manager, cache manager等等。
Windows里的driver都有哪些,实现细节如何?比如我认为最重要核心的ntfs。
学习资料:
《Windows Internals》
《Programming the Microsoft Windows driver model》
最后,HAL不想学,也不知道有没有用,Hardware不想学,WDF暂时不想学。现在是新手,能想到的也就这么多了。
http://peking2toronto.blogspot.com/2009/05/windows-internals1.html
回复 1# 的帖子
感觉你比前些时候 沉稳了好多以前你说的时候似乎没这么沉下来,底层的东西变化的还是非常慢的。
回复 2# 的帖子
以前这方面懂的太少,最近才有点感觉。最近一个多星期在debug一个问题,感觉增长很快。还是得多debug呀。现在可以通过自己debug去push那些principle, senior dev lead了。你知道大公司,大家总是想把责任推卸干净,测试人员抓不住他们小辫子,他们不会松口说是他们的错的。 这个可以顶 我比较喜欢通过Linux学习OS的内核,感觉MS很多东西都是无法对外开放的。Linux很多内核的东西都可以自己更改。 原帖由 heqingbluesky 于 2009-5-25 13:24 发表 http://bbs.51testing.com/images/common/back.gif
我比较喜欢通过Linux学习OS的内核,感觉MS很多东西都是无法对外开放的。
Linux很多内核的东西都可以自己更改。
我不是很同意你的观点,微软的windows的binary并未采用禁止逆向工程的技术,所以对许多有经验的工程师来说仍然是透明的,虽然总的来讲比Linux开放源码仍然复杂了不少,但其中的乐趣并未减少。 原帖由 shanxi 于 2009-5-25 13:28 发表 http://bbs.51testing.com/images/common/back.gif
我不是很同意你的观点,微软的windows的binary并未采用禁止逆向工程的技术,所以对许多有经验的工程师来说仍然是透明的,虽然总的来讲比Linux开放源码仍然复杂了不少,但其中的乐趣并未减少。
哦,这个我接触很少,所以没有这方面的知识,改天学习一下。 国内搞逆向的有那么一群人。 请问高手,是做哪一方面测试的? 原帖由 gl1987807 于 2009-8-15 19:49 发表 http://bbs.51testing.com/images/common/back.gif
请问高手,是做哪一方面测试的?
OS, Security等等。 这本书在看。 {:4_83:}
页:
[1]