有关PE文件格式的疑问
IMAGE_DOS_HEADER MyDos;
IMAGE_NT_HEADERS MyPe;
FILE *fp;
fp = fopen( "d:\\sys1.exe ", "r+b ");
fseek(fp, 0 , 0);
if (MyDos.e_magic == IMAGE_DOS_SIGNATURE)
cout < < "DOS " < <endl;
else
cout < <IMAGE_DOS_SIGNATURE < <MyDos.e_magic < < "not Dos " < <endl;
fclose(fp);
getchar();
问题:1.只要是我fopen过的文件(包括PE文件与非PE文件)都变成“非win32的合法程序”。
2.fopen一个PE文件,但是MyDos.e_magic 却不等于IMAGE_DOS_SIGNATURE。为什么?难道代码有错吗?
[解决办法]
用 "rb" 方式打开
[解决办法]
楼上正解,看看文档'+'是干什么用的。和PE无关。