PE是Microsoft为了让程序在Windows上可移植而做的一种文件格式规定。
Windows在执行exe程序的时候,PE文件加载器会按照约定加载exe程序,所以程序就正常地运行起来了。
比如像EXE,DLL,SYS这种格式的文件就是PE格式文件。
根据PE文件结构知识;
PE头 IMAGE_NT_HEADER 的字段, IMAGE_NT_HEADER.Signature,偏移
+0000h,双字,此处为PE文件标识,值为00004550h,就是字符'P'、'E',加上两个0。
如果修改其中任何一个字节,会导致可执行文件在32位系统中加载失败。
下面来手动修改此字段值,看下会有什么效果。
先准备用记事本来实验;用winhex打开notepad.exe,看下PE文件标识在偏移为000000F0的一行处;
00 00 45 50;倒着看的;winhex面板的第三列标识出字符串'PE';
但是试用版的winhex只能修改保存小于200k的文件;notepad.exe大于200k;
Windows目录下还有write.exe,拿它来做试验;
拷贝到G盘实验;因为Windows目录下有写保护,不能保存修改;
看一下在G盘打开write.exe,可以打开;
用winhex打开write.exe;PE 文件标识在偏移为000000F0的一行处;如下图;
把45 50 修改为37 42;
如何使用winhex修改文件见此;
https://blog.csdn.net/bcbobo21cn/article/details/92281534
然后保存;
然后再运行write.exe,无法运行了;