双机调试
- 环境配置
- 基础操作
- 内存操作
- 读内存
- 写内存
- 内核(双机调试)读内存
- 搜索内存
- 读内存显示为汇编指令
- 读写寄存器和标志位
- 杂项
- 断点
环境配置
虚拟机端
打开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