WinDbg - 禁用源模式

时间:2017-04-11 18:50:06

标签: windows debugging assembly reverse-engineering windbg

我试图阻止WinDbg显示源代码。 我尝试通过取消选中Debug->Source Mode选项来禁用,但在我逐步完成程序集时仍会显示源代码。

enter image description here

如何完全禁用源代码调试?

我尝试了以下方法但没有成功:

  1. 取消选中Debug->Source Mode选项
  2. .lines -d命令。
  3. l-t命令。
  4. 单步执行pt代替 F10 F11

4 个答案:

答案 0 :(得分:1)

这不是禁用打开源文件窗口的答案 但是要减少它引起的烦恼

如果src窗口在每一步都打扰你 取消停靠它并减小它的大小并把它放在一个你不会被它打扰的地方

多文件项目中的其他源文件将自动在您放置第一个未停靠的源文件的位置打开

如果要查看源最大化并最小化窗口,可以使用 alt + w + w 激活任何src文件

在下面的屏幕截图中,4个src文件已打开,但通过多次打开和对接并在每个源文件打开时调整命令窗口,它不会让你烦恼

enter image description here

答案 1 :(得分:0)

您可以使用.srcpath命令将源路径更改为空目录。 Windbg没有任何要显示的源代码。

.srcpath [emptyDirectoryPath]

答案 2 :(得分:0)

您的PDB包含每行程序集的源代码的完全限定路径。如果对函数执行“u”命令,则可以看到此信息:

kd> u xxx!xxxVolumeEvtIoWrite
xxx!xxxVolumeEvtIoWrite [e:\repos\clients\xxx\xxx\src\xxx_volume.cpp @ 1110]:
88c05c60 push    ebp
88c05c61 mov     ebp,esp
88c05c63 sub     esp,38h
如果您的指令指针位于其中一个地址上,则WinDbg将弹出此源代码窗口。没有选项可以阻止这一点,所以隐藏窗口的上一个答案是一个合理的解决方案。

您唯一的其他选择是阻止WinDbg找到您的源代码。您可以通过以下两种方式之一完成此操作:

  1. 从PDB中删除源行信息,以便WinDbg不再知道源代码的路径。您可以使用/PDBSTRIPPED链接器开关或使用BinPlace实用程序

  2. 执行此操作
  3. 将源代码移至备用路径,以便WinDbg无法再找到它

答案 3 :(得分:0)

我建议编写一个关闭源文件的AutoIt脚本,而不是修改PDB或类似的。

While(True)
    CloseWinDbgSource()
WEnd

Func CloseWinDbgSource()
    WinWait("[CLASS:WinBaseClass]", ".cpp", 10)
    WinClose("[CLASS:WinBaseClass]", ".cpp")
EndFunc

或者您可以修补方法windbgx86!WinBase::Create()

0:000> .dbgdbg

然后在CDB

0:000> bp windbgx86!WinBase::Create
0:000> g
[Force opening of a window here]
0:000> bc 0
0:000> a eip
ret
<Enter>
0:000> g

这种方法的好处是你不需要打扰任何其他窗户,因为不再打开窗户。