2

私は、動的な汚染分析を実行するためにpintoolsを実行するプログラムを作成していて、問題に悩まされています。問題は、ユーザーがscanfやgetsなどの関数を介してプログラムにデータを提供すると、それは低レベルのread()に要約され、システムコールを計測してそれらを見つけることでユーザーが提供したデータを見つけることができることです。 read()を実行し、最終的には、read()sys呼び出しのパラメーターと戻り値を調べてデータを取得するシステムコール!一方、データがコマンドライン引数としてユーザーによって提供された場合、read()システムコールに沸騰することはなく、そのデータを取得する方法がわかりません。これに関する情報は役に立ちます。さらに詳しい情報が必要な場合、または問題の説明があいまいな場合はお知らせください。

お時間をいただきありがとうございます。

4

2 に答える 2

2

あなたが何をしようとしているのか理解できれば、sys呼び出しをトレースすることでコマンドライン引数を確認できるはずですexecve()

于 2012-04-30T06:51:05.427 に答える
2

コマンド ライン引数は、通常mainchar**.

メインメソッドを次のように再定義すると

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

環境が非常に奇妙な動作をしていない限り、コマンド ライン引数を で取得し、argv引数の数を で取得する必要があります。argc

于 2012-04-30T06:03:43.990 に答える