WinDbg命令详解--内存操作

来源:互联网 发布:数据分析培训班哪个好 编辑:程序博客网 时间:2024/05/16 05:10
  • 分配内存指令:.dvalloc
.dvalloc指令类似与VirtualAlloc函数。可以指定分配的大小、类型(MEM_RESERVE | MEM_COMMIT)(加上参数 / r,申请的内存类型为MEM_RESERVE。默认为MEM_COMMIT)、起始地址(加上参数 / b)
使用.dvalloc分配的内存都是PAGE_EXECUTE_READWRITE属性

  • 释放内存指令 : .dvfree
有分配就有释放.dvfree指令类似VirtualFree 函数。

  • 内存属性查看指令:!vprot
!vprot指令类似与VirtualQuery 函数。可以获取一个内存块的各种属性。

  • 内存地址命令:!address
!address命令可以按照性质(image or stack or heap or filemap...)、类型(MEM_IMAGE or MEM_MAPPED or MEM_PRIVATE) 、状态(MEM_COMMIT or MEM_FREE or MEM_RESERVE)、保护属性(PAGE_NOACCESS or PAGE_READONLY ...)等组合查询某一组内存列表。

  • 从文件中读入数据到内存指令 : .readmem

  • Dump内存指令:.writemem
我们经常会存在如下需求:有一个程序是压缩壳,需要把解压后的代码Dump出来;为了分析某些数据,需要把某个内存块Dump出来。那使用.writemem把。
.writemem与.readmem类似,是他的逆操作。

  • 读内存指令:d
读指令是最常用的指令之一。它负责按照指定的格式,格式化输出内存数据。指令列表:
da 按照ASCII字符串读取db 按照单字节和ASCII字符串读取dc 按照4字节和ASCII字符串读取dd 按照4字节读取dD 按照双浮点(8字节)格式读取df 按照单浮点(4字节)格式读取dp 按照指针(32位系统读取4字节,64位系统读取8字节)格式读取dq 按照8字节读取du 按照Unicode字符串读取dw 按照2字节读取dW 按照2字节和ASCII字符串读取dyb 按照单字节和二进制读取dyd 按照4字节和二进制读取
  • 显示符号表指令: dds、dps、dqs
这个常用在查看虚函数表、导入地址等操作时使用。
  • 查看ascii字符串数组命令: dda、dpa、dqa
  • unicode字符串数组查看: ddu、 dqu、 dpu

  • 内存写入操作命令: e
写指令是负责按照指定的格式,格式化输出内存数据,对命令中已经看到部分写命令的用法。指令列表:
ea写入ASCII字符串eb写入单字节ed写入4字节eD写入双浮点(8字节)格式ef写入单浮点(4字节)格式ep写入指针(32位系统读取4字节,64位系统读取8字节)格式eq写入8字节eu写入Unicode字符串ew写入2字节读取eza 写入无结束符的ASCII字符串ezu 写入无结束符的Unicode字符串

  • 内存搜索指令: s
内存搜索指令,在查找某种类型的数据的时候非常有用

  • 物理内存读写操作指令
!d 读物理内存
!e 写物理内存
0 0
原创粉丝点击