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

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

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

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

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

[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

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

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

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