windbg调试ntldr
Windows内核调试
windbg调试ntldr
greenland
2009-02-23, 17:36 下午
请问有没有方法用windbg调试ntldr啊?
不要用bochs调试的方法,那个我知道,但是没有routines的名字。
麻烦各位大侠告诉下方法。
谢谢!
Re: windbg调试ntldr
王宇
2009-02-23, 18:30 下午
tiamo
Re: windbg调试ntldr
MJ0011
2009-02-23, 19:47 下午
用ntldr_dbg替换ntldr就可以调试了 ,DDK下找
Re: windbg调试ntldr
greenland
2009-02-25, 08:57 上午
谢谢MJ0011 我一会去试试
我也是做信息安全的 不过是学生啦
最近刚也有看看你关于tophet的东西呢
很佩服你
Re: windbg调试ntldr
greenland
2009-02-25, 09:13 上午
刚找了一下 没发现 能告诉我一般是在哪个目录下么
我的系统是vista的 是不是可能没有那个东西啊
Re: windbg调试ntldr
greenland
2009-02-25, 10:12 上午
我刚才在网上查了下 说是在debug目录下
我又在xp中装了下ddk 还是没找到ntldr_dbg
难道是ddk版本的问题?我用的是windows driver kit 6001.18001
Re: windbg调试ntldr
MJ0011
2009-02-25, 12:02 下午
可能需要ifs ddk
http://bbs.driverdevelop.com/read.php?tid-96460.html这里有下载
Re: windbg调试ntldr
greenland
2009-02-25, 17:13 下午
我下午又装了一个windows 2003 server版的ddk 终于找到ntldr_dbg了
我把xp的boot.ini中添加了调试选项 /debug comport:com1 /bautrate=15200/debugstop
然后又用ntldr_dbg替换了ntldr,结果启动的时候显示"NTLDR is corrupt. The system can not boot."
Re: windbg调试ntldr
MJ0011
2009-02-25, 17:39 下午
你应该取了非I386的NTLDR_DBG文件
参考WINDOWS的BOOT代码:
if ((FileHeader->Characteristics & IMAGE_FILE_EXECUTABLE_IMAGE) == 0) {
puts(SU_NTLDR_CORRUPT);
WAITFOREVER;
}
if (FileHeader->Machine != IMAGE_FILE_MACHINE_I386) {
puts(SU_NTLDR_CORRUPT);
WAITFOREVER;
}
Re: windbg调试ntldr
greenland
2009-02-26, 09:11 上午
谢谢MJ0011
确实是版本的问题
我的那个是windows server2003的
我在你给的那个网站上下了XP的 果然好了
Re: windbg调试ntldr
greenland
2009-02-26, 14:31 下午
测试的时候发现调用一个函数的时候 后面出现的不是函数名字了 都是内存中的地址 不像在测试bootmgr等vista中的东西的时候 那些函数都是名字
这样,我想要了解ntldr的运行情况就要困难很多了
虽然基本的汇编的代码我看得懂 但是要弄清那些代码究竟是什么意思还是很难
请问有什么好一点的方法吗?
Re: windbg调试ntldr
MJ0011
2009-02-26, 14:39 下午
下符号
Re: windbg调试ntldr
greenland
2009-02-26, 15:56 下午
kd> .reload
Connected to Windows Boot Debugger 2600 x86 compatible target, ptr64 FALSE
Module List address is NULL - debugger not initialized properly.
WARNING: .reload failed, module list may be incomplete
KdDebuggerData.KernBase < SystemRangeStart
Loading Kernel Symbols
Module List address is NULL - debugger not initialized properly.
WARNING: .reload failed, module list may be incomplete
总是失败
Re: windbg调试ntldr
greenland
2009-02-27, 08:40 上午
完整的信息如下:
Microsoft (R) Windows Debugger Version 6.9.0003.113 X86
Copyright (c) Microsoft Corporation. All rights reserved.
Waiting for pipe \\.\pipe\xp
Waiting to reconnect...
Connected to Windows Boot Debugger 2600 x86 compatible target, ptr64 FALSE
Kernel Debugger connection established.
Symbol search path is: *** Invalid ***
****************************************************************************
* Symbol loading may be unreliable without a symbol search path. *
* Use .symfix to have the debugger choose a symbol path. *
* After setting your symbol path, use .reload to refresh symbol locations. *
****************************************************************************
Executable search path is:
*********************************************************************
* Symbols can not be loaded because symbol path is not initialized. *
* *
* The Symbol Path can be set by: *
* using the _NT_SYMBOL_PATH environment variable. *
* using the -y argument when starting the debugger. *
* using .sympath and .sympath+ *
*********************************************************************
Module List address is NULL - debugger not initialized properly.
WARNING: .reload failed, module list may be incomplete
KdDebuggerData.KernBase .sympath
Symbol search path is: SRV*d:\xpsymbols*http://msdl.microsoft.com/download/symbols
kd> .reload
Connected to Windows Boot Debugger 2600 x86 compatible target, ptr64 FALSE
Module List address is NULL - debugger not initialized properly.
WARNING: .reload failed, module list may be incomplete
KdDebuggerData.KernBase < SystemRangeStart
Loading Kernel Symbols
Module List address is NULL - debugger not initialized properly.
WARNING: .reload failed, module list may be incomplete
Re: windbg调试ntldr
greenland
2009-02-27, 08:47 上午
我先进XP下了一下symbols 然后又重启就好了
真奇怪啊 在用ntldr_dbg替换ntldr之前明明有.reload了的
不过不管了 只要能用就好了
总页数 1 第 2 页 [共有 16 条记录]
1
2
>