linux - 如何重新映射符号以调用不同的函数

标签 linux gcc elf

我有一个 ELF 共享对象,我想修改它,以便对系统函数 memcpy 的调用实际上路由到 的自定义版本memcpy.

我一直在研究并阅读了有关 PLT 重定向和 ELF 感染的信息,但我仍然不确定如何实现我的目标。

谁能给我一些提示和技巧,或者详细说明 PLT 重定向和 ELF 感染?

问候,

保罗

最佳答案

当您链接可执行文件时,您是否尝试过对 ld 使用 -wrap 选项?它应该重定向符号,以便所有对原始函数的调用(包括库中的函数)都将转到您的替换项。

参见 this example .

[编辑:上面的评论者正确地指出,如果库内联调用 memcpy,除了重建库之外别无他法。]

关于linux - 如何重新映射符号以调用不同的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3608689/

相关文章:

c++ - 为什么在这些不同的情况下数据/BSS 大小会发生变化?

c - 'int main(){ return(0); }' 上的浮点异常 (SIGFPE)

匹配安全 openssl 和不安全 openssl 的正则表达式

linux 2.6.43,ext3,10K RPM SAS 磁盘,在不同文件上进行 2 个顺序写入(直接 io),就像随机写入一样

linux - 无法使用官方驱动程序从嵌入式 Linux 上的红外传感器获取数据

c - 为白痴解释 "g++ not found in PATH"

macos - 可执行文件中公共(public)字符串的含义?

c++ - 使用Boost::Asio套接字读取500ms

c - 警告 : data definition has no type or storage class despite including header

c - 多个 #ifndef 语句 - 应用哪一个