我正在编写一个贯穿pintools的程序,执行动态污点分析并遇到问题。问题是,当用户通过例如scanf或gets或任何此类功能向程序提供数据时,它归结为低级读取(),我可以通过检测系统调用找到用户提供的数据并查找系统调用执行read()并最终通过查看参数获取数据并返回值read()sys调用!然而,如果数据是由用户提供的命令行参数,我不认为它沸腾到read()系统调用,我不知道如何获取该数据!任何有关此信息都会有所帮助。请告诉我您是否需要进一步的信息,或者我的问题描述中是否含糊不清?
感谢您的时间。
答案 0 :(得分:2)
命令行参数通常来自main
中的char**
方法。
如果您将主要方法重新定义为
int main(int argc, char *argv[]) {}
除非您的环境以非常奇怪的方式表现,否则您应该在argv
中获取命令行参数以及argc
中的参数数量。
答案 1 :(得分:2)
如果我理解你要做的事情,你应该能够通过跟踪execve()
的sys调用来查看命令行参数。