双机调试-vm

本文详细介绍了双机调试中的环境配置步骤,包括使用bcdedit设置debug选项,以及进行内存操作如读写内存、搜索特定值、查看汇编指令和寄存器。还涵盖了进程操作、断点管理和条件断点设置等内容,对Windows内核调试提供了实用指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境配置

虚拟机端
打开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字节数 地址:读的硬件断点
ba w字节数 地址:写的硬件断点
ba e字节数 地址:执行的硬件断点
ba i字节数 地址:io操作的硬件断点
bu:加载pdb的时候断

条件断点

bp NtOpenProcess ".if(@rdx=0x1000){}.else{gc}"

只保留rdx寄存器的值为0x1000的断点

进程操作

!process :查看当前进程内核信息
!process 0 0:查看所有进程内核信息
.process /i EPROCESS:服加到进程
服加完之后再输入一个g,就会把目标进程作为当前进程

因为break的时候不一定会停在你想要的进程,
所以需要用EPROCESS去附加到你想要访问的进程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值