woo*_*roo 5 c security mprotect re-engineering ltrace
int mprotect(const void *addr, size_t len, int prot);
Run Code Online (Sandbox Code Playgroud)
但是在我正在分析的程序上运行ltrace时,我看到mprotect被调用如下:
mprotect(0x8049000, 4096, 3, 1, 0xb7e057ac) = 0
Run Code Online (Sandbox Code Playgroud)
什么是第四和第五个参数?
编辑:使用ltrace版本0.5.和内核2.6.24-24-通用
谢谢
五是如果在配置文件中找不到函数的描述,则ltrace将打印的参数数量.(我认为默认为/etc/ltrace.conf).
在我的系统上,我可以看到相同的行为,并且在那里找不到mprotect,只有SYS_mprotect.
如果你想再看一下ltrace源代码,那么感兴趣的地方就是output.c,条件是"func = name2func(function_name);"之后的条件. - 如果找不到函数名的元信息,则打印5个参数(在这种情况下,name2func中的线性查找返回NULL).
因此,手册是正确的,它是"错误"的ltrace(引用"错误",因为从技术上讲,代码可以正常工作,尽管配置中的defs应该是固定的)