如何在Windbg中查看DLL的rwx权限 等效于Linux下cat /proc/{id}/maps功能
Windbg查看DLL内存rwx权限的方法
你要实现和Linux下cat /proc/{id}/maps一致的查看效果,可以用以下两种操作方式:
方法1:直接全局查询所有内存段(最接近cat /proc/{id}/maps效果)
直接执行Windbg扩展命令:!address
该命令会输出进程所有内存段的完整信息,包含每一段的起始/结束地址、内存权限、关联的模块(EXE/DLL)路径,完全对应Linux下maps文件的输出字段。
如果只想过滤查看所有加载的镜像文件(EXE+所有DLL)的内存段,排除堆、栈、共享内存等无关内容,可以加过滤参数:!address /f:Image
方法2:查询指定DLL的内存权限
如果你只需要查看某一个特定DLL的权限,操作步骤如下:
- 先执行
lm m <DLL名称>拿到目标DLL的加载基地址,比如查询kernel32.dll就执行lm m kernel32 - 拿到基地址后执行
!vprot <基地址>即可输出该内存页的详细权限属性,返回结果里的Protect字段就是对应的权限标识。
权限标识对应关系
Windbg输出的Windows内存权限标识和Linux的rwx标识对应规则如下:
PAGE_EXECUTE=--xPAGE_EXECUTE_READ=r-xPAGE_EXECUTE_READWRITE=rwxPAGE_READONLY=r--PAGE_READWRITE=rw-- 权限后缀带
WRITECOPY的对应Linux maps里的p(私有写时复制)标识,和你示例中的r-xp的p字段对应。
内容的提问来源于stack exchange,提问作者serom
相关产品推荐
相关产品推荐

