《软件调试》答疑http://advdbg.org/forums/76/ShowForum.aspx切问而近思是广被认可的治学之道。提问不仅可以帮助自己,也可以启发其他读者。如果你在阅读《软件调试》时遇到问题,那么可以在这里提出,与大家一起交流!zh-CNCommunityServer 1.1 (Build: 2.0.2.21480)&lt;软件调试&gt;30.13 控制进程和线程问题,哪会大牛帮个忙?http://advdbg.org/forums/7069/ShowPost.aspxWed, 14 Jun 2017 14:04:44 GMTe4f42b2c-e28e-435b-8fbe-636f8fa9f0b8:7069喝咖啡到天亮230.13.3 多进程调试中 把记事本加入调试会话中 输 入 .attach 0n5128 (记事本PID),结果出现:<div><br></div><div><div>Cannot debug pid 5128, NTSTATUS 0xC00000BB</div><div>&nbsp; &nbsp; "不支持该请求。"</div><div>Unable to initialize target, NTSTATUS 0xC00000BB</div></div><div><br></div><div>网上也找不到关解决办法,哪位能帮个忙,怎么解决</div>30.5.1 附加到已经运行的进程http://advdbg.org/forums/6626/ShowPost.aspxWed, 22 Apr 2015 04:42:19 GMTe4f42b2c-e28e-435b-8fbe-636f8fa9f0b8:6626kkdfa0将WinDbg 设置为JIT 调试器<div><br></div><div>-p</div><div><br></div><div><br></div><div>-pn</div><div><br></div><div><br></div><div><div>0:001&gt; .attach</div><div>Numeric expression missing from '&lt;EOL&gt;'</div></div><div>&nbsp;</div><div><br></div><div><br></div><div>.abandon 之后用 &nbsp; windbg.exe -pe -p PID&nbsp;</div><div><br></div><div><br></div><div><br></div><div>这几种附加方法怎么实现?</div>关于 30 .4 .2 表达式 完全不知道怎么输入http://advdbg.org/forums/6625/ShowPost.aspxTue, 21 Apr 2015 14:27:02 GMTe4f42b2c-e28e-435b-8fbe-636f8fa9f0b8:6625kkdfa0关于 30 .4 .2 表达式&nbsp;<div><br><div>完全不知道怎么输入 表达式<div><br></div><div><br></div></div></div>关于书中的一个问题,这个是个错误吗,勘误表里没有说道,我也不知道,有点疑惑,希望大家解下惑。http://advdbg.org/forums/6623/ShowPost.aspxTue, 21 Apr 2015 06:58:28 GMTe4f42b2c-e28e-435b-8fbe-636f8fa9f0b8:662351468834@qq.com0软件调试的300页,倒数第二段有下面的一段话<br>RtlDispatchexception 接到此回复后,首先会进行全局的栈展开..........(中间省略).........然后跳转到异常处理的真实地址,开始执行异常处理。<br>这句话真的让我糊涂了,这个函数内部不是已经调用了注册的异常处理函数了吗?怎么又跑去执行了。。。。。<br>然后我看了730页的关于_except_handler3的处理过程,发现这不就是他干的事情吗?包含栈展开的工作,在731页第二段上面也说了——省略了关于全局展开和局部展开的过程。<br>我是这么理解的。<br><br>vc6注册的处理函数一直都是_except_handler3, 在_except_handler3的内部调用了我们自己注册的异常处理函数(根据范围表等等一些逻辑),根据返回值进行不同的处理,&nbsp; 其中当返回的不是”继续搜索“的时候(不打英语了~~)便会有下面的处理:调用_except内部的代码,当返回的是”已经处理“的时候,就跳转到_except的后面继续执行,要是返回了 “继续执行”是不是的进入内核切换一次上下文?不知道,反正eip的值可能被修改了或者没有修改但是总是的修改一下上下文,然后恢复程序的执行。<br>也就是说在一些情况下,函数不会返回了,直接跑去继续执行了,有些情况下还的返回,比如“继续搜索”<br><br><br>731页不是说下一节会讲栈展开的问题,可是下一节好像不是,难道我没看懂,哈哈哈哈哈哈<br>2.7.4 地址翻译http://advdbg.org/forums/6601/ShowPost.aspxSat, 11 Apr 2015 14:35:27 GMTe4f42b2c-e28e-435b-8fbe-636f8fa9f0b8:6601kkdfa4第6点 的图 好难懂呢<div><br></div><div>问题1 :</div><div><span class="Apple-tab-span"> </span>线性地址的低12位 这图上是OFFSET &nbsp;:页中偏移 + 上一步内存页基地址 =物理地址</div><div>这个 <font color="#ff1493">页中偏移</font> 和 <font color="#ff1493">上一步内存页基地址</font><span class="Apple-tab-span"> </span>又不知道怎么来的&nbsp;</div><div><br></div><div><span class="Apple-tab-span"> </span></div><div>问题2:</div><div><span class="Apple-tab-span"> </span>图上的PTE 上<font color="#ffff00"> </font><font color="#0000ff">有部分PTE 是指向物理内存 &nbsp;</font>还有&nbsp;<font color="#006400">部分PTE指向 应该是虚拟内存</font></div><div><br></div><div>怎么会这样呢?</div><div><br></div><div>太笨了 看的好晕</div><div><br></div><div><br></div><div>作者来解惑 &nbsp;</div><div><br></div>第2章 页目录http://advdbg.org/forums/6593/ShowPost.aspxTue, 07 Apr 2015 00:11:41 GMTe4f42b2c-e28e-435b-8fbe-636f8fa9f0b8:6593kkdfa7<div><br></div><div><table align="left" cellpadding="0" cellspacing="2"><tr><td colspan="3" class="txt4"><table align="left" cellpadding="0" cellspacing="0"><tr><td class="txt3" align="left"><div>页表的页目录表项的格式 的高20位代表PDE所指向页表的起始物理地址的高20位,该起始物理地址位的低12位固定为0。</div><div><br></div><div>好糊涂呢</div><div><br></div><div>页表的页目录表项的格式 &nbsp;的高20位 还是 第20位 是起始物理地址?</div><div><br></div><div><br></div><div>起始物理地址位的低12位 是指几个位 还是 第12位 呢?</div><div><br></div><div><br></div><div>怎么分辨呢</div></td></tr></table></td></tr></table></div>读了第二章有点疑问http://advdbg.org/forums/6496/ShowPost.aspxWed, 14 Jan 2015 15:55:03 GMTe4f42b2c-e28e-435b-8fbe-636f8fa9f0b8:6496不懂朋友2大家好!<div>我读了第二章的分页机制,并做了那个实验,我分别在XP2和win7上测试。</div><div>但是发现只有XP2上是正确的,win7是出现全部是0.</div><div>然后看了前面的帖子,里面说了这是内核的保护机制,我的问题主要有两个,希望老师或大神们能解答下。</div><div>1、在WIN7或是win8,书中说的分页机制也是一样的吗?(就是获得一个虚拟地址,前10是页目录索引,中间10位是页表索引,最后12位是页内偏移地址)</div><div>2、calc输入的数(也就是编辑框的标题),他是保存在内存空间中?为什么我用我输入的数查找内存,却找不到这个数呢?</div><div><br></div><div><br></div>昨天提出的问题的继续http://advdbg.org/forums/6265/ShowPost.aspxWed, 30 Apr 2014 09:27:51 GMTe4f42b2c-e28e-435b-8fbe-636f8fa9f0b8:6265再坚持1<P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman">我问的是当显示以下这个内容时</FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman">PROCESS 896e2b28<SPAN>&nbsp; </SPAN>SessionId: 0<SPAN>&nbsp; </SPAN>Cid: 07b0<SPAN>&nbsp;&nbsp;&nbsp; </SPAN>Peb: 7ffdf000<SPAN>&nbsp; </SPAN>ParentCid: 02e8<O:P></O:P></FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman"><SPAN>&nbsp;&nbsp;&nbsp; </SPAN>DirBase: 0adc0480<SPAN>&nbsp; </SPAN>ObjectTable: e1089880<SPAN>&nbsp; </SPAN>HandleCount:<SPAN>&nbsp; </SPAN>52.<O:P></O:P></FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman"><SPAN>&nbsp;&nbsp;&nbsp; </SPAN>Image: calc.exe</FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3 face="Times New Roman">……</FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman">我照书上说的用此命令显示DirBase:0adc0480,即CR3的值时,不能显示有关数值,而是提示读取物理内存失败的“错误提示”。不知道什么原因。</FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman">lkd&gt; !dd 0adc0480<O:P></O:P></FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman">Physical memory read at adc0480 failed<O:P></O:P></FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman">If you know the caching attributes used for the memory,<O:P></O:P></FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman">try specifying <IMG alt="Coffee <img src=" />" src="/emoticons/emotion-44.gif">, [uc] or [wc], as in !dd <IMG alt="Coffee <img src=" />" src="/emoticons/emotion-44.gif"> &lt;params&gt;.<O:P></O:P></FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman">WARNING: Incorrect use of these flags will cause unpredictable<O:P></O:P></FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman">processor corruption. <SPAN>&nbsp;</SPAN>This may immediately (or at any time in<O:P></O:P></FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman">the future until reboot) result in a system hang, incorrect data<O:P></O:P></FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3 face="Times New Roman">being displayed or other strange crashes and corruption.</FONT></SPAN></P>在学习《软件调试》第2章的疑问http://advdbg.org/forums/6262/ShowPost.aspxTue, 29 Apr 2014 08:56:43 GMTe4f42b2c-e28e-435b-8fbe-636f8fa9f0b8:6262再坚持1<P>我在学习《软件调试》第二章第59面,一步一步跟着做时,发现在书中第11步,显示calc的页目录数值时出现如下问题,不知道什么原因,进行不下去。当然,我在再启动一个WDB实例时,前面做的各步并未关闭。也即calc进程依然存在。</P> <P class=MsoNormal><SPAN><FONT size=3 face="Times New Roman">……</FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman">PROCESS 896e2b28<SPAN>&nbsp; </SPAN>SessionId: 0<SPAN>&nbsp; </SPAN>Cid: 07b0<SPAN>&nbsp;&nbsp;&nbsp; </SPAN>Peb: 7ffdf000<SPAN>&nbsp; </SPAN>ParentCid: 02e8<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman"><SPAN>&nbsp;&nbsp;&nbsp; </SPAN>DirBase: 0adc0480<SPAN>&nbsp; </SPAN>ObjectTable: e1089880<SPAN>&nbsp; </SPAN>HandleCount:<SPAN>&nbsp; </SPAN>52.<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman"><SPAN>&nbsp;&nbsp;&nbsp; </SPAN>Image: calc.exe</FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3 face="Times New Roman">……</FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman">lkd&gt; !dd 0adc0480<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman">Physical memory read at adc0480 failed<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman">If you know the caching attributes used for the memory,<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman">try specifying <img src="/emoticons/emotion-44.gif" alt="Coffee [C]" />, [uc] or [wc], as in !dd <img src="/emoticons/emotion-44.gif" alt="Coffee [C]" /> &lt;params&gt;.<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman">WARNING: Incorrect use of these flags will cause unpredictable<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman">processor corruption. <SPAN>&nbsp;</SPAN>This may immediately (or at any time in<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3><FONT face="Times New Roman">the future until reboot) result in a system hang, incorrect data<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoNormal><SPAN><FONT size=3 face="Times New Roman">being displayed or other strange crashes and corruption.</FONT></SPAN></P> <P>&nbsp;</P>不能建立内核调试会话http://advdbg.org/forums/6184/ShowPost.aspxFri, 24 Jan 2014 07:25:39 GMTe4f42b2c-e28e-435b-8fbe-636f8fa9f0b8:6184阿伦1<P><FONT>按照书中169页的说法:File-&gt;Kernel Debug-&gt;Local-&gt;OK,建立内核调试会话,结果命令窗口一闪而过,没有可以输入命令的窗口。</FONT></P> <P><FONT>我的WinDbg版本号:6.6.0007.5。</FONT></P> <P><FONT>系统版本:win7 32bit</FONT></P> <P><FONT>请问是什么原因?</FONT></P>[请教]如何读懂 软件调试 本书?http://advdbg.org/forums/6127/ShowPost.aspxThu, 28 Nov 2013 02:51:00 GMTe4f42b2c-e28e-435b-8fbe-636f8fa9f0b8:6127MT3初次来到这个地方,各位老师,我想请教一个问题,阅读&lt;&lt;软件调试&gt;&gt;书时,我感觉很吃力.很多不懂.是不是读这本书.需要什么基础.<div>我总在怀疑自己,很迷茫,想请老师们给我指点一下,不胜感激!先谢谢了.</div><div>下面说说我的基本情况:<br><div>我现在工作是在做软件开发,使用c/c++两年左右,对汇编能读懂指令.了解系统简单的机制知识.是不是我欠缺哪方面的知识.</div><div><br></div></div>请教一个关于5.2章 LBR栈的问题http://advdbg.org/forums/5199/ShowPost.aspxTue, 21 Feb 2012 02:36:49 GMTe4f42b2c-e28e-435b-8fbe-636f8fa9f0b8:5199whatday1首先感慨一下,张老师这书实在是太好了,感觉完全是如饥似渴,难得的好书呀。。在此谢谢老师的辛劳。<BR>我在学习5.2章节的时候遇到了一个问题,LBR的源代码我是直接下载的源代码,编译以后放在相应目录下运行出现以下结果<BR>我的CPU是Core2 Duo CPU,我想这个问题是不是因为我的CPU和书上演示的CPU有些不一样,但是我看了书上介绍的Core微框架应该是差不多的吧,<BR>所以实在不解到此来问问老师,先谢谢了。<BR>lkd&gt; !lbr.lbr<BR>Access LBR (Last Branch Recording) registers of IA-32 CPU.<BR>Version 1.0.0.2 by Raymond<BR>MSR_DEBUGCTLB=3<BR>LBR bit is cleared now.<BR>MSR_LASTBRANCH_TOS=1<BR>MSR_LASTBRANCH_1: [00000000] +0<BR>MSR_LASTBRANCH_1: [8068b561] nt!KdpSysWriteMsr+1c<BR>MSR_LASTBRANCH_0: [00000000] +0<BR>MSR_LASTBRANCH_0: [8068b4fe] nt!KdpSysReadMsr+14<BR>MSR_LASTBRANCH_7: [00000000] +0<BR>MSR_LASTBRANCH_7: [00000000] +0<BR>MSR_LASTBRANCH_6: [00000000] +0<BR>MSR_LASTBRANCH_6: [00000000] +0<BR>MSR_LASTBRANCH_5: [00000000] +0<BR>MSR_LASTBRANCH_5: [00000000] +0<BR>MSR_LASTBRANCH_4: [00000000] +0<BR>MSR_LASTBRANCH_4: [00000000] +0<BR>MSR_LASTBRANCH_3: [00000000] +0<BR>MSR_LASTBRANCH_3: [8068b4fe] nt!KdpSysReadMsr+14<BR>MSR_LASTBRANCH_2: [00000000] +0<BR>MSR_LASTBRANCH_2: [8068b4fe] nt!KdpSysReadMsr+14<BR>LBR bit is set now.<BR>lkd&gt; u nt!kdpSysWriteMsr la<BR>nt!KdpSysWriteMsr:<BR>8068b545 6a08&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push&nbsp;&nbsp;&nbsp; 8<BR>8068b547 6848f15280&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push&nbsp;&nbsp;&nbsp; offset nt!RamdiskBootDiskGuid+0x74 (8052f148)<BR>8068b54c e85289e5ff&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call&nbsp;&nbsp;&nbsp; nt!_SEH_prolog (804e3ea3)<BR>8068b551 33f6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xor&nbsp;&nbsp;&nbsp;&nbsp; esi,esi<BR>8068b553 8975fc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; dword ptr [ebp-4],esi<BR>8068b556 8b450c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; eax,dword ptr [ebp+0Ch]<BR>8068b559 ff7004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push&nbsp;&nbsp;&nbsp; dword ptr [eax+4]<BR>8068b55c ff30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push&nbsp;&nbsp;&nbsp; dword ptr [eax]<BR>8068b55e ff7508&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push&nbsp;&nbsp;&nbsp; dword ptr [ebp+8]<BR>8068b561 e88f7be8ff&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call&nbsp;&nbsp;&nbsp; nt!WRMSR (805130f5)<BR><BR>一个关于栈回溯的问题!http://advdbg.org/forums/5195/ShowPost.aspxSat, 11 Feb 2012 13:21:06 GMTe4f42b2c-e28e-435b-8fbe-636f8fa9f0b8:5195小维2<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一直在读《软件调试》这本书,感觉内容很丰富啊,作者对操作系统和cpu架构的理解,让人叹服!</P> <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有一个小问题,还请张老师不吝赐教。张老师在书中给出了很多表现某些系统函数调用过程的栈回溯,本人也想通过windbg工具尝试看到书中的栈回溯的清单,但是一直没有弄明白作者是通过怎么样的步骤,看到这些栈回溯清单的。比如第4章的4.2.8节(P92页),清单4-4,“显示了当使用vs2005调试本地的C++程序时,vs2005调用SetThreadContext API来设置调试寄存器的函数调用过程(栈回溯)”。请问张老师,这个栈回溯清单在windbg中如何得到,您是如何定位到SetThreadContext函数的呢,书中还有好多显示函数调用过程的栈回溯清单,请问您,您是怎么定位到这些函数,然后通过kn指令显示栈回溯清单的呢?谢谢张老师!</P> <P>&nbsp;&nbsp;&nbsp;</P>关于DebugActiveProcess http://advdbg.org/forums/5075/ShowPost.aspxThu, 18 Aug 2011 10:47:44 GMTe4f42b2c-e28e-435b-8fbe-636f8fa9f0b8:5075落英缤纷yhj4&nbsp;&nbsp;&nbsp;使用DebugActiveProcess 将调试器附加到已有进程。这个API我在WindowsXP上可以正常使用,但是同样的代码在Win7上就无法运行,总是返回0,我想应该是权限的问题,请问一下如何在win7上使用这个函数,谢谢。请教:78页KiTrap03中将程序指针寄存器减1http://advdbg.org/forums/5006/ShowPost.aspxTue, 05 Jul 2011 03:10:47 GMTe4f42b2c-e28e-435b-8fbe-636f8fa9f0b8:5006saviola2请教一下那段带有dec ebx的汇编代码,是如何实现EIP减1的?