【WinDbg】常用窗口、内存符号命令、调试命令;常用流程,入口函数下断点。

usgae

  • 常用于直接调试可执行程序exe、attach 进程使用。

tips

常用窗口
  • 常用:command 、进程线程(勾选多进程调试)、调用堆栈、内存、local 变量、汇编
    在这里插入图片描述
内存
  • !peb :显示进程环境块(PEB, process enviroment blok)中信息的格式化视图
    • !teb :显示线程环境块(TEB, thread enviroment blok
  • !address 查看 整体内存布局 layout
  • d* :显示给定范围内的内存内容。(读内存)
    • 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 为返回指令指针 寄存器。
常用流程
  1. lm查看模块及模块的符号加载情况
    在这里插入图片描述

  2. 根据查看的主模块 查找入口函数地址x weblayer_shell!*wWinMain*
    在这里插入图片描述

  3. 根据查到的入口函数下断点。bp weblayer_shell!wWinMain (入口函数根据自己的make /gn来定)
    在这里插入图片描述

  4. 查看断点,并go 到断点 bl g
    在这里插入图片描述

参考

Docs - Windows 调试工具

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值