首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何覆盖静态二进制文件的c++启动函数?

如何覆盖静态二进制文件的c++启动函数?
EN

Stack Overflow用户
提问于 2018-06-10 08:01:00
回答 1查看 136关注 0票数 1

LD_PRELOAD技巧可以帮助在运行时动态链接二进制文件,但对于静态链接的二进制文件,它将失败。

我想重写一些c++启动函数(比如更改__libc_start_main__libc_csu_init和其他几个函数的代码)。我正在考虑直接从glibc更改代码,但我想确保没有其他方法可以解决问题。

除了从glibc中更改代码并重新构建之外,还有其他方法可以覆盖c++启动函数吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-10 08:27:31

根据您要排除的内容,您将需要-nostartfiles-nodefaultlibs-nostdlib。然后,您将添加您自己的替代品。如果您的替换是不完整的(很可能),您应该在您自己的库之后添加原始库,比如glibc。链接器按列出的顺序使用它们,因此您的重写现在获得优先级。

隐式链接库的行为就像它们首先出现一样,这就是为什么您需要明确排除它们,然后再重新添加它们的原因。另请参阅g++, static initialization and -nostdlib

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50779516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档