微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 LD_PRELOAD 库中获取命令行参数

如何解决如何在 LD_PRELOAD 库中获取命令行参数

例如,我想从 LD_PRELOAD 库中获取 argv,假设我们调用

    LD_PRELOAD=/path/to/my/fopen ./program input

在我的自定义 fopen 中,我想获得“输入”,因此是我的程序的 argv[1](还有 argv[2] 等等)。 是否有可能?怎么样?

解决方法

读取整个 filledIn 文件。命令行参数用 /proc/self/cmdline 分隔。

请参阅 man proc 了解完整详情。

没有 C 标准库或错误处理的 Linux 示例:

\0

Python 版本供参考:

#include <unistd.h>
#include <fcntl.h>
#include <linux/limits.h>

int main() {
    ssize_t i,n;
    char cmdline[ARG_MAX];
    int cmdline_fd = open("/proc/self/cmdline",O_RDONLY);
    n = read(cmdline_fd,cmdline,sizeof cmdline);
    for(i = 0; i < n; ++i)
        if(!cmdline[i])
            cmdline[i] = ' ';
    cmdline[n - 1] = '\n';
    write(STDOUT_FILENO,n);
    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。