一个很有难度的问题。关于dll静态合并到exe

Keng 2007-11-06 04:53:04
有一个自己写的动态库。一个导出函数。一个导出变量
节的数量有5个。分别为
.text
.rdata
.data
.rsrc
.reloc
在exe中有4个节分别为
.text
.rdata
.data
.rsrc

目的就是把dll的代码拼接到exe代码的末尾+4的位置(以免代码混乱).合并.text,.rdata,.data,.reloc节.rsrc可以分开
目前我把dll代码拼接到了exe代码末尾.修正了exe其他节的偏移.
修正了.text节
ida察看入口等都正确
但是还没有做
rdata
data
reloc
等节内容的重定项修正等工作
不知道哪位兄弟提提意见。如何用这种合并的话有没有好的方法。
或者有没有类似的程序作为参考
...全文
165 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Keng 2007-11-08
  • 打赏
  • 举报
回复
顶一下。没啥进展。我现在干脆新增一个段来执行代码
shawn_yang 2007-11-08
  • 打赏
  • 举报
回复
com文件才是段内永不变的地址
dxcnjupt 2007-11-08
  • 打赏
  • 举报
回复
好像是罗云彬那本书里面讲的

“因为每个exe打开的时候都是一个新进程,不会地址冲突,所以都是按默认地址执行的,不需要重定位;而DLL会被装载到不确定地址,所以需要做重定位”
Alecksun 2007-11-07
  • 打赏
  • 举报
回复
谁说exe文件是“在固定地址执行,不可移动”的?

和ELF文件一样,PE文件也有默认的装载地址,对于exe来说一般是0x00400000,假如程序被装载到这个地址,那就不需要重定位,否则,所有的绝对地址都要加上一个和默认装载地址和实际装载地址的差值。

我现在的问题是,我找到第一个base relocation块后发现里面的size是3,我觉得不可能啊,光是block的描述就是8字节了,不知道lz能不能share一下执行base relocation的方法?我看看我哪里错了。
dxcnjupt 2007-11-07
  • 打赏
  • 举报
回复
我只做过ELF格式的动态链接器,不过从理论上来说,应该是相通的

合并:
fopen
解析 旧文件头

创建新文件
设置新文件的文件头(和其它头,不知道PE格式叫什么名字)

循环
提取两个旧文件的.text,放置到新文件中
修改新文件头的说明
其它节-结束循环

fwrite新文件
合并完成

重定位:
fopen
找出和“DLL导出符号”相关的重定位项,执行重定位
视具体情况,为这些重定位项加上base relocation
删除这些重定位项
fwrite

有个疑问:exe文件是“在固定地址执行,不可移动”的,那么base relocation是用来干什么的呢??
Alecksun 2007-11-07
  • 打赏
  • 举报
回复
关注,我也在做类似的事,但是对于Base Relocation还不是很清楚。

我主要关注的是exe文件的base relocation, 如果LZ清楚,希望可以share一下。

另外,lz如果要拼接两个文件应该要先做一下静态重定位。然后合并Base relocation
alan001 2007-11-07
  • 打赏
  • 举报
回复
關注

純UP
Keng 2007-11-07
  • 打赏
  • 举报
回复
http://dg.download.21cn.com/file1fk5esindid/utility/fenge/pebsetup.msi
我还是贴个连接上来吧。这个是3.0版。我用高级合并选项合并的文件。确实可以。但是。节不是被合并了。而是新建的节。
有两个.text,其它也一样两个。包括pe节
不过他的思路可以借鉴
Keng 2007-11-07
  • 打赏
  • 举报
回复
我突然发现搞到.rdata节就没有思路了。
我在看雪发了个帖子求助
坛主告诉我 "pebundle等程序有这功能,你可以找个研究下"
人家做防盗链我就不贴连接了。华军有下。天空软件也有下
不过代码量一定很大。反汇编看的话。实在是吃力。
硬着头皮嚼嚼吧。估计pebundle自己还加壳了。先要脱壳

有在搞这块的朋友一起把这个技术补全。让文章加精。大家合力。留下光彩的一笔。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