Windows 11下修改PE节区特性的异常:移除可读权限仍可执行
Windows 11中PE文件.text节区移除可读权限后仍可执行的疑问
问题描述
我正在编写技术书籍,研究Windows可移植可执行文件(PE)的节区特性,通过Python脚本修改样本程序的.text节区权限:
- 移除执行特性后,程序运行触发段错误,符合预期;
- 移除可读特性后,程序仍能正常执行,结果超出预期。
已重启虚拟机验证该现象,想确认这是Windows 11的已知行为还是潜在Bug,求各位提供见解或建议。
附相关验证材料:
- 修改后权限仍可执行的状态截图
- ObjDump分析结果截图
可能的原因及建议
- 先确认修改操作的有效性:用
dumpbin或PEview等工具检查.text节区的Characteristics字段,确保已正确移除IMAGE_SCN_MEM_READ标记,避免脚本出现偏移计算错误、未正确保存文件等问题; - Windows加载器的隐式权限处理:CPU执行指令必须读取内存中的代码,因此PE加载器可能会强制为
.text节区添加可读权限,即使节区头中未设置该属性,否则程序根本无法加载执行; - 系统兼容性机制:Windows 11为兼容老旧程序,可能会对不合理的节区权限设置做容错处理,自动修正代码段的权限;
- 样本程序的特殊情况:如果测试样本代码量极小或逻辑简单,系统加载时可能合并节区或让其继承其他内存区域的权限,导致权限修改未体现。
内容的提问来源于stack exchange,提问作者Jacob Mohrbutter
相关产品推荐
相关产品推荐

