Phi*_*hil 12 c linux assembly relocation self-modifying
出于好奇,我想知道在执行程序期间是否可以重新定位一段代码.例如,我有一个函数,每次执行后都应该在内存中替换这个函数.我们想到的一个想法是使用自修改代码来做到这一点.根据一些在线资源,自修改代码可以在Linux上执行,但我仍然不确定是否可以进行这样的动态重定位.有人有经验吗?
Car*_*rum 8
是动态搬迁肯定是可能的.但是,您必须确保代码完全自包含,或者通过绝对引用访问全局/外部函数.如果你的代码可以完全独立于位置,意味着它所做的唯一引用是相对于它自己的,那么你就可以了.否则,您需要在加载时自行进行修正.
使用GCC,您可以使用-fpic生成与位置无关的代码.传递-q或--emit-relocs链接器将使其发出重定位信息.在ELF规范(PDF链接)在如何使用该迁移信息; 如果您不使用ELF,则必须找到适合您格式的文档.
-fpic
-q
--emit-relocs
归档时间:
16 年 前
查看次数:
3331 次
最近记录: