gpt4 book ai didi

linux - 玩弄 LD_LIBRARY_PATH

转载 作者:太空宇宙 更新时间:2023-11-04 11:32:19 30 4
gpt4 key购买 nike

我读了this article recently ,为了好玩,我尝试通过执行以下操作来覆盖 libc printf 函数:-

  • 创建一个使用 printf 打印的可执行文件 这是一个测试(printer.c)
  • 创建一个带有自定义 puts 的 c 文件以打印 muhahaha,这是一个测试(custom.c)
  • 创建目标文件 gcc -fPIC -g -c -Wall custom.c
  • 创建一个so文件gcc -shared -Wl,-soname,libmystuff.so.1 -o libmystuff.so.1.0.1 custom.o
  • 我将包含 so 文件的目录添加到 LD_PRELOAD 环境变量中。 导出 LD_PRELOAD=$(pwd)
  • 尝试运行打印机

我想 muhahaha, this is a test 会被打印出来,但看起来我做错了什么。我有什么概念错误吗?还是我只是做错了什么?

[编辑]

涉及的代码片段是:-

// printer.c
int main() {
printf("this is a test");
return 0;
}

// custom.c
void printf(char *t) {
puts("muhahaha, this is a test");
}

最佳答案

您应该在 LD_PRELOAD 环境变量中命名库,而不是目录。

export LD_PRELOAD=/path/to/libmystuff.so.1.0.1

关于linux - 玩弄 LD_LIBRARY_PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10359807/

30 4 0
文章推荐: java - Wicket 7 - 向导完成按钮生成多个 onClick 事件
文章推荐: c++ - 我怎样才能有效地使用 boost::progress_display 的回调?
文章推荐: html -
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com