gpt4 book ai didi

linux - 文件/调用替换,如 LD_PRELOAD

转载 作者:太空狗 更新时间:2023-10-29 12:34:15 26 4
gpt4 key购买 nike

是否有常用的实用程序可以替代某些调用,例如 execveopen?就像调用 LD_PRELOAD 一样。

示例:

  • 我们有 prog_A,它使用 prog_B
  • 几天前 prog_B 更新了,现在 prog_A 失败了!(
  • 通常的解决方案是下一个:

    $: mv /usr/bin/prog_b /usr/bin/prog_B.new
    $: ln -s /usr/bin/prog_b.old /usr/bin/prog_b
    $: ./prog_a # now run

    但有时这是令人不舒服且肮脏的解决方案。在某些故事中,正确的做法是:

    $: util "execve+open+stat:/usr/bin/prog_b=/usr/bin/prog_b.old" ./prog_a

    其中 execve、open 和 stat 是系统调用。这个实用程序的名称是什么?

    最佳答案

    我就专门写一篇FILE_PRELOAD实用程序来解决我的问题。

    $: FILE_PRELOAD -C "execve+open+stat:/usr/bin/prog_b:/usr/bin/prog_b.old" ./prog_a

    它生成 C++ 代码,然后编译它,然后在运行 ./prog_a 之前 LD_PRELOAD 结果 lib.so 文件。

    使用它你可以挂接下一个电话:

    1. 打开,fopen,fopen64
    2. opendir,mkdir,rmdir
    3. 执行
    4. 取消链接,取消链接
    5. stat,lstat,lstat64,_lxstat,_lxstat64,stat64
    6. _xstat,_xstat64,__fxstatat
    7. freopen,freopen64

    请运行docs/tut.sh首先(这是 FP 实用程序的教程)。

    关于linux - 文件/调用替换,如 LD_PRELOAD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16350471/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com