首页
社区
课程
招聘
[求助]奇异的定位
发表于: 2009-7-14 20:47 4048

[求助]奇异的定位

2009-7-14 20:47
4048
直到昨天,我写了个加壳的程序,主要是为了加深对pe文件格式的熟悉。

   昨天晚上编译通过后,我找来程序做测试,用写好的加壳程序给一个叫Frist.exe的程序加上了壳,Frist.exe是我写的一个小功能的程序没什么用。

   加壳后启动了Frist.exe弹出错误对话框,访问00401000地址读写错误。(并没有做seh处理)

   用od载入了Frist.exe 发现所有偏移的地址都成了00401XXX这让我非常郁闷

   pe段下添加一个.gt的段,rva是5000,段大小是671字节,对齐后是800字节,段Number+1,修改程序入口点,5000+sizeof 宿主代码开头那些定义的用来存放或使用的东西.

     修改完毕,执行程序  发现我所寻址定义的那些数据全部变成了400000+1000+偏移

   并非段定义的rva5000  按原先想象的因该是400000+5000+偏移,却并非如此。

   我想因该是IMAGE_OPTIONAL_HEADER OptionalHeader下的BaseCode的问题,但是并没有试图去修改,因为别人的加壳程序并没有对这个进行改动。

   不知道问题出在哪,希望各位能简要的叙述一下,便移地址是如何进行重定位的和重新地位与pe文件格式下字段的关系。           谢谢大家!

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

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 223
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
400000 这个是 IMAGE_OPTIONAL_HEADER 中的 ImageBase 也就是基地址,一般exe默认是这个值,
PE Image 中的 虚拟地址 = 基地址+ 相对虚拟地址。

这个问题应该是新节中的变量重定位有问题了。仔细看看代码。
一般变量的RVA = 节的RVA + 变量相对于节开始位置的偏移。  当然中间也可以加如一些标号来获取地址,都是把一些偏移加起来就得到变量的偏移了,具体重定位的方法应该很多。
2009-7-15 00:29
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢,不过问题并不在重定位上,我准备自己拿两份代码全方位的测试一便,代码不方便发上来(因为笔记本没连网!!)哎!只有辛苦自己拉!
2009-7-16 19:08
0
游客
登录 | 注册 方可回帖
返回
//