检测命令行参数

时间:2012-04-30 05:57:06

标签: c instrumentation

我正在编写一个贯穿pintools的程序,执行动态污点分析并遇到问题。问题是,当用户通过例如scanf或gets或任何此类功能向程序提供数据时,它归结为低级读取(),我可以通过检测系统调用找到用户提供的数据并查找系统调用执行read()并最终通过查看参数获取数据并返回值read()sys调用!然而,如果数据是由用户提供的命令行参数,我不认为它沸腾到read()系统调用,我不知道如何获取该数据!任何有关此信息都会有所帮助。请告诉我您是否需要进一步的信息,或者我的问题描述中是否含糊不清?

感谢您的时间。

2 个答案:

答案 0 :(得分:2)

命令行参数通常来自main中的char**方法。

如果您将主要方法重新定义为

int main(int argc, char *argv[]) {}

除非您的环境以非常奇怪的方式表现,否则您应该在argv中获取命令行参数以及argc中的参数数量。

答案 1 :(得分:2)

如果我理解你要做的事情,你应该能够通过跟踪execve()的sys调用来查看命令行参数。