<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

文章分类

导航

订阅

Windows Kernel Debug

Windows Kernel Mode Debugging
调试笔记:系统挂在DPC(上)
这是发生在我的笔记本电脑上的一次系统挂死,发生在唤醒过程中,屏幕没有任何显示,因为我的电脑始终是启用通过热键(Ctrl+ScrollLock)来触发蓝屏的,所以可以通过热键触发蓝屏和产生转储。 以下是分析转储文件的简要过程,转储的类型是内核转储。系统中只有一个CPU。 kd> !cpuinfoCP  F/M/S Manufacturer  MHz PRCB Signature    MSR 8B Signature Features 0  更多...

发布于 2009年8月10日 22:47Raymond4 篇评论

润物细无声——Windows Intermals第5版印象
前两天拿到了Windows Internals的第5版,把玩了一番后,这两天仔细读了部分章节,与大家分享如下。 以作者在鸣谢一节的落款中的时间来看,上一节的时间是2004年9月,这一版的时间是2009年5月。二者相差不四年半有余。与很多写书计划和软件项目类似,这一版也是延迟了多次。但是好饭不怕晚,看了书之后,的确觉得改动和新增的内容不少。 单单从页数来看,第4版是935页,包括书后的索引,而第5版是1232页,多了297,差不多是一本普通技术书的长度。 从副标题来看,上一版的副标题叫Micorosoft 更多...

发布于 2009年7月19日 15:29Raymond10 篇评论

调试笔记:LPC循环等待挂死
在XP SP2系统中,打开一个WORD文件时,WORD启动后便失去响应,而且无法杀掉这个进程。这种情况通常是挂在内核态了。 以下是使用Ctrl+ScrollLock触发蓝屏后,分析转储文件的概要信息。 观察WinWord进程的唯一线程,其情况如下: kd> !THREAD 885eb468THREAD 885eb468  Cid 11ac.106c  Teb: 7ffde000 Win32Thread: e248a770 WAIT: (Executive) KernelMode 更多...

发布于 2009年2月8日 18:08Raymond1 篇评论

《软件调试》导读之操作系统篇
在今天的计算机架构中,操作系统是整个系统的统治者,它指挥着系统中的软硬件。如果拿人类社会来类比,那么操作系统好比是国家机器,应用软件是公民,操作系统的各个执行体是国家机构。从这个角度来看,操作系统与应用软件之间是统治与被统治的关系。 对于最终用户来说,他们需要的是应用软件,大多用户说不清什么是操作系统,只知道没有它不行。用户之所以肯掏出钱买操作系统是因为有了它才能跑自己需要的应用软件。从这个角度来说,应用软件是操作系统从用户那里拿到钱的资本,应用软件是前台唱戏的主角,操作系统是藏在后面的支持者。 更多...

发布于 2008年12月30日 14:05Raymond3 篇评论

老雷看Win7(1)——序
Windows 7(Win7)是Windows操作系统的下一个客户端版本,计划在明年中正式发布。在前不久的WinHec上,每个参会者都得到了一份Win7的预览版本,是比Beta版本还早的所谓Milestone 3(M3)版本。 老雷曾经说过他是使用调试器来了解和学习操作系统的。但到底可以怎么用调试器来帮我们了解新的操作系统或者它的新版本呢?这个系列文章就想以这种方法来学习一下Win7。今天是第一个部分,到底写多少次还没有计划,如果大家喜欢,老雷写的高兴,那么就一直写下去,不然可能就这一篇。 首先该介绍一下道具(工具),第一,当然少不了WinDBG,老雷机器上有从WinDBG2.x开始的n个版本,但大多数时候用的还是6.X。第二,要有目标机来运行Win7,为了可以随时唤出来把玩,我还是把它运行在虚拟机里,用的是VPC2007。第三,要有一些附属的小工具,比如观察符号的SymView小工具,触发异常的I'm 更多...

发布于 2008年12月22日 21:48Raymond9 篇评论

正心诚意,格物致知
今天想和高端调试的朋友们做一个深层次的分享。如何在坚持技术方向的前提下做的很成功。 第一、要倡导技术氛围。这个道理很简单,因为你是做技术的,只有提高技术方面的话语权和影响力,你才有话语权。这个社会中,有些人贡献了80%,但只得到了20%,有些人贡献了20%,但是得到了80%。大多数做技术的,都是属于贡献80%的这一类。如何让做技术的得到的更多,需要所有做技术的人来努力,为自己,为同行争取更多的权利。 第二、不要做印度青蛙,要推动你的朋友,而不是看到他即将成功的时候把他拉下来。现实生活中,真的看到很多印度青蛙。他们自我膨胀,容不得身边的人比自己强,想方设法打击自己的战友。 更多...

发布于 2008年11月20日 22:44Raymond7 篇评论

在内核调试会话中设置用户态断点
使用内核调试会话也可以执行一些用户态调试任务,比如向位于用户态的模块设置断点。但这样做与使用用户态调试器有什么不同呢?我们就以向NTDLL.dll模块的ZwTerminateProcess函数(Stub)为例谈谈二者的区别。 区别一、在内核调试会话中设置这个断点的“难度”略大些。这是因为NTDLL不属于内核态的模块,所以内核会话通常不会加载这个模块(的符号),因此当执行bp命令时很可能被自动蜕化为bu命令。 0: kd> bp ntdll!ZwTerminateProcessBp expression 更多...

发布于 2008年11月18日 22:19Raymond7 篇评论

