首页
社区
课程
招聘
[求助]改造exe为dll,手动构造重定位表
发表于: 2008-12-2 18:16 8161

[求助]改造exe为dll,手动构造重定位表

2008-12-2 18:16
8161
有一个exe文件,想要直接调用里面的一段代码,因此想法是把这个exe改造成为DLL,我的做法如下步骤:
1.在主程序中首先加载那些exe中用到的函数,但是我没有重新构建这个exe的导入表,我认为在用loadlibrary的时候,系统还是会照常自动填充这个exe的导入表,这个理解对吗?

2.然后手动构造exe中的重定位表,我没有生成新的重定位段,直接在exe文件的末尾找了一个位置,属于.shared段,然后在其中构造了重定位信息,然后把Directory Table里面的BaseReloce指向这个地址,这样做有问题吗?

然后我就在主程序中直接跳到代码段进行调用,但是调试结果是,系统根本就没有根据我的重定位表进行重定位工作,导致一些地址还是无效,请问各位高手,我这个过程哪里做错了?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 196
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
唉,没人回答,沉下去了,自己顶一下吧
2008-12-5 09:58
0
雪    币: 196
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
关于第一点,其实是错误的,需要在加载后,自己调整所有的IAT。如果第一点不正确,那么第二点也就很难正确了。

我现在想问的是,对于加载exe和DLL,系统到底差别对待在什么地方?它们的格式不都是一样的吗?
2008-12-5 10:00
0
雪    币: 242
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这个没搞过哦,期待高手解答。。。
2008-12-5 10:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
如果是可执行文件,系统是不处理重定位的! 就算有!!
2008-12-10 23:14
0
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
6
PE文件头中optional header的15e偏移(即Dll Flag):exe为0,dll为1.

所以你把这里改成1即可.系统的PE loader检查到这位时会进行导入表初始化等操作,当然包括加载依赖的dll.如果为0,则不进行这类操作.
2008-12-11 09:07
0
雪    币: 204
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我是来向大家学习的。。
2008-12-11 19:56
0
游客
登录 | 注册 方可回帖
返回
//