2

我正在编写一个通过 pintools 运行的程序,以执行动态污点分析并遇到问题。问题是,当用户通过 scanf 或 get 或任何此类函数向程序提供数据时,它归结为低级 read(),我可以通过检测系统调用并找到用户提供的数据执行 read() 并最终通过查看 read() 系统调用的参数和返回值来获取数据的系统调用!然而,如果数据是由用户作为命令行参数提供的,我认为它不会归结为 read() 系统调用,也不知道如何获取该数据!有关此的任何信息都会有所帮助。请让我知道您是否需要更多信息,或者我的问题描述是否模棱两可?

感谢您的时间。

4

2 回答 2

2

命令行参数通常mainchar**.

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

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

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

于 2012-04-30T06:03:43.990 回答
2

如果我了解您要做什么,您应该能够通过跟踪 sys 调用来查看命令行参数execve()

于 2012-04-30T06:51:05.427 回答