usgae
- 常用于直接调试可执行程序exe、attach 进程使用。
tips
常用窗口
- 常用:command 、进程线程(勾选多进程调试)、调用堆栈、内存、local 变量、汇编
内存
!peb
:显示进程环境块(PEB, process enviroment blok)中信息的格式化视图!teb
:显示线程环境块(TEB, thread enviroment blok
!address
查看 整体内存布局 layoutd*
:显示给定范围内的内存内容。(读内存)du rcx
显示 寄存器rxc 指向内存的内容。(u为:Unicode 字符)dt
查看相关变量、结构体
e
:写内存eb
符号
lm
:查看模块及模块的符号加载情况lm v
,查看所有模块及一些详细信息lm m somemodulename*
,查看和指定名称匹配的模块
x [Options] Module!Symbol
:查找对应模块中 匹配的符号。- (
x mymodule!*spin*
,表示带 spin 的符号)
- (
进程、线程
~
显示指定线程或当前进程中所有线程的状态~.
当前活动线程、~*
当前线程、~#
显示最初导导致异常的线程~ 2 s
切换到2号线程。
|
、|*
显示进程:(需要勾选了启用子进程调试, 否则只有一个进程)|.
活动进程 (前面带.
的就是当前进程)| 1 s
表示设置1进程为活动进程。
.tlist*demo_ipc*
:查看进程简要信息:进程号和进程名称。后面模糊查找
调试时,选择exe 后,勾选
Debug child process also
,以便能查询到子进程。
- | 查看进程后,
|2 s
切换到对应2号子进程。- 亦或者使用
.childdbg 2
切换到对应2号子进程。
!process
扩展显示有关指定进程或所有进程(包括 EPROCESS 块)的信息。此扩展只能在内核模式调试期间使用。
调试相关
bp
:在某个地址下断点。bp 0x7783FEB
也可以bp MyApp!SomeFunction
bl
(breakpoint list) 命令列出已存在的断点的信息bc*
(breakpoint clear) 命令在系统中移除先前设置的断点(* 为移除所有断点)- 可以通过对进程或线程下断点:
bp /p Eprocess Address
bp /t Ethread Address
(内核模式)
g
(go) 继续执行。g Address
跑到一次性断点处gu
用于使调试目标执行完当前函数并且返回到调用者
r
(register):打印当前寄存器。k
:打印当前线程的调用堆栈~findstack kernal32
查看所有线程的堆栈
u
:命令显示指定的内存中的程序代码的反汇编u rip
返回rip 指向的地址, rip 为返回指令指针 寄存器。
常用流程
-
lm
查看模块及模块的符号加载情况
-
根据查看的主模块 查找入口函数地址
x weblayer_shell!*wWinMain*
-
根据查到的入口函数下断点。
bp weblayer_shell!wWinMain
(入口函数根据自己的make /gn来定)
-
查看断点,并go 到断点
bl
g