windbg 命令_从堆里找回“丢失”的代码相关命令简介

前言

在上一篇文章中,我们主要使用了三个命令 !addresss.writemem 把丢失的代码成功的保存到了文件中。本文简单介绍一下上文用到的这三个命令。

windbg 中的地址范围语法

很多命令都会用到 地址范围。比如 s 命令,.writemem 命令。

windbg 中可以通过两种形式指定地址范围。起始地址 L长度 或者 起始地址 终止地址。在上一篇文章中,我们使用的是 起始地址 终止地址 的形式。我们也可以使用用 起始地址 L长度 的形式来指定一个范围。其中的 L 必不可少,而且,L 后面跟的是要查看的单位数量,不是字节数。比如,我们查看起始地址 0xc0000 处对应的内容,同样是L4,按字节(db),按四字节(dd)和按八字节(dq)查看,显示的内存范围是不一样的

eb8f4982514e8632c9aac099ad46c103.png
display-by-range

有两点需要注意:

  1. 如果搜寻的范围超过256MB,我们需要使用 L? ,而不是 L
  2. 我们可以使用 L- 表示给定的 address 是终止位置,而不是起始位置。
cf10f5866980659350e64e1b047a4163.png
range-specifier

!address 命令

该命令可以用来查看指定地址对应的信息,也可以用来查找过滤。在之前的文章里使用 !address 查看过某个地址对应的信息。上一篇文章中我们主要使用的是这个命令的查找过滤功能(通过  -f 参数,ffilter 的缩写)。

  • 我们可以根据用途过滤,具体参考下表。
b935e50b24a11cbd28f6a1bf39346b8c.png
filt-by-memory-usage
  • 还可以根据内存保护属性过滤,具体参考下表。
26d3fb9f9750a548f05f9e729ac19066.png
filt-by-memory-protection
  • 还可以根据内存状态过滤,具体参考下表。
f835a74e8dd155fb788a6209be094c9d.png
filt-by-memory-status
  • 还可以根据内存类型过滤,具体参考下表。
cf944202605af7ed99a51be5e4da897f.png
filt-by-memory-type

-f 参数需要配合 -c:"command" 在查找的过程中执行对应的命令。

1b9c2718514a28f8b8fa9c446e4e3fec.png
option-c

s 命令

该命令可以用来查找符合特定模式的内存。sSearch Memory 的缩写。

s [-[[Flags]Type]] Range Pattern 
s -[[Flags]]v Range Object 
s -[[Flags]]sa Range 
s -[[Flags]]su Range 

这里仅截取 Type 的用法。更多用法请参考官方文档。

9f0c110368922a29d4b0cf47df2c4936.png
search-type

.writemem 命令

该命令比较简单,.writemem FileName Range

FileName :如果路径中有空格,需要使用 "" 引起来,这个应该是常识了。

Range :相关的语法已经在本文开始介绍了。

总结

我们在上一篇文章中用到的命令(!address -f:heap,PAGE_READWRITE -c:"s -u %1 %2 args.Contains(\"--all\")")的意思是:遍历可读写的堆内存,对每个内存区域调用 s 命令,搜寻匹配 args.Contains("--all")unicode 字符串。s 命令需要的地址范围是通过 !address 命令传递过来的 %1(起始地址) 和 %2(结束地址) 传递的。

参考资料

  • https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/-address

  • https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/-writemem--write-memory-to-file-

  • https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/address-and-address-range-syntax

  • https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/s--search-memory-

欢迎留言交流

需要你的 2b9746c588d3e11dfa611bdff11f0f5b.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值