只是尝试创建一个新部分并使用#pragma设置其属性会返回此警告:
警告C4330:忽略“.mysec”部分的属性“写入”
简单代码:
#include <windows.h>
#include <stdio.h>
#pragma section(".mysec",execute,read,write)
__declspec(allocate(".mysec")) UCHAR var[] = {0xDE, 0xAD, 0xBE, 0xEF};
void main() { return; }
链接器选项:/ DYNAMICBASE:NO,/ FIXED,/ NXCOMPAT:NO,/ OPT:NOREF
OS /工具:Win x64 / msvc ++ 110
我在MSDN上阅读了一些文章,尤其是http://msdn.microsoft.com/en-us/library/50bewfwa(v=vs.110).aspx,但未找到答案。
感谢。
答案 0 :(得分:2)
我认为这是由execute
标志引起的。我不认为你可以在Windows中有一个包含可写代码的部分。
我可能记得这个错误,但这会出现安全问题,因此不予支持。