约有 1,303 项符合查询结果, 以下是第 127 - 131项。
费时 < 1 秒。
使用ACPIDUMP.EXE或者其他可以DUMP ACPI表的工具(AcpiView、WinACPI)在你的系统中做个DUMP,看DUMP下来的是否是改过的。
Posted in 调试ACPI和BIOS
by
格蠹老雷
on 2008-01-05
不能理解为什么调试引导程序和Windows结合的问题就非得用VMWARE+WINDBG。如果使用WinDBG的内核调试功能,那么最早的调试时机也是在内核文件(NTOSKRNL.EXE)加载之后。如果使用WinDBG通过串口调试NTLDR的支持,那么也要在引导分区把控制权交给NTLDR之后。你现在要调的是MBR,那么离这两者还都差挺远。所以用WinDBG也只是把它当成一个普通的汇编语言调试器来用。
其实MBR之后是引导扇区的引导程序,使用DOS的Debug可以很好的调试这个代码。
Posted in Windows内核调试
by
格蠹老雷
on 2007-12-26
我没有亲自做过,但是理论上是可行的。基本思想就是跟踪VMWARE的虚拟机的VCPU(虚拟CPU)执行MBR的过程。需要你对虚拟机的概念比较熟悉,以免搞不清是在执行虚拟机自己的代码,还是虚拟机内的客户代码。
调试MBR的更好方法当然是Bochs,建议你读一下王宇刚发的文章http://advdbg.org/blogs/advdbg_system/articles/441.aspx。
Posted in Windows内核调试
by
格蠹老雷
on 2007-12-25
堆块的头中有链表指针,这个指针会被用作下一个堆块的地址来访问下一个堆块,如果堆块溢出了,这个指针很可能不知道指到哪里了,所以一执行当然就Access violation 了。
Posted in C/C++本地代码调试
by
格蠹老雷
on 2007-12-25
一个可能的原因是堆损坏(Heap Corruption)了,比如因为变量溢出把堆块的头结构破坏了。我认为使用Win32堆的调试功能(包括PageHeap)是个比较好的方法。以下几种检查功能都是有帮助的:堆尾检查(htc)、释放检查(hfc)和参数检查功能(hpc)。
使用Application Verifier工具(微软网站有免费下载)可以帮助你启用这些调试支持。
Posted in C/C++本地代码调试
by
格蠹老雷
on 2007-12-24
同意第一段的理解。关于第二段,IF位的设置与是否调试没什么关系。第一,观察一下系统的异常和中断处理函数,它们确实是在很“前沿的”处理函数中就执行STI指令设置IF位,以除零异常的KiTrap00函数为例:
kd> u nt!KiTrap00+0x5f
nt!KiTrap00+0x5f:
804dac81 66837d6c1b cmp word ptr [ebp+6Ch],1Bh
804dac86 751d jne nt!KiTrap00+0x83 (804daca5)
804dac88 fb sti
804dac89 55 push ebp
804dac8a ...
Posted in Windows内核调试
by
格蠹老雷
on 2007-12-15
Windows Server 2003 Service Pack 2 (32-bit x86), Checked Build
http://www.microsoft.com/downloads/details.aspx?familyid=096C54B5-7584-4A85-97E6-251A7606809E&displaylang=en
Windows Server 2003 Service Pack 2, x64 Editions, Checked ...
Posted in Windows内核调试
by
格蠹老雷
on 2007-11-12
Server 2003 SP1的:
http://www.microsoft.com/downloads/details.aspx?FamilyID=f07a5e49-4a13-42cb-898b-278a8b287e16&DisplayLang=en
Posted in Windows内核调试
by
格蠹老雷
on 2007-11-12
错误信息确实是因为WinDBG试图加载名为bootext的扩展命令模块而输出的。比如随便起一个调试对话,然后指定一个名字,就会得到类似的信息。
lkd> .load aaa
The call to LoadLibrary(aaa) failed, Win32 error 0n2
''The system cannot find the file ...
Posted in WinDbg
by
格蠹老雷
on 2007-11-06
对于第2个问题, DDS命令是用来辅助手工回溯函数调用的, 它的作用就是把指定地址内的每个DWORD当作是函数的返回地址的地址,然后显示出它附近的符号. 因为栈回溯时一个主要目标就是找函数返回地址,然后找函数调用关系. 所以DDS相当于是帮我自动在一段栈数据中寻找函数返回地址。 它的第一个参数通常就指定为当时的栈指针(EIP),即栈顶。例如 0:000> r eax=cccccccc ebx=7ffde000 ecx=00000000 edx=00000001 esi=7c9118f1 edi=0012ff68 eip=004113b4 esp=0012fe9c ebp=0012ff68 iopl=0 nv up ei pl zr na pe nc cs=001b ss=0023 ...
Posted in Windows内核调试
by
格蠹老雷
on 2007-07-15