Windbg初见

下载与安装

image
在微软商店中找到Windbg即可。
这里是拼网速的时间,校园网可能有帮助。
image
image
在等下载的这段时间里面我也看了一些博客,大概了解了一下windbg的用法。
不过怎么说还是得在虚拟机也下载一个,总是不能在实体机调试的。
image
在Layout里面修改为Disassembly,这下有点od的样子了。
不过快捷键有点出入,还需要学习一下。
F5:运行
F11:步入
F10:步过
Shift+F11:执行到返回
F9: 下断
image
设置内可以修改为暗色模式,不过暗色模式总感觉什么配色都不太舒服。

并不重要的碎碎念

除了自带快照和TTD以外,倒没有给我特别大的惊喜,调试内核程序大概是目前最好的,只不过目前我也没有什么需要调试的内核样本,以后再玩吧。

不过接下来。。。
image
进虚拟机玩玩。

Hello world

在虚拟机的下载有点太久了,还是回到实体机调试一下helloworld试试。

image
这儿有个坑:直接把exe拖进去的意思是“以dump方式打开”,无法调试
这大概是严谨吧。避免直接执行可执行程序。
不过我不需要这一行为。算了。
注意到下面两种打开方式是不同的。
image
这一个是不需要加0x的,对我来说是个好消息。
image
不过ctrl+g的使用是不行的。
感觉不太习惯,得再翻翻博客看看。

快速命令:
g 运行
t 单步步入
p 单步步过
r 查看和修改寄存器

对于习惯gcd调试的人应该不错。

伪寄存器 含义
$ea 调试目标所执行上一条指令的有效地址
$ea2 调试目标所执行上一条指令的第二个有效地址
$exp 表达式评估器所评估的上一条表达式
$ra 当前函数的返回地址
$eip 指令指针寄存器
$eventip 当前调试事件发生时的指令指针
$previp 上一事件的指令指针
$relip 与当前事件关联的指令指针
$scopeip 当前上下文的指令指针
$exentry 当前进程的入口地址
$retreg 首要的函数返回值寄存器
$retreg64 64位格式的首要函数返回寄存器
$csp 栈顶指针ESP
$p 上一个内存显示命令所打印的第一个值
$proc 当前进程EPROCESS结构的指针
$thread 当前线程ETHREAD结构的指针
$peb 当前进程的进程环境块(PEB)的地址
$teb 当前线程的线程环境块(TEB)地址
$tpid 拥有当前线程的进程ID(PID)
$tid 当前线程的线程ID
$bpx X号断点的地址
$frame 当前栈帧的序号
$dbgtime 当前时间
$callret 使用.call命令调用的上一个函数的返回值
$ptrsize 调试目标所在系统的指针类型宽度
$pagesize 调试目标所在的系统的内存页字节数

image
image
好像有什么不对,这里竟然没有提醒是个messagebox,难道是symbol缺失吗

鼠标的【回翻页键】和esc键都没办法倒退上一条代码,jmp一跳就没影了。
双击或者enter都没办法进入call的内容,也没有跳转线提示。
有点难受。

重载程序断点被清理了,更难受了。
找一下设置断点保存地的方法。。。
https://cloud.tencent.com/developer/ask/sof/108255784
好的,心死了,什么时候x64dbg可以调试内核程序了跟我说一声(躺)

image
转头一看,虚拟机里面的微软商店还在更新。
算了,也别更新了,真难用吧。

posted @ 2025-03-10 09:33  Timmoc  阅读(21)  评论(0)    收藏  举报