直接修改PE文件头PE标识字段的实验

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

发布了434 篇原创文章 · 获赞 512 · 访问量 294万+

猜你喜欢

转载自blog.csdn.net/bcbobo21cn/article/details/93143486
PE