双机调试
- 环境配置
- 基础操作
- 内存操作
- 读内存
- 写内存
- 内核(双机调试)读内存
- 搜索内存
- 读内存显示为汇编指令
- 读写寄存器和标志位
- 杂项
- 断点
 
 
环境配置
虚拟机端
 打开cmd
bcdedit /copy {current} /d Debug
bcdedit /timeout 30
输入以上结果重启后进入debug系统
 
 MSconfig能查到此图
bcdedit /dbgsettings SERIAL DEBUGPORT:1 BAUDRATE:115200
bcdedit /bootdebug ON
bcdedit /debug ON

 然后先启动windbg的attach kernel
 再启动vmvare

break之后的测试指令,有反应就是成功了
!process 0 0
!idt
基础操作
内存操作
读内存
dq: 八个字节为一组显示内存
 dd:四个字节
 dw:两个字节
 db:一个字节
写内存
eq:往一个地址(可以+偏移量,以八个字节为单位),写入八个字节
 ed:写入四个字节
 ew:写入两个字节
 eb:写入一个字节
内核(双机调试)读内存
只有内核态能使用的操作,这里读的都是物理内存了
所有进程使用的都是虚拟内存
!dq: 八个字节为一组显示内存
 !dd:四个字节
 !dw:两个字节
 !db:一个字节
搜索内存
s -q 起始地址 结束地址 搜索值:搜索八个字节为某特定值的地址
 s -d 起始地址 结束地址 搜索值:搜索四个字节
 s -w 起始地址 结束地址 搜索值:搜索两个字节
 s -b 起始地址 结束地址 搜索值:搜索一个字节
 s -u 起始地址 结束地址 搜索值:搜索一个unicode字符
 s -a 起始地址 结束地址 搜索值:搜索一个ascii字符
读内存显示为汇编指令
u
读写寄存器和标志位
r:读取所有寄存器和标志位
 r 寄存器名:读取一个寄存器的值
 r 寄存器名=*:设置寄存器的值
杂项
.cls:清理屏幕
 k:当前线程调用栈
 gc:从断点恢复运行
 g:从断点恢复运行(双机调试时和gc一样)
断点
bp:下int3断点(0xcc)
 bl:查看断点列表,可以在列表中禁止(disable)和清除(clear)
 bd 断点编号:禁止断点
 bc 断点编号:清除断点
 ba:下硬件断点
 ba r