我使用LD_PRELOAD机制加载到二进制程序地址空间中的.so文件。强制使用libc函数在复制函数的情况下使用libc函数
binray程序(不是我的)有它自己的malloc函数的实现。
由于我的模块正在加载到该程序中,它使用程序的malloc而不是libc malloc,从而导致崩溃。
我自己编写了二进制程序(它是opensource),我看到将malloc函数更改为mymalloc函数可以修复问题。
由于在生产环境中,我不能更改二进制程序,我想找到其他解决方案。
在加载程序中存在相同函数的情况下,是否可以强制.so模块使用libc版本的malloc(或任何其他函数)?
任何帮助将不胜感激。
感谢您的回答,但我仍然无法使其工作。还有其他建议吗? – liorix
除非你找到使用dlopen/dlsym的malloc指针,否则我认为你不能这样做。它只是可执行文件的特权来覆盖任何外部公共符号。无论如何,你确定你没有滥用程序的malloc返回的内存吗? – rodrigo