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,无法运行了;

博客介绍了PE是Microsoft为使程序在Windows上可移植的文件格式规定,如EXE、DLL等。还讲解了PE头IMAGE_NT_HEADER的字段,通过winhex手动修改其文件标识字段值,以write.exe为例进行实验,修改后程序无法运行。

被折叠的 条评论
为什么被折叠?



