我正在尝试使用 LD_PRELOAD。
原版.cpp
void myPuts() {
puts ("Hello myPuts");
}
int main() {
myPuts();
return 0;
}
黑客攻击.cpp
void myPuts() {
std::cout >> "Hello hacked myPuts";
}
我编译 original.cpp:
g++ original.cpp
和 hacked.cpp:
g++ -shared -fPIC hacked.cpp
我尝试:
LD_PRELOAD=./hacked.so ./original.out
应该看到字符串“Hello hacked myPuts”,由“Hello myPuts”出现。(如果我尝试“覆盖” puts 函数,它可以正常工作)
我错过了什么?