外部读取进程未共享私有虚拟地址空间所需权限及管理员权限有效性问询
管理员权限读取跨进程内存的权限说明
核心结论
默认场景下,以管理员模式运行的扫描器进程,足够覆盖绝大多数普通进程的虚拟地址空间访问限制,可以正常获取PROCESS_VM_READ权限完成内存读取。
权限判定逻辑
Windows对进程的访问权限校验遵循以下规则:
- 调用
OpenProcess获取目标进程句柄时,系统会优先检查目标进程安全描述符里的DACL规则,匹配请求的权限是否被允许 - 普通用户进程的默认DACL规则,会向本地管理员组(Administrators)开放完全控制权限,天然包含
PROCESS_VM_READ权限项,管理员权限进程的请求默认会通过校验
例外场景(管理员权限也无法读取)
存在三类特殊场景管理员权限也无法跨进程读取内存:
- 目标进程属于受保护进程(PP/PPL级别):系统核心进程、安全软件核心服务、游戏反作弊进程等都属于这类,微软为这类进程增设了高于普通DACL的权限校验规则,仅允许签名符合要求的更高保护级别的进程读取其内存
- 目标进程主动修改了自身安全描述符的DACL,明确拒绝了管理员组的读取权限,这类场景仅出现在定制化的特殊程序中,通用软件几乎不会做此配置
- 目标进程运行在基于虚拟化的安全(VBS)隔离环境中,比如 Credential Guard 保护的凭据进程,内存被硬件级虚拟化隔离,管理员权限也无法直接访问
操作补充
如果你的扫描目标仅包含普通业务进程,不需要额外提权,仅管理员运行即可满足内存读取需求;如果需要覆盖PPL级别的进程,需要额外加载签名符合要求的内核驱动来完成读取。
内容的提问来源于stack exchange,提问作者J.Todd
相关产品推荐
相关产品推荐

