<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

文章分类

导航

订阅

Kernel Debug

Operating System Kernel Mode Debugging
调试笔记:双误异常导致的蓝屏(二)
书接上回,今天继续分析双误异常导致的蓝屏。上次说到因为发生双误,CPU动用硬件的任务切换机制,切换到了专门用于处理双误异常的新线程。在分析了TSS结构和栈回溯中的TSS信息后,我们找到了切换回本来触发双误线程的方法,也就是执行.tss 28命令。 0: kd> .tss 28eax=f655d5d4 ebx=af0d4180 ecx=00000000 edx=af0d2081 esi=80460dd0 edi=f655d7d4eip=aebc6af2 esp=f655cfb8 ebp=f655d7dc 更多...

发布于 2010年4月5日 23:36Raymond2 篇评论

调试笔记:双误异常导致的蓝屏(一)
网球里有个术语叫双误,英文叫double fault。简单说,就是发球失误了一次之后,第二次发还失误。一次失误可以理解,第二次还失误,那么只好不客气了。类似的,在IA-32 CPU中,也有个双误,double fault,是一种异常,向量号是8,属于终止类(Abort)异常,一旦发生,问题就很严重。 老雷不会网球,因此下面讨论的都是计算机中的双误。 简单来说,双误就是发生了一个比较严重的异常后,还没处理完,就又发生了第二个比较严重的异常。用句成语,就是一波未平一波又起。为什么要在异常前面加上一个“比较严重”的限定呢?因为对于不严重的异常,那么CPU是可以分而治之,逐一把它们搞定的,只有当CPU无法逐一处理时,它才会抛出双误异常,意思是,“这他妈的也太糟糕了,按下葫芦起来瓢,老子不干了”。 更多...

发布于 2010年3月28日 18:41Raymond4 篇评论

调试笔记:系统挂在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 篇评论

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

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

征集《软件调试》的错误
《软件调试》出版后,有不少热心的读者以各种方式报告了书中的错误(列在勘误中)。对于这样的报告,每次看的时候,首先是感觉很惭愧,怪自己的疏忽大意和水平有限。惭愧后聊以安慰自己的是有读者在仔细看自己写的东西,比石沉大海悄无声息要好。 前几天收到出版社通知,第一次印刷的5000册(确切说是5050册)即将售完,准备做第2次印刷。于是首先想到的是要把书中存在的错误和问题改正过来。 今天特意发出这个征错启事,希望大家把发现的问题以你喜欢的方式报告出来,发邮件、发帖子都可以,错误和建议都可以,尽管发出来,别手软:-),凡是报告错误的,都会赠送一份《软件调试》删节内容的电子版本,以表感谢。要说明的一点是,这次只是重印,与再版不同,只能做小改动,不能大改。 更多...

发布于 2008年12月11日 20:35Raymond4 篇评论

在内核调试会话中设置用户态断点
使用内核调试会话也可以执行一些用户态调试任务,比如向位于用户态的模块设置断点。但这样做与使用用户态调试器有什么不同呢?我们就以向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的帮助文件对此描述甚少,已经有的几个重要扩展命令居然也没有出现在帮助文件中。下面就以调试一个双核的G33系统为例简介绍一下常用的几个命令。 !pic 显示传统ISA中断(8259)的当前状态,例如: 1: kd> !pic----- IRQ Number ----- 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0FPhysically 更多...

发布于 2008年10月14日 12:46Raymond1 篇评论

亲历误删......
昨天中午,一个朋友打电话给我说他的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 篇评论

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

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

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 篇评论

内核调试的EXDI方式
除了串行口、1394和USB 2.0这些链接方式外,WinDBG还支持一种很特殊的连接方式来做内核调试。这种方式被称为EXDI,通常写为eXDI。简单来说,EXDI是WinDBG与硬件调试器协同工作的一个接口。 《软件调试》的第7章介绍了JTAG调试协议和Intel CPU的JTAG支持,即ITP/XDP接口。ITP调试器借助专用的硬件设备(ITP调试仪)通过CPU的专用信号引脚与CPU通信,实施调试任务。 ITP/XDP调试器都有自己的软件,可以观察内存、设置断点、接收CPU的事件等。但如果使用ITP调试器调试Windows操作系统或者其中的驱动程序时,一个明显的问题便是难以处理调试符号和支持操作系统相关的观察功能,比如WinDBG的那么多个扩展命令所提供的功能。于是,一种很自然的想法便是把ITP调试器当作一种读写数据的特殊连接方式,让其为WinDBG传递数据。 更多...

发布于 2008年8月6日 21:30Raymond1 篇评论

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

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

汇编与反汇编之小技巧
大家都知道,对于位于当前调试目标中的指令,可以使用WinDBG的u命令进行反汇编。u命令的参数是要反汇编代码的地址值或者符号,如果不指定,那么WinDBG会使用当前程序指针寄存器所指向的代码,例如: 0:001> untdll!DbgBreakPoint:7c901230 cc              int     37c901231 更多...

发布于 2008年7月3日 22:34Raymond2 篇评论

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

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

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

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

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 篇评论

对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 篇评论

关于调试的博客
1,Mike Stall's .NET Debugging Blog http://blogs.msdn.com/ntdebugging/ 2,使用WinDbg调试.Net http://blogs.msdn.com/tess/default.aspx 3,Microsoft Critical Problem Resolution (CPR)团队,Microsoft Advanced Windows Debugging and Troubleshooting http://blogs.msdn.com/ntdebugging/ 更多...

发布于 2006年12月22日 14:09admin0 篇评论

关于早期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 篇评论

刷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 篇评论

调试笔记: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 篇评论

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 篇评论

通过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