我们想在用户的主要功能之前注入一些功能,并发现LD_PRELOAD
覆盖__libc_start_main
将对带有gcc
的C程序有效。
但是,它不适用于默认情况下可能使用g ++的cpp文件。我们已经转储了符号,并发现了gcc和g ++中的二进制文件之间的区别。用g++
编译后,libc start主函数被重命名,我们不知道如何覆盖它。
我可以使用__attribute__((constructor))
而不是覆盖__libc_start_main
在主要功能之前添加逻辑。
这可能是g++
和gcc
之间的实现方式的不同,我们可能不会用g++
的当前实现方式覆盖它。如果我错了,请发表评论并通知我。