2012-04-30 102 views
2

我正在編寫一個程序,該程序運行pintools,執行動態污點分析並遇到問題。問題是,當用戶通過say,scanf或gets或任何這樣的函數向程序提供數據時,它歸結爲低級別的read(),我可以通過儀器系統調用找到用戶提供的數據,並找到這些數據系統調用執行read()並最終通過查看read()sys調用的參數和返回值來獲取數據!而如果數據是由用戶提供的命令行參數,我不會看到它沸騰到read()系統調用,並且不知道如何獲取這些數據!任何關於這方面的信息都會有幫助。請讓我知道你是否需要進一步的信息,或者如果我在我的問題描述中含糊不清?檢測命令行參數

謝謝你的時間。

回答

2

如果我明白你要做什麼,你應該能夠通過追蹤execve()的sys調用來看到命令行參數。

2

命令行參數通常在char**中出現main方法。

如果你重新定義你的主要方法

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

你應該得到argcargv你的命令行參數和參數的數目,除非您的環境是一個非常奇怪的方式表現。