-
-
[分享]WinDbg 10.0.xxx 版本 - Registers are not yet known 错误导致寄存器窗口无法显示内容
-
2017-4-23 05:38
7355
-
[分享]WinDbg 10.0.xxx 版本 - Registers are not yet known 错误导致寄存器窗口无法显示内容
我是用过两款WinDbg10.0.xxx版本的调试器,10.0.10586 和 10.0.14321。
这两个调试器在内核调试模式下,寄存器无法正常显示且提示Registers art not yet known错误。
后来我在网上找到一个解决该问题的开源扩展DLL。
原文网址:http://stackoverflow.com/questions/35961246/windbg-not-showing-register-values
大致意思是:这是一个很蠢的Bug
不过可惜的是我怎么都编译不过它的源码,只能直接使用他给的DLL。
然而,我觉得这个扩展DLL用起来不方便,每次都需要我手动在WinDbg的命令行输入!WingDbg.regfix来修复寄存器无法显示的Bug。
于是乎,我对这个扩展DLL打了补丁,使它每次在WinDbg加载扩展DLL的时候(当WinDbg通过.load命令来加载一个扩展DLL时)自动调用regfix。
因为我编译不过它的源码,所以很蛋疼的写了一个转发DLL,把原有的WingDbg.dll重命名为WingDbgOrg.dll。我自己编写的DLL则命名为WingDbg.dll来转发一下。
姿势:
将WingDbg.dll和WingDbgOrg.dll放在WinDbg.exe目录下。
打开WinDbg.exe进入内核调试模式。通过.load命令加载WingDbg.dll。例如:.load wingdbg(无需加载WingDbgOrg.dll)
关闭已经打开的寄存器窗口并重新打开即可正常显示寄存器的内存。
附件:
我自己的源码、v10.0.10586 x64版的补丁、v10.0.14321 x64版的补丁、原版WingDbg.dll:重命名为WingDbgOrg.dll
原版的WingDbg.dll的源码我就不上传了,感兴趣的可以去原文网址里面自己下载。
我只写了x64版的补丁,x86的没写。但是大致上都一样,我的源码中有稍微详细一点点的注释,自己改吧改吧,编译一下,一个x86版的就出来了。
能修复这个Bug应该感谢原作者,我只是做了二次开发。
小生生平第一次发帖,请多多关照。
如果有问题大家可以跟帖回复。
=========================
最后修改时间: 2017年12月12日15:05:25
1. 文中描述的用过两款10.0.xxx版本分别是
10.0.10586 和 10.0.14321, 之前写错了.
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课