小编kri*_*isy的帖子

LD_PRELOAD帮助

我正在尝试使用LD_PRELOAD.

original.cpp

void myPuts() {  
    puts ("Hello myPuts");  
}  
int main() {  
    myPuts();  
    return 0;  
}
Run Code Online (Sandbox Code Playgroud)

hacked.cpp

void myPuts() {  
    std::cout >> "Hello hacked myPuts";  
}
Run Code Online (Sandbox Code Playgroud)

我编译original.cpp:

g++ original.cpp
Run Code Online (Sandbox Code Playgroud)

和hacked.cpp:

g++ -shared -fPIC hacked.cpp
Run Code Online (Sandbox Code Playgroud)

我尝试:

LD_PRELOAD=./hacked.so ./original.out
Run Code Online (Sandbox Code Playgroud)

应该看到字符串"Hello hacked myPuts",出现"Hello myPuts".(如果我尝试"覆盖"puts函数,它可以正常工作)

我错过了什么?

c++ unix shared-libraries ld

3
推荐指数
1
解决办法
1315
查看次数

标签 统计

c++ ×1

ld ×1

shared-libraries ×1

unix ×1