首页
社区
课程
招聘
关于pe文件节的一个小变形
发表于: 2009-5-24 15:40 4516

关于pe文件节的一个小变形

2009-5-24 15:40
4516
我是个菜鸟,最近学习了一下PE文件文件格式,做了点小变形。不敢
独享,贴出来一起学习。

这个实验比较简单,主要为了验证一件事情。就是 在文件中减小某个节的大小,然后

提升以后各个节在文件中的位置 的这种方法是可行的;

试验过程如下:

首先生成一个非常简单的试验exe文件,源代码是:

#include <iostream.h>

#include <windows.h>

void main()

{

       MessageBox(NULL,"zyf","cap",0);

}

//代码简单吧,一会才是重点;

要验证的想法:减小.text节的大小后,能不能让程序正常运行呢?

为了简单操作,我删掉了.text节最后的100h个字节(这个数也就是sectionalignment的值)。然后开始修改这个exe。

下面说明一下一些基本情况:

这个exe的名称是test.exe.他有5个节信息如下:

节名称
Pointertorawdata

.text
0x100

.rdata
0x22000

.data
0x24000

.idata
0x28000

.reloc
0x29000

下面开始试验:

使用uedit打开test.exe。修改其中的IMAGE_OPTIONAL_HEADER中的SizeofImage域。使这个域减小0x1000个字节;

然后修改各个节表头。其中.text节头是不需要改的。而后的四个节都统一像下面一样改:

修改每个IMAGE_SECTION_HEADER中的PointerToRawdata域,使其减小0x1000个字节。

最后一步要做的就是:

定位到文件的0x21000这个位置,然后删去0x1000个字节。

好了,保存一下。运行自己修改过的exe。哦,成功了。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
...如果把这个段加大.能不能运行?
2009-5-24 21:39
0
雪    币: 124
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
一般是不可以的,因为加载到内存后,各节的相对位置都会变。但是你可以修正所有的地址,使得寻址正确,应该可以。
2009-5-24 22:04
0
游客
登录 | 注册 方可回帖
返回
//