首页
社区
课程
招聘
[原创]For菜鸟文章:PE文件格式,qduwg翻译
发表于: 2005-12-21 15:50 118664

[原创]For菜鸟文章:PE文件格式,qduwg翻译

qduwg 活跃值
35
2005-12-21 15:50
118664
收藏
免费 7
支持
分享
最新回复 (96)
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
51
不好意思,虽然这是很早的文章,但是kanxue兄建议我的问题还是在这个帖里继续讨论,我只好再叨扰各位了。

本来这个问题很基础,很简单,不应该去骚扰kanxue兄的,可是资质太差,就是不理解,转不过弯来。本文中的PE格式介绍,文字的还行,一旦用编程说明我就晕了。

我的问题是关于简单移动输出表位置,我下面说的都是我的理解,肯定是有问题的,但我不知道在哪,希望大家帮忙分析。



这个图是一个dll文件LordPE截图. 可以看到输出表的位置是0011600,大小是4A,那么假设我想把输出表移动到11700的话,是不是仅仅把这里改掉,然后把内容复制过去就可以了呢? 那些AddressofFunctions,AddressofNames等等的地址需要改动么? 那个函数ToDo的地址需要改么?ToDo这个名称如果更改,十六进制里面对应的ToDo要不要改呢?6660这个RAV要怎么改。

这是手工操作,我是对照着位置复制的,就是输出表位置改到11700,然后把Addressof的那些地址相应改动到新位置的地址,最后结果,dll功能失效了。

然后,我尝试另一种操作,就是用kanxue的PeMove直接移动输出表,我的理解是,在PeMove里面输入原File offset 11600,输入重定位的地址11700,那么输出表就应该从11600移动到11700,结果却不是。

我对比了一下前后文件的不同,发现PeMove移动的不是11600的东西,却是15000位置的内容。所以我这里又不是很理解了,见下图。



图是点击LordPE的 H 按钮,也就是十六进制出来的,描黑部分是自动选中的,我想请问,这部分是不是全部的输出表? 大小正是4A. 如果是,为啥PeMove不是移动的这里呢。 关键是,PeMove移动后的文件也是失去功能了,不知道是不是我操作的问题。

我可能说的很繁琐,也可能没说道点子上,不过这就是我不理解的地方,底子差,很多东西看不懂,只能从笨处下手了。

谢谢楼主和kanxue,谢谢各位。
2007-1-5 09:49
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
52
拜托大家看一看啊,对高手简单,对新手可是很关键哦~~
2007-1-8 21:31
0
雪    币: 200
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
53
有些复杂,等水平再高一点了或者需要的时候再来瞧吧.
2007-6-5 13:24
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
54
谢谢了!非常感谢!厉害,厉害!
2007-6-23 11:43
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
55
看了头痛啊.................................
2007-10-2 19:49
0
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
56
太厉害了真要好好学习了
2007-10-5 22:25
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
57
谢谢学习中阿
2007-10-6 18:16
0
雪    币: 232
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
58
好难学啊。。
2007-10-8 13:00
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
59
还没有入门呢,困惑
2007-12-18 09:26
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
60
不太懂,我得努力了,谢谢
2008-1-10 21:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
61
入门材料,难得!
2008-1-11 21:51
0
雪    币: 215
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
62
于是为了找到一个特殊的RVA指向的信息,你必须计算偏移量好象文件被加载一样。假如知道执行起点在RVA 0x1560, 想从这反汇编代码。要找到文件内的地址,你必须找出在RAM内的按照4096对齐的节,".code"节自内存RVA 0x1000开始,16384字节长,你知道RVA 0x1560的偏移量在那个节内是0x560.找出节在文件内按照512字节对齐,且".code"从0x800开始,那么在文件内的代码执行起点是0x800+0x560=0xd60。
然后反汇编,并发现一个存取地址0x1051d0处的变量.线性地址在加载执行文件时重新分配,并给出优先加载地址。你发现优先加载地址是0x100000,于是我们处理RVA 0x51d0. 这是一个开始于RVA 0x5000的数据区,2048字节长。它开始于文件偏移量0x4800.变量可以在文件偏移量0x4800+0x51d0-0x5000=0x49d0处发现.......

支持支持+谢谢谢谢翻译!

不过,LZ可以吧原文发出来或者给个链接吗?比如上面那段..用汉语直接看好难理解,我翻译成E文才看懂...
2008-1-19 21:10
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
63
好文章,支持一下
2008-1-30 17:35
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
64
太深奥了,收藏,谢谢分享
2008-4-3 10:28
0
雪    币: 191
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
65
这是写给初学者看的吗?
2008-4-9 06:27
0
雪    币: 576
活跃值: (1500)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
66
你好,有个问题请教就是pe文件的code区段里不是有个实偏移和实大小吗?这个值该如何修改??
2008-4-20 05:41
0
雪    币: 124
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
67
辛苦辛苦,真是太感谢了
2008-5-10 09:13
0
雪    币: 107
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
68
收藏!!!谢谢!!
2008-5-10 13:53
0
雪    币: 200
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
69
好文,收藏了
2008-5-10 14:07
0
雪    币: 931
活跃值: (199)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
70
收了,收了,有的学了
2008-5-26 21:26
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
71
[QUOTE=;]...[/QUOTE]
谢谢分享,收藏了
2008-5-29 23:03
0
雪    币: 204
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
72
楼主强悍。。。支持
2008-5-30 01:54
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
73
比较详细,值得收藏!
2008-6-5 14:09
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
74
顶了再看。。
2008-6-6 02:20
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
75
类似的文章我都读了好几篇了 到现在还是所知甚少
2008-6-6 16:02
0
游客
登录 | 注册 方可回帖
返回
//