gpt4 book ai didi

c - 为什么我的 mprotect 函数使用 5 个参数调用?

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

根据Linux man page for mprotect该函数有 3 个参数:

int mprotect(const void *addr, size_t len, int prot);

但是在我正在分析的程序上运行 ltrace 时,我看到 mprotect 是这样调用的:

mprotect(0x8049000, 4096, 3, 1, 0xb7e057ac)      = 0

第四个和第五个参数是干什么用的?

我使用的是 ltrace 0.5 版。和内核 2.6.24-24-generic

最佳答案

5 是 ltrace 在配置文件中找不到函数描述时将打印的参数数量。 (我认为默认情况下是/etc/ltrace.conf)。

在我的系统上我可以看到相同的行为,但那里没有找到 mprotect,只有 SYS_mprotect。

如果您想再看一下 ltrace 源代码,感兴趣的地方是 output.c,“func = name2func(function_name);”之后的条件语句- 打印 5 个参数如果找不到函数名称的元信息(在这种情况下,name2func 中的线性查找返回 NULL)。

因此,手册是正确的,ltrace 是“错误的”(引用“错误”是因为从技术上讲代码可以正常工作,尽管配置中的 def 可能应该被修复)

关于c - 为什么我的 mprotect 函数使用 5 个参数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1633173/

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