51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4787|回复: 11
打印 上一主题 下一主题

[原创] 《Windows Internals》学习心得(1)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-5-23 02:04:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以前做开发的时候用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.c ... ows-internals1.html
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-5-23 14:36:28 | 只看该作者

回复 1# 的帖子

感觉你比前些时候 沉稳了好多

以前你说的时候似乎没这么沉下来,底层的东西变化的还是非常慢的。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2009-5-23 20:56:43 | 只看该作者

回复 2# 的帖子

以前这方面懂的太少,最近才有点感觉。最近一个多星期在debug一个问题,感觉增长很快。还是得多debug呀。现在可以通过自己debug去push那些principle, senior dev lead了。你知道大公司,大家总是想把责任推卸干净,测试人员抓不住他们小辫子,他们不会松口说是他们的错的。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-5-24 20:50:09 | 只看该作者
这个可以顶
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2009-5-25 13:24:55 | 只看该作者
我比较喜欢通过Linux学习OS的内核,感觉MS很多东西都是无法对外开放的。

Linux很多内核的东西都可以自己更改。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-5-25 13:28:29 | 只看该作者
原帖由 heqingbluesky 于 2009-5-25 13:24 发表
我比较喜欢通过Linux学习OS的内核,感觉MS很多东西都是无法对外开放的。

Linux很多内核的东西都可以自己更改。


我不是很同意你的观点,微软的windows的binary并未采用禁止逆向工程的技术,所以对许多有经验的工程师来说仍然是透明的,虽然总的来讲比Linux开放源码仍然复杂了不少,但其中的乐趣并未减少。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2009-5-26 13:06:42 | 只看该作者
原帖由 shanxi 于 2009-5-25 13:28 发表


我不是很同意你的观点,微软的windows的binary并未采用禁止逆向工程的技术,所以对许多有经验的工程师来说仍然是透明的,虽然总的来讲比Linux开放源码仍然复杂了不少,但其中的乐趣并未减少。


哦,这个我接触很少,所以没有这方面的知识,改天学习一下。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2009-5-27 08:41:37 | 只看该作者
国内搞逆向的有那么一群人。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2009-8-15 19:49:40 | 只看该作者
请问高手,是做哪一方面测试的?
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2009-8-16 00:49:39 | 只看该作者
原帖由 gl1987807 于 2009-8-15 19:49 发表
请问高手,是做哪一方面测试的?


OS, Security等等。
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2009-8-20 15:37:06 | 只看该作者
这本书在看。
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2012-12-4 19:40:48 | 只看该作者
{:4_83:}
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-15 17:04 , Processed in 0.069972 second(s), 31 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表