首页
社区
课程
招聘
[求助]请教怎样写程序能够无需重定位表实现重定位
发表于: 2010-5-11 22:14 5703

[求助]请教怎样写程序能够无需重定位表实现重定位

2010-5-11 22:14
5703
想了解一下怎样写程序可以让生成的目标代码不需要重定位表就可以安放到任意地址?有这方面的编程规范和经验的请指导一下。

补充:是指C/C++/Delphi这类高级语言程序,复杂的算法完全用宏汇编写太过麻烦。

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

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 237
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
自己顶一下。另外我不希望用rebase的办法啊,那样代码还是不能自由安放到任意地址。
2010-5-12 18:16
0
雪    币: 614
活跃值: (883)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
http://blog.csdn.net/Mi_Bo/archive/2009/06/30/4311254.aspx
到我的博客里看吧。里面介绍得很详细
2010-5-14 14:52
0
雪    币: 237
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
你的博客里面还是用的汇编啊。用汇编写我也会的。但我不是写病毒,要实现比较复杂的算法,所以你那个办法我用不了,需要的是高级语言的可移动代码编程规范和方法。不过还是谢谢回复。
2010-5-14 18:15
0
雪    币: 45
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
win32汇编中讲过用高级语言是无法实现具有重定位功能的代码的。所以我想你的要求可能无法实现。
2010-5-15 09:28
0
雪    币: 237
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
那是win32汇编作者知识局限。VC++生成的安腾处理器代码默认就是代码可重定位的。Linux for x86和PPC那些就不说了,他们的动态库基本要求就是要编译器生成的代码可重定位。

我这个帖子讨论的是windows下的代码重定位生成问题,有啥想法都欢迎提出来讨论。
2010-5-15 15:41
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
7
代码放置到任意位置,
自己写个CodeLoader就行了~

如果觉得比较麻烦可以把代码做成伪代码,自己写个解释器来就行了~
2010-5-15 15:52
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
8
当然如果你写的是HAL.dll这样BT早的东西,你完全可以自己指定自己的LoadAddress和MapAddress~
2010-5-15 15:56
0
雪    币: 237
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
解释器效率太低了,我是做类似VM的东西。自己写loader搞得有点象加壳,不如代码自己本身就可以搬运自己更方便。目前有大致的思路了,得象写Driver那么写,当然比Driver还要严格,全局变量和常量以及外部函数都需要妥善处理。再看看从GCC/MinGW那里能不能利用点现成的东西吧。
2010-5-16 00:05
0
游客
登录 | 注册 方可回帖
返回
//