【windows核心编程】双机调试操作
1.1 中断与异常##
计算机最重要的任务就是执行指令,只要你设置一个起始位置,他就会一条指令的执行下去。而中断和异常机制是为了防止计算机无休止地执行任意指令,出现错误时可以引导处理器转向正常控制流而诞生的两种操作。
中断主要是由一个外部硬件产生,告知操作系统某些操作产生,比如键盘,鼠标,时钟等等,并且这是一个异步事件。
异常通常是程序执行过程中,产生了问题,急需处理,与当前处理器正在执行的任务有关,这是一个同步事件。
1.2 IDT##
中断和异常是统一管理的,系统为每一种中断或者异常都提供一个处理函数,学名叫陷阱处理器,当中断或者异常发生时,当前指令的执行就会转到特定的陷阱处理器中,此陷阱处理器完成中断或异常的处理工作。
由于终端或异常的类型很多,系统为了方便管理,把各种陷阱处理器放入到一张表中(数组),然后中断和异常发生时,CPU就根据中断或者异常的类型,转入到表中某项去执行中断或异常的处理工作。此表,我们称之为IDT(中断描述符表)。
双机调试操作:###
1、VirtualKD 是一个开源的调试辅助软件,能够帮助 WinDBG 与 VMWare 建立快速通讯
网址: http://virtualkd.sysprogs.org/
VirtualKD分为两部分
1.在VirtualKD目录下,打开相对应的vmmon64.exe程序,并配置调试器windbg路径
2.把 target文件夹拷贝到虚拟机中,并且在虚拟机中运行此文件夹下的 vminstall.exe,点 击“Instual” 按钮安装.
然后重启虚拟机中的目标系统,此时会有调试模式,我们选择它启动
此时程序卡在了启动处
windbg自动运行起来
在命令窗口输入 g ,让目标系统运行起来
微软符号服务器下载符号###
打开windbg-File-Symbol File Path
填入 SRVd:\mysymbolhttp://msdl.microsoft.com/download/symbols,【其中d:\mysymbol是我自己自定义的目录名称。】,加载完符号后。
查看目标系统的IDT表###
在这里点击暂停目标程序
输入命令:!idt /a
IDT索引 作用
0x00~0x14 存放各个异常的陷阱处理器
0x14~0x20 保留
0x20~0x29 空白,供系统和程序员自己分配注册使用
0x2A~0x2E Windows自身使用的5个中断号
0x30~0xFF 给硬件中断使用
1.2.2 使用PC-Hunter查看IDT###
打开PC-Hunter,点击内核钩子,点击下面的子项能够查看IDT表中的内容,所对应的陷阱处理中的内容。
参考:
使用VirtualKD构建双机调试
http://blog.csdn.net/coc_k/article/details/52034927
微软符号服务器下载符号总结
http://www.cnblogs.com/maifengqiang/archive/2011/10/11/2206925.html