首页
论坛
课程
招聘
[旧帖] [原创]纯手工添加一个PE节 0.00雪花
2011-3-21 21:23 2084

[旧帖] [原创]纯手工添加一个PE节 0.00雪花

2011-3-21 21:23
2084
标 题: 再写手工打造可执行程序
作 者ID: yulongying
时 间: 2011-03-03

最近在公司时间比较闲暇,所以一直都在论坛闲逛,前段时间看了dncwbc一篇文章
《再写手工打造可执行程序》
http://bbs.pediy.com/showthread.php?t=130261
还写了一篇读后感 《再写手工打造可执行程序 读后感 》
http://bbs.pediy.com/showthread.php?t=130261

含金量比较低,但是对于新手还是有价值的,这里在前两篇文章基础上,探讨下怎么手动添加一个以0填充的section,其实原理都是一样,含金量也是比较低 呵呵 高手莫笑!
要修改的一共有以下几处
1、PE头结构中的 NumberOfSections +1 = 3+1=4



2、然后就是optional header中的SizeOfImage(加载到内存中的总大小)之前是(1+3)*1000=4000,这里再解释下此表达式1代表就是文件头 3代表pe文件中使用了3个section,1000就是SectionAlignment了;现在应该是(1+4)*1000=5000



3、在之前的.text .rdata  .data三个sectionheader后面的空白文件段添加添加一个section header,对此section header分别域进行填充
section name  8个字节:.hawk
加载到内存中的大小 4个字节:1000
VA:最后一个section的VA+1000=3000+1000=4000
在文件中的大小还是:200
文件偏移:最后一个section文件便宜+其大小=800+200=A00
PointerToRelocations PointerToLinenumbers NumberOfRelocations NumberOfLinenumbers 依然均为0
Characteristics 我随便填了40 00 00 40


4、从 新增的section起始便宜A00一直填充0到BFF(大小为200h)


补充:
1、
添加一个section header我们发现是在file header与sections之间对齐之后产生的空隙中,如果不存在空隙或者空隙控件不够40(之前笔误写了40h 谢谢jsjnwms提醒)此方法就不使用了,应该就比较麻烦了,难道要重组pe?这里还请高手解答。
2、我们pe fileheader总大小dncwbc那篇文章计算过了原话:“我们的PE文件头总大小为:64 + 112 + 4 + 20 + 224 = 424,3个节表头的总大小 3 * 40 =120。424 + 120 = 544 byte 转化成十六进制为220h”,现在我们已经添加过一个section header 现在应该为544+40=584 转化成十六进制为248h经过file alignment 200h对齐之后还是400,在这里不需要修改,如果对齐之后有变化那这块也需要修改。



上面仅仅是一个做为菜鸟的见解,如有遗漏之处还请各位多多抛砖指引哈。
上传的文件跟《再写手工打造可执行程序读后感》中的文件用UE简单对比以下就知道那些改动了。

【公告】 讲师招募 | 全新“预付费”模式,不想来试试吗?

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (9)
雪    币: 85
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
狂起来 活跃值 2011-3-21 22:09
2
0
请楼主补图请楼主补图请楼主补图
雪    币: 100
活跃值: 活跃值 (10)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
yulongying 活跃值 1 2011-3-22 09:04
3
0
不好意思 看来企鹅的东东不能盗链呀 哈哈!我把图片从新传到微薄里面了,现在可以了。强烈建议看雪支持在线长传图片功能,很多网站的图片现在都防盗链了 呵呵。
雪    币: 345
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jsjnwms 活跃值 2011-3-22 09:36
4
0
如果间隔不够的话好像是添加不了节表的了,除非把header加长一个对齐的值,那样要改很多东西了。不过要的只有28H字节不是40H
雪    币: 100
活跃值: 活跃值 (10)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
yulongying 活跃值 1 2011-3-22 09:39
5
0
thank you! 笔误 十进制的40 哈哈,
雪    币: 26
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hawkfeilee 活跃值 2011-3-22 10:53
6
0
回个帖子试试 呵呵
雪    币: 0
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
robono 活跃值 2011-3-22 11:22
7
0
试试回复,只能在这里回复
雪    币: 33
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
齐风 活跃值 2011-3-22 11:59
8
0
还是很详细的,很不错的材料,
雪    币: 1
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yangziye 活跃值 2011-3-22 13:21
9
0
权限问题,来看看自己有多少kx了
雪    币: 23
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
sailing之声 活跃值 2011-3-22 15:14
10
0
应该还行,我努力的太慢了。
游客
登录 | 注册 方可回帖
返回