感受伟大
他1979年加入英特尔,是286和386设计团队的关键成员,80486的最初架构师。 1986-1989年他担任80486团队的设计经理。1989-1992年,担任负责设计Pentium Pro的部门(division)的总经理。 目前他是英特尔公司的高级副总裁(VP),DEG(Digital Enterprise Group)Group的总经理。 他便是帕特·基辛格(Pat Gelsinger)。很多人可能听说过Programming the 80386这本书。他的两位作者之一便是帕特。 更多...

发布于 2008年11月14日 21:37Raymond4 篇评论

海森伯效应一例
我们把调试过程对被调试程序所产生的影响称为海森伯效应(详见《软件调试》28.6.1)。设计调试工具时,当然应该努力降低可能的海森伯效应,以便可以在调试器中调试时看到的症状与没有被调试时是一样的。 但正像这个名字的由来(海森伯的测不准原理)那样,海森伯效应一定是存在的。只不过是很小,大多数时候都不会对我们的调试造成明显的影响。 前两天,jlflyfox提出了一个问题,这个问题其实是一种非常典型的海森伯效应。 为了讨论简单,可以使用下面的代码来重现jlflyfox所提出的问题。 /*-------------------------------------------------------------- 更多...

发布于 2008年10月31日 22:13Raymond5 篇评论

调试笔记之GMail挂死
在GMail进入Inbox前,挂死在Loading页面,数分钟后仍纹丝不动。唤WinDBG附身,远程中断方法不能工作: Break-in sent, waiting 30 seconds...WARNING: Break-in timed out, suspending. 挂起方法可以开始非入侵式调试会话:(1374.1134): Wake debugger - code 80000007 (first chance)eax=00a22d68 ebx=00000000 ecx=0000002a 更多...

发布于 2008年10月19日 9:57Raymond1 篇评论

WinDBG扩展命令的工作原理
要理解WinDBG扩展命令的原理应该先理解WinDBG软件的架构,下图是以模块为单位所画出的架构示意图。最上层是四个EXE模块,它们提供了不同形式的用户接口,简称UI层。中间是调试引擎模块,它是WinDBG调试器的核心模块,大多数调试器的工作逻辑都包含在这个模块中。调试引擎下面是几个支撑模块。内核态的部分是操作系统提供的调试支持。 因此以调试引擎为中心,向上看是调试器与用户的接口,向下看便是与系统的接口。调试器作为一种相对独立的软件产品,保持其核心代码的稳定性和广泛的适用性是很重要的。像WinDBG这样的调试器,它要支持很多种版本的内核和应用程序,因此,保持这两个接口的稳定性是很重要的。向下的接口基本上是靠API的稳定性来保证的。 更多...

发布于 2008年10月13日 20:41Raymond7 篇评论

亲历误删......
昨天中午,一个朋友打电话给我说他的XP系统“开始”菜单不见了。询问了他一番后,感觉确实出了什么问题,可能是explorer程序(explorer.exe)被插件搞乱了,或者中其它招了。 晚上又收到他的电话,显然比中午更加焦急,说系统进不去了。完整的故事是,他使用了某种【隐去真名,不想引来不必要的争议】杀毒软件,杀毒软件“确实”发现了问题,并提示要执行删除动作,他发出确认命令同意这么做了,而后重启,但是再也起不来了,XP的启动进度条滚了一阵后,是杀毒软件的Splash,而后便是黑屏,黑屏持续几秒后,自动重新启动,如此往复不已。 更多...

发布于 2008年9月25日 22:22tudouni3 篇评论

[WinDBG]新闻组拮趣之私有符号
在Windows底层开发圈里,OSR的几个邮件新闻组很是有名。具体来说就是讨论调试的windbg,讨论一般驱动开发问题的ntdev和讨论文件系统有关问题的ntfsd。 浏览这些新闻组的邮件是我闲暇时的一件乐事。除了可以了解信息、学到一些知识和技巧外,还可以提高英文,领略地道的美式幽默,或者看如何用英文“发牢骚”和“斗嘴”。 很早就想把阅读这些新闻组的收获写成短文与大家分享,但是都没有真正实施。今天算做这个系列的正式开始吧! 首先,一位名为Joe的先生发出信息求助,遇到的问题是找不到可以用于Server 更多...

发布于 2008年9月24日 22:16Raymond1 篇评论

《软件调试》导读之CPU篇
《软件调试》的第2篇是CPU的调试支持,由第2~7章组成,共有136页,是全书的第一个核心部分。写作和阅读这一篇的主要目标有如下几个: 介绍大多数软件工程师需要补充的CPU基础。 CPU对软件调试核心功能的支持。 CPU对软件调试扩展功能的支持。 CPU中用于调试系统故障和自身问题的设施。 现代CPU和集成芯片所使用的硬件调试方案。 针对以上目标,第2、3章是满足目标1的,4~7章依次是满足另外四个目标的。下面对各部分的重点内容分别略作介绍。 一、介绍一个调试高手应该掌握的CPU层的基础知识。第2章和第3章是专门服务于这一目的的。调试好比行医看病,病人是计算机系统,要能看懂这个系统的毛病然后再对其施以治疗或者手术,那么必须了解其五丈六腑的结构,血脉流通的路线,生息运转的机理。要做到这一点,深刻理解计算机系统中硬件部分的核心——CPU——很重要。有人说,CPU是重要,但有什么必要在一本《软件调试》的书中写这个呢?调试高手还需要数学基础和语文基础呢,怎么不开两章讲讲呢?这一拮问不是没有道理,因此作者考虑到这一点,慎重选择了要讲的内容,并严格控制了篇幅。入选的内容要符合三个条件:一是够重要,二是够常用,三是与调试密切相关。于是,《软件调试》最后选择如下一些内容: 更多...

发布于 2008年9月21日 20:32Raymond1 篇评论

D1蓝屏、指针和安全的代价
在从Hibernate恢复时,发生D1蓝屏,蓝屏的基本信息为: DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1)An attempt was made to access a pageable (or completely invalid) address at aninterrupt request level (IRQL) that is too high.  This is usuallycaused by drivers using improper addresses.If 更多...

发布于 2008年9月14日 17:31Raymond0 篇评论

调试笔记之调试WinPE
WinPE是Windows Preinstallation Environment 的简称,简单理解就是不需安装就可以使用,可以直接在只读介质上启动的Windows。比如,Vista的安装光盘上就包含了一个WinPE,系统修复功能就是工作在WinPE环境中的。 从软件实现的角度来看,WinPE与普通的Windows是共享主要源代码的,但是有些逻辑是专门针对WinPE的,这可以通过编译选项来控制这种差异。 因为内核的主要代码都是相同的,所以WinPE也有内核调试支持。当在BOOTMGR阶段按F8选择Debug 更多...

发布于 2008年9月12日 20:35Raymond0 篇评论

调试笔记之Check Build
这两天使用Virtual PC(2004)安装了Windows XP SP3的Check版本。有些要点值得分享和备忘。 1 安装过程中的蓝屏 在安装程序复制好文件,重新启动时,会出现蓝屏,蓝屏代码是未处理的内核态异常,异常代码是80000003,即断点异常。看到这个蓝屏后,我想到是Check版本中的某些ASSERT所导致的,保留了更多的断言是Check版本的最大特色。对于断言,如果有调试器,那么系统就会中断到调试器,然后继续也可以了。 但是此时还不能进入系统启用调试选项,怎么办呢?于是想到了按F5在高级启动选项中选择调试选项。关于这个默认调试选项采用的连接参数,一种说法是COM1,一种说法是可以枚举到的最大编号COM口。实验下来,是第二种。也就是当调试器中使用COM2时,成功与虚拟机中的KD建立了连接。这验证了《软件调试》所采信的说法(18.3.3,P478)对于XP 更多...

发布于 2008年9月11日 21:18Raymond1 篇评论

Showstopper试译
Showstopper是本好书,几乎每个深刻思考过软件的人都喜欢这本书。这本书的英文版已经卖完,而且目前也还没有重印的计划。作者对出中文版非常高兴和期待。这两天,尝试翻译了该书的第8章。对于这样一本具有报告文学性质的著作,翻译起来真是很难。为了将这本书翻译好,现拿出第一部分的草稿,来征集大家的意见。特别是以下几个问题: 1)人名地名要不要翻译成中文? 2)计算机术语要不翻译成中文? 3)语言风格。   8                           更多...

发布于 2008年8月30日 23:12Raymond6 篇评论

《软件调试》导读之绪论篇
《软件调试》的第1篇名为“绪论”,只包含一章,共26页,是全书最短的一篇。 第一篇要实现的几个目标是: 1)介绍基本概念和术语,为后面各篇打基础和做铺垫。比如,1.1.1节给出了Bug和Debug的定义,1.6节详细的讨论了BUG,1.4节介绍了常见的软件调试型态。 2)浏览本书要介绍的主要调试技术,比如,1.5节分10个专题(三级小节)浏览了本后后面要深入讨论重要调试技术。 3)突显软件调试技术的关键特征和重要性,1.2节(基本特征)和1.7节(与软件工程的关系)都是服务于这个目的的。 更多...

发布于 2008年8月24日 17:12Raymond2 篇评论

深夜杂感
《软件调试》面世后,得到了很多读者的好评,这是我写作这本书得到的最大快乐和收获。但是最近在China-pub网站上,却有人不断的挑剔,首先是批评定价高。我尝试做了几次解释,但是无济于事,于是决定不予理睬,省下时间做些更有意义的事。 但是今晚我意外的看到,有人在批评David所写的序言,指责David“没怎么看的书也作序推荐”,而且对David使用了很粗劣的语言。看了这样的评论后,我真的很气愤。思考良久,做了如下回复: “David是在看了详细的英文目录和简介后写了上面的短评。他写的都是客观的事实(包括覆盖面、篇章结构、深度等在详细的三级目录中都是可以看得出的呀)和他的感受。我和David的交往并不很多,在他看了书的初步框架后,他就对书的内容很感兴趣,乐意为这本书写序,今年4月书即将完成,我又给他写信时,另外意外的是,他竟然说在他的Outlook里已经有了一个reminder。我想他这样的名人能动笔主要是因为这本书的主题吸引了他。凭借他的资历,他早已认识到了调试的重要性。他对自己感兴趣的东西说几句话何过之有?至于这本书到底怎么样,你完全可以自己来判断,可以看样章,也可以参考其他读者的讨论(http://advdbg.org/forums/75/ShowForum.aspx)。David是国际知名的操作系统专家,备受世界各地技术人员的尊重,不知你资历如何,竟对他出言不逊?难道他不懂中文,你就可以轻易使用中文的词汇来骂他么?语种的差异其实很多时候并不是障碍,真诚和至善很容易打破这个障碍,同时这个障碍也遮不住低俗和丑恶。” 更多...

发布于 2008年8月16日 0:50Raymond12 篇评论

《软件调试》导读之提纲挈领
拙作《软件调试》出版两个月了,有热心读者建议我讲些阅读这本书的方法。有读者愿意读自己的书,当然是好事,再说读者是客户,他们的意见就是命令,不能怠慢。粗略思考一番,计划先为《软件调试》的每一篇写一个导读短文。总为开篇,今日先谈谈《软件调试》这本书的篇章结构,用软件的术语就是架构,用写作的术语也就是提纲。 从最初的书名说起 早在2003年,我就萌生了写一本关于软件调试的书的念头。但是软件调试是个大话题,有很多东西可以写,必须选择好一个角度才能写出一本好书来。于是我开始搜索当时已经有的书,无论是美国出的,还是英国出的,一共找到了十来本。而后,逐一了解了已有的这些书,归纳了它们的主要内容和特色。 更多...

发布于 2008年8月2日 10:55Raymond3 篇评论

Vista的启动调试
在Vista之前,NTLDR是Windows操作系统的加载程序,它负责将CPU从实模式切换为保护模式,加载内核文件和启动类型的驱动程序,然后把执行权交给内核文件的入口函数,即KiSystemStartup。 从要完成的任务角度来看,NTLDR内部又分为两个部分,一部分负责接受执行权,做模式切换,硬件检查,即启动的准备工作,这部分通常称为boot;另一部分负责加载内核文件,并为内核的运行做必要的准备,通常称为OsLoader。 Vista将以上两个部分分成两个独立的程序文件,即BootMgr和WinLoad.exe。下图描述了BootMgr和WinLoad的相互关系和它们在启动过程中的作用。 更多...

发布于 2008年7月28日 21:54Raymond4 篇评论

API的威力
有人说,Windows成功的一个关键是Win32 API。这句话可能有所偏颇,但也不无道理。作为一个操作系统,其成功的关键是上面要有丰富的应用软件,因为用户花钱买操作系统的目的绝不是为了整天折腾控制面板或者“观赏”启动过程。要想有丰富的应用软件,那么必须有一大批程序员愿意在上面开发。要有程序员喜欢在上面开发,那么就要有便捷的开发接口,和高效的开发环境。从这角度来看,精湛的Win 32 API确实对Windows的辉煌有着举足轻重的作用。 Win32 API的主要缔造者是Mark Lucovsky,与Windows调试子系统的缔造者相同。 更多...

发布于 2008年6月30日 22:48Raymond3 篇评论

使用WinDBG观察启用PAE后的分页机制
我在《软件调试》一书的2.7节介绍了CPU的分页机制,因为这属于这本书的支持性内容,考虑篇幅限制,没有介绍启用PAE的情况。书出版后,很多读者对这一内容很感兴趣,也有读者遇到了启用PAE的情况。因此决定写这篇短文来介绍一下PAE的概况,以及如何在启用PAE后的系统中做2.7.5节的试验。 PAE是Physical Address Extension的缩写,即物理地址扩展。简单来说,就是把IA-32处理器的寻址能力从原来的4GB扩展到64GB。寻址4GB空间,要求物理地址的宽度为32位。类似的,要寻址64GB空间,那么物理地址的宽度就是36位。因为这个原因,PAE又被称为PAE-36bit。 更多...

发布于 2008年6月26日 18:47Raymond2 篇评论

《软件调试》与《Windows高级调试》比较之我见
   我是在2007年11月听说Advanced Windows Debugging(姑且翻译为《Windows高级调试》,简称AWD)这本书的。一个朋友和我说有一本书和你在写的书很相似,已经要出版了。朋友这样说当然是好意,防止我白费功夫重复劳动。或者用英文说就是不要“Reinvent the wheel(重复发明轮子:-))”,其实中文也有很多类似的冷语,比如“吃人家嚼过的馍”,其讽刺度之深比重新发明轮子还恨。我初听这个消息当然为之一振,可不想自己写了两年多(当时已经两年多)的东西与别人的一样。当晚我便GOOGLE了这(AWD)本书,当时在AMAZON上便有该书的预报,有章节目录。把章节目录看了两三遍后,我的担心慢慢散去了。从目录框架显然可以看出,AWD与我的《软件调试》大不一样。于是这个小“震动”只影响了我几个小时后,我便继续投入到《软件调试》的工作了,当时《软件调试》的第一稿也已经完成,在编辑和审阅第二稿的过程中。 更多...

发布于 2008年6月9日 9:53Raymond3 篇评论

手捧汗水的感觉
今天收到了编辑部快递给我的《软件调试》! 下班一进门,就看到了邮包,迫不及待的打开外面的包装后,里面是印有博文标记的纸袋,包裹的严严实实。因为《软件调试》的体型比较大,所以将其从纸袋中取出来还是费了点劲,也许是因为我有些激动。:-) 小女儿跑过来,要拿过来看一看,抱在怀里没走几步就喊重,显然这本书对她来说是有些重(后来称了下,1800克:-))。我把书接在手中,看着好亲切。仔细看了封面和封底后,大致翻阅了一下序言和正文,字体、行距、代码和插图看着都很舒服。特别是我担心的几幅插图,印刷出来后也很清晰。接下来,我想对它做一个“压力测试”。把书翻到差不多中间一页,向两侧用力掰了掰,然后再合上,看看书脊,没留下任何印记。看来装订的很牢固(不比担心像有些书那样一本被翻成几本)。而且翻开到中间页时,两边两页的文字都清楚可见。这样检查一番后,心中悬了许久的石头落地了。或者说持续了三年多的一次马拉松长跑终于到终点了。 更多...

发布于 2008年6月3日 23:22Raymond2 篇评论

《软件调试》的主页
《软件调试》于上周进入工厂印刷,第一本有望在本周装订完成。第一本审查无误后,那么第一批600册将在下周完成! 同时,《软件调试》的主页也初步建成,网址为http://advdbg.org/books/swdbg/。欢迎大家访问和提宝贵意见!   更多...

发布于 2008年5月27日 23:31Raymond8 篇评论

Showstopper中文版签约
好消息,今天一早看到了Gregg的来信,他兴奋的告诉我机械工业出版社(华章)已经购买了Showstopper中文版的版权,双方正式签约。因此,这本英文名著的中文版本应该在今年年内就能与大家见面了。:-) 接下来应该是比较艰辛的翻译工作。这本书首先是一本好的报告文学,作者笔触灵动,妙语连珠,因此最好有一位文科的人来翻译。但同时,这本书又涉及到较深的技术和对软件工程的深刻思考,所以翻译的人还是要懂计算机。 书名也体现了这一点!不论是主标题和副标题都不那么容易翻译!:-)欢迎大家来试一试呀! 主标题: 更多...

发布于 2008年3月14日 23:12Raymond1 篇评论

迎接2008!
2008年的第一天,阳光灿烂!对于上海这个多阴多雨的城市,这冬日的阳光着实是为新的一年送了一份厚礼! 每个人对新的一年都会有很多期待,北京奥运会无疑是最有共性的一个。于我,《软件调试》的出版是第一号的期待。一些热心的朋友也在期待这本书,他们的期待是我的动力。 以下是《软件调试》一书的主要内容,全书共30章,分为六篇。 第一部分:绪论(第1章)作为全书的开篇,这一部分介绍了软件调试的概念、基本过程、分类、和简要历史,并浏览了本书后面将详细介绍的主要调试技术。 第二部分:CPU的调试支持(2~7章)CPU是计算机系统的硬件核心。这一部分以IA-32 更多...

发布于 2008年1月1日 10:21Raymond5 篇评论

从DUMP文件判断目标系统的CPU个数
OSR新闻组中有人询问如何知道一个DUMP文件对应的目标系统中有几个CPU。其实这有很多方法,聊举数例(:-))。 1)首先如果使用WinDBG打开DUMP文件,那么从WinDBG输出的概要信息中就可以判断出CPU的个数。举例来说,以下是打开一个来自双核CPU系统(Vista)的DUMP文件时WinDBG所显示的信息: Windows Vista Kernel Version 6000 MP (2 procs) Free x86 compatibleProduct: WinNt, suite: 更多...

发布于 2007年12月29日 15:52tudouni4 篇评论

SEH无法捕捉内核代码的除零异常
在下面这小段代码中,存在一个故意的除零操作,并且使用了Windows操作系统的结构化异常处理(SEH)机制对其进行了保护。     59: n=1;     60: m=0;     61: __try     62: {     63:         n=n/m; 更多...

发布于 2007年12月14日 23:11Raymond0 篇评论

NT的设计文档
开发软件应该写文档么?如果是应该写成什么样?是拿个template然后填充些不痛不痒的废话么? 先看一下下面这幅图: 这是NT团队开发NT时使用的文档。仔细看那个标签,NT OS/2 Design Workbook。我首先留下深刻印象的是Workbook这个名字,非常的平实,工作手册——帮助设计的手册,备忘和方便查阅。而后,对于这个厚度,有人可能吃惊有这么厚!对于NT这样复杂的系统,这么厚应该都是非常精练的语言了。如果像今天的很多文档那样,翻了几页还没看到正文,那么不知要有这样的多少册。 更多...

发布于 2007年8月15日 21:52Raymond2 篇评论

让WinDBG显示自己的调试信息
WinDBG是个调试器,但其本身也是个软件,也有BUG,这就好像医生也会生病一样。如何调试WinDBG呢?WinDBG的设计者们早考虑到了。比如.dbgdbg命令就是启动一个调试器来调试当前的调试器。 再如,使用.outmask命令可以让WinDBG输出自己的调试信息。参数可以是下表中的各个标志位的组合。 Value Default setting Description 1 On Normal output 2 On Error output 更多...

发布于 2007年7月30日 12:51Raymond0 篇评论

Showstopper中文版
不论是Windows XP/2000,还是刚兴起的 Windows Vista,它们都是基于经典的Windows NT内核。 NT内核从1988年[此处曾经误写为1998年,感谢chinaclastar留言指出]开始开发,历时将近5 年与1993年7月26 日发布,即NT 3.1。 在开发NT内核的近 5年中,有很多精彩的故事,和发人深省的东西,这些东西既有软件工程方面的、技术方面的,也有团队协作、和最基本的人性方面的。 幸运的是,有一本书很好的记录了开发NT内核的人和事,这本书的名字叫 《Showstopper》。 更多...

发布于 2007年6月29日 12:25Raymond5 篇评论

Alex加盟Windows Internals第五版
Windows Internals第一版的书名叫Inside Windows NT,出版日期是1992年11月,作者是Helen Custer。Helen是NT团队的技术编辑。从出版日期看,这个日期比NT 3.1正式发布的日期还要早8个月。 第二版的书名还叫Inside Windows NT,尽管已经介绍了一些处于开发中的Windows 2000(NT 5.0)的内容。这一版的出版日期是1998年4月27日,作者是David Solomon。以下链接是当年的新闻发布资料。 http://www.microsoft.com/presspass/press/1998/apr98/winntpr.mspx 更多...

发布于 2007年6月27日 12:27Raymond4 篇评论

对ReactOS几个主要设计者的采访
在ReactOS的网站上(http://www.reactos.org/en/interviews.html),有去年年底时对几个主要设计者的采访纪录,值得一看。 Art Yerkes Art, born in Philadelphia, PA, USA in 1974. He's been involved with ReactOS since 2002 ...by frik85 on 2006-12-28 Johannes Anderwald Johannes Anderwald, born 更多...

发布于 2007年1月28日 14:17admin0 篇评论

Alex Ionescu
Alex是ReactOS的设计者之一。以下是ReactOS网站上他的简介(http://www.reactos.org/wiki/index.php/Alex_Ionescu): Early Life Alex Ionescu was born on April 26th, 1986, in the city of Bucharest, RomaniaSon of a doctor and an engineer, he took up a passion with computers at 更多...

发布于 2007年1月28日 14:02admin0 篇评论

关于早期PDC的简单介绍
不知道这是不是第一届PDC大会,但可以看到很多重量级的人物在其中演讲。再也不会有这样的PDC了! Microsoft Win32 Professional Developers Conference VideotapesMicrosoft University is pleased to announce the availability of a set of 22 videotapes of key sessions from the Win32 Professional Developers 更多...

发布于 2006年10月15日 14:34Raymond0 篇评论

Windows系统服务列表
Windows系统服务列表,欢迎大家补充。 Windows service File name Component name Alerter AlrSvc.dll This service runs within the context of SvcHost.exe. Alerter Service Application Layer Gateway Service Alg.exe Windows Firewall/Internet Connection 更多...

发布于 2006年8月27日 13:45tudouni0 篇评论

调试驱动程序安装错误
使用SetupAPI安装驱动程序时,如果出现问题,往往比较难以调试。MSDN介绍了如何让SetupAPI输出更多信息到记录文件,和如何理解记录文件的信息。 Setting SetupAPI Logging Levels [This is preliminary documentation and subject to change.] You can control the amount of information that is written to the SetupAPI log, 更多...

发布于 2006年8月25日 21:55tudouni2 篇评论

驱动编写必读:内核栈
每个线程的内核态栈与用户态栈有着很多不同。内核栈是分配在内核地址空间中的,这注定其大小要受到很多限制。 How do I keep my driver from running out of kernel-mode stack? The kernel-mode stack is a limited storage area that is often used for information that is passed from one function to another as 更多...

发布于 2006年8月25日 21:27tudouni0 篇评论

微软吸纳Winternals/Sysinternals
2006,7月18日,微软宣布吸纳Winternals/Sysinternals。 http://www.microsoft.com/presspass/press/2006/jul06/07-18WinternalsPR.mspx Winternals/Sysinternals的两位创始人Mark Russinovich和Bryce Cogswell也分别到了微软的Platforms and Services Division (PSD)和Core Operating Systems Division部门。 更多...

发布于 2006年7月19日 12:11Raymond0 篇评论

WinFS开发团队的BLOG
想知道关于WinFS开发的一些内幕信息么?想了解WinFS开发的最新情况么?WinFS团队的BLOG是寻找这些问题答案的不二选择。 以下两篇特别值得推荐: Monday, June 26, 2006 8:26 PM Update to the Update Hi. Wow there has been a lot of, let’s say, interest in the posting Friday. I knew there would be interest, and I knew 更多...

发布于 2006年7月2日 22:18Raymond0 篇评论

Vista的新增网络功能(转载)
Windows Server“Longhorn”与 Windows Vista 中的新增网络功能   注意: 本文所述的功能可能随时发生变化。由于市场、技术或其它方面的原因,有些功能可能不会包含在最终的产品中。 本页内容 摘要 简介 协议与核心网络组件 无线和基于 802.1X 的有线连接 网络基础结构 弃用的技术 总结 相关链接 摘要 Microsoft?Windows Server?“Longhorn”(目前处于 更多...

发布于 2006年6月13日 21:40tudouni0 篇评论

Windows XP的内核变化
微软网站的文章,尽管有点老,但是读起来仍觉得津津有味,归纳的很不错。有一篇关于Vista的这样的文章就好了。 Kernel Enhancements for Windows XP 更新日期: 2003 年 1 月 13 日 本頁內容 Introduction Registry Enhancements Windows Support Enhancements I/O Subsystem Memory Management 更多...

发布于 2006年6月8日 13:56admin0 篇评论

A good explanation about why checked build?
Don Burn: ...the checked build of Windows when they pry it from my cold dead workstation. This artical is abstracted from?WHDC website by Don. The checked build of Windows is the Rodney Dangerfield of Redmond, "It don't get no respect," even from many 更多...

发布于 2006年5月12日 22:22Raymond0 篇评论

刷CPU
大家一定听说过刷系统BIOS、刷网卡(上面的firmware)、刷显卡。其实CPU也是支持并可以刷新升级的。 随着CPU复杂度的不断提高,以及一些复杂指令(如多媒体和浮点运算)的引入,测试CPU的复杂度也在成倍提高。再加上集成芯片的生产特征使得可以通过软件刷新产品化的CPU成为必要。 刷新的具体过程和刷其它firmware很相似,通常是由BIOS程序在POST的早期阶段通过CPUID指令把新的数据(2048字节)更新到CPU内部的可擦写ROM上。 不过也有工具可以在操作系统启动后来更新(http://www.urbanmyth.org/microcode/) 更多...

发布于 2006年5月12日 22:22Raymond3 篇评论

通过XP的新命令行工具查询DRIVER信息
Windows XP附带了一个很好的小工具driverquery,使用它可以很轻松的查询出本机或远程系统中的驱动信息。尤其是给系统管理员和驱动程序开发人员带来了很大方便。 Driverquery是个控制台程序,位于Windows系统的system32目录下(大小50多K),因此你可以在任何控制台窗口运行它。 不带任何参数,便可以列出目前系统中已经加载的所有驱动,是按名字列出的。 Module Name  Display Name           更多...

发布于 2006年5月12日 22:21Raymond0 篇评论

美哉,Kernel Debug - Detach Kernel Debugger
我想通过上面这个标题,记下调试中的一些趣事或有意义的细节。因为时间关系,这些小文章可能很简短,只是个简单的记录还来不及寻求更多深层的原因。 Detach Kernel Debugger 因为我经常是用我的笔记本电脑(Debugger)来调试另一台机器(Debugge). 所以每天下班时,如果调试还没有结束. 我就只好把Debugger detach下来, 第二天再继续. 有两种方法可以把WinDbg和被调试的机器分离开. 一种方法是让Debuggee在那里"死等"一夜. 具体做法是通过WinDbg的Debug菜单上的Detach 更多...

发布于 2006年5月12日 22:20Raymond0 篇评论

Deploy new driver builds to debuggee machine
When we debug kernel drivers through a 1394 or COM cable using windbg, we can use .kdfiles command to transfer new driver build to the debuggee machine from the debugger machine or a share foler at any place accessable. The steps are as below. 1, Create 更多...

发布于 2006年5月12日 22:19Raymond0 篇评论

调试笔记:BSOD 0xA
Stop A (IRQL_NOT_LESS_OR_EQUAL ) 是比较多见又难以解决的一个内核问题。本文以一个真实例子对其稍加分析。 首先把内核转储文件调入到WinDbg中,并使用!analyze -v了解概况如下: IRQL_NOT_LESS_OR_EQUAL (a)An attempt was made to access a pageable (or completely invalid) address at aninterrupt request level (IRQL) that 更多...

发布于 2006年5月12日 22:12Raymond0 篇评论

调试笔记:完美的堆栈信息
1: kd> kvChildEBP RetAddr  Args to Child              eed9dbe4 f76089d6 853ad660 864c2ed8 00000000 usbhub!USBH_IoctlGetNodeConnectionInformation (FPO: [Non-Fpo])eed9dc0c f7608a60 更多...

发布于 2006年5月12日 21:54Raymond0 篇评论

BugCheck END_OF_NT_EVALUATION_PERIOD (98)
0: kd> !analyze -v********************************************************************************                                                                             更多...

发布于 2006年5月12日 21:41Raymond0 篇评论

Windows全局标志(Gflags)
Gflags Flag Reference 摘自TechNet,原始链接为:http://technet2.microsoft.com/WindowsServer/en/Library/6a183942-57b1-45e0-8b4c-c546aa1b8c471033.mspx Buffer DbgPrint output Abbreviation ddp Hexadecimal value 0x08000000 Symbolic Name 更多...

发布于 2006年5月4日 17:58Raymond0 篇评论

使用Virtual PC进行Windows内核调试的详细过程
使用WinDbg进行Windows内核调试通常需要两台计算机,一台是Debuggee,一台作为Debugger,又成为Host。使用Virtual PC可以在同一台电脑上进行内核调试,对于某些调试任务来说还是非常有用的。 下面以Virtual PC 2004为例,介绍一下利用Virtual PC进行Windows内核调试的详细过程。 1,下载并安装Virtual PC 2004,从略。 2,启动Virutal PC Console(控制台),创建一台新的虚拟PC,安装向导的提示配置硬盘、内存等参数。 更多...

发布于 2006年4月27日 21:19Raymond2 篇评论

BlackHat的高端培训
BlackHat的历年高端培训资料: http://www.blackhat.com/html/bh-media-archives/bh-multi-media-archives.html#USA-2005 将由微软的两个人(Jason Geffner & Scott Lambert)deliver的培训: http://www.blackhat.com/html/bh-usa-06/train-bh-us-06-sl-advmal.html 大家有空时慢慢挖掘吧,其中有用的内容应该不少 更多...

发布于 2006年4月23日 10:52Raymond0 篇评论

"checked" build 和"free" build的来历
Where do "checked" and "free" come from? By Larry Osterman People who have MSDN or the DDK know that Windows is typically built in two different flavors, "Checked" and "Free".  The primary difference between the two is that the "checked" build 更多...

发布于 2006年4月18日 14:24admin0 篇评论

Dr. Watson的作者
根据Raymond Chen的关于Dr. Watson的文章,Dr. Watson的第一作者名为Don Corbitt。以下是关于他的一篇报道。   Downed Bellevue Pilot Was An Inventor Sherry Grindeland Seattle Times Eastside Bureau BELLEVUE Don Corbitt of Bellevue was developing instrumentation to make general 更多...

发布于 2006年4月17日 14:29admin0 篇评论

VISTA大事记——时间表
最近,VISTA再次宣布延期,企业版本从2006年10月延迟到11月,普通用户版本从2006年年底推迟到2007年1月。看来VISTA当之无愧成为微软历史上开发时间最久的一个Windows版本。让我们一起记下VISTA的时间表: 2001年10月25日: Windows XP发布,微软内部开始筹划Windows的下一个版本,代号为Longhorn。 2004年8月6日: 微软完成Windows XP Service Pack 2的开发,SP2包含了很多安全方面的增欠,也加入了部分其它新功能,从SP2的近200MB的安装包就可以知道,SP2决不是一个单纯的补丁。SP2的开发占用了很多开发力量,这无疑成为Longhorn延期的一个原因。 更多...

发布于 2006年4月14日 22:58Raymond0 篇评论

通过USB接口进行内核调试
至少两年前就听说Windows将支持通过USB 2.0接口进行内核调试。Vista推出后从它的配置文件中终于看到了配置USB的选项,安转WinDbg6.6后,在建立内核调试的对话框中也可以看到USB的TAB了。 但是帮助文档中却没有详细的说明介绍如何具体操作。于是很多人开始询问: Yeah yeah yeah ... we've heard THAT before ... :) Gary G. Little -----Original Message-----From: bounce-247538-27300@lists.osr.com[mailto:bounce-247538-27300@lists.osr.com] 更多...

发布于 2006年4月7日 22:40Raymond0 篇评论

KeBugCheck2的第6个参数
大家知道,DDK公开了两个内核API用于产生BSOD,分别是KeBugCheck()和KeBugCheckEx()。其原型分别如下: VOID   KeBugCheck(IN ULONG  BugCheckCode    ); VOID   KeBugCheckEx(IN ULONG BugCheckCode,    IN ULONG_PTR  BugCheckParameter1,    更多...

发布于 2006年3月13日 10:38Raymond1 篇评论

高端培训的价格
Windows Internals可谓是迄今为止讨论Windows深层结构的最好资料。该书的二位作者David Solomon和Mark Russinovich(严格说来他们是从从第三版开始合作的)也在业界有着非同凡响的声誉。早听说他们有关于Windows内核的培训,心中估计价格也一定不菲,但是觉得应该和MindShare的培训差不多,通常3~5天的课,每个人要800~1000美金。 但是今天仔细看了一下2006年Windows Internals培训的计划和价格,哇,不仅吃了一惊,5天的培训(包括实验)居然近3000美金。每也就是天的价格约600美金。看来要想听听大师的声音(或者说面对面提问和讨论)真的不是那么容易! 更多...

发布于 2006年3月10日 22:47advdbg1 篇评论

WinDbg不同版本间的主要差异
近一两年来,WinDbg的版本更新差不多每月都有,这种速度也侧面证明了微软内部对WinDbg的重视,否则不会升级这么快吧?而且可以看出其发展是和微软的其它技术发展同步的。比如DotNet热时WinDbg的那几个版本加了很多对调试托管代码的支持,64位热时,WinDbg便加入对WOW64的支持。无疑微软的很多内部团队也在使用WinDbg做调试。当他们发现问题或有新的要求时就会让WinDbg改正或加入。 版本升级这么快,有时真的不知道每个版本到底有什么变化,该不该升级?还好微软的站点上有一个简单的列表关于每个版本的变化。但这个LISt已经不包括6.2以前的版本(大约是05年3月)了。说不定现在包括的版本过几个月也不见了。赶紧贴过来吧! 更多...

发布于 2006年3月7日 2:35admin1 篇评论

关于驱动开发的几个必读BLOG 票数 优秀 [5 out of 5]。
对于从事Windows驱动开发的朋友,或者是对Windows内核感兴趣的朋友,以下几个BLOG值得经常看看! 1,Kernel Mustard by Steve Dispensa link: http://kernelmustard.com/category/ddk/ 他以前的BLOG地址为:http://msmvps.com/blogs/kernelmustard/default.aspx 2,Larry Osterman's WebLog - Confessions of an 更多...

发布于 2006年3月2日 14:52admin1 篇评论

Captive, 另一种虚拟技术
听说过Captive么?简单说它是Linux下完全读写NTFS文件系统的一个免费方案。因为其它Linux下的免费NTFS驱动大多在写NTFS文件系统时会有问题。所以这个Captive号称彻底解决了这一问题,因此受到很多人的特别青睐。之所以能彻底解决问题呢?原因是使用微软的NTFS驱动来访问NTFS文件系统,可谓原汤化原食! 那么如何让NTFS驱动在LINUX下跑起来呢?很多人自然想到虚拟机技术。但是细想仍然有问题,如果使用虚拟机,那么虚拟机里的NTFS驱动如何与作为HOST OS的LINUX进行文件操作这样的密集型通信呢,岂不是很慢? 更多...

发布于 2006年3月2日 13:36admin0 篇评论

感受底层
<占位,待续> 更多...

发布于 2005年12月19日 12:28Raymond0 篇评论

Channel9中关于Windows内核的采访录像
今年一月份起,Channel9陆续访谈了一些微软内部的高级设计师和架构师,每次探讨Windows内核的一个方面。尽管录像和采访水准比.NetShow差很多,但是正因为采访的场合就在办公室,气氛也很随意,又很有针对性,因此谈的内容还是很值得一看的。建议大家茶余饭后边听边消遣一下。 Surendra Verma: Vista Transactional File System 42:35 12/2/2005 8 9,379 Singularity Revisited 更多...

发布于 2005年12月7日 12:42dbg1 篇评论

如何跟踪ACPI代码
ACPI是现代计算机系统中BIOS与操作系统间的桥梁。ACPI不仅定义了很多电源和休眠有关的标准,它还定义了如何通过FADT、XSDT、RSDT以及ASL语言来实现与操作系统的交互。 有些系统问题,比如无法进入睡眠状态,无法唤醒(自动重启,或死机)等,是与ACPI直接有关的。但如何定位出错的具体原因一直是一个比较困难的课题。很多时候不得不使用排除及试探等间接方法来解决,效率很低。本文介绍一种直接跟踪ASL源代码的直接方法。 1,   将被调试机器上的ACPI.SYS换成Checked 更多...

发布于 2005年11月17日 18:41dbg2 篇评论

Powered by Community Server Powered by CnForums.Net