1

これは奇妙な質問と思われるかもしれませんが、提供した入力からプログラムをクラッシュさせる方法を見つけようとしています。無限ループまたはセグメンテーション違反のように。

プログラムはかなり標準的です。get_line を使用してテキスト ファイルから行を読み取り、その長さを計算します。

私の質問は基本的に次のとおりです。テキスト行の読み取り中にプログラムが何らかの方法でクラッシュする原因となる txt ファイルに入れるトリックを知っている人はいますか?

コードのすべての詳細を確認せずにこれが役に立たない場合は、お詫び申し上げます。このような質問をする方法がわかりませんでした。

4

3 に答える 3

4

コードが素朴に書かれていると仮定すると、次のことができます。

  1. 行数が get_line で使用しているバッファよりも大きいテキスト ファイルを作成します。

  2. ファイルのアクセス許可を変更し、ファイルから読み取る機能を削除します。

  3. 読み取り途中のファイルを削除します。

  4. プログラムがどのように反応するかを確認するには、ASCII 文字の範囲外のデータをファイルに入れます。たとえば、テキスト ファイルではなくバイナリ実行可能ファイルから読み取らせます。

  5. ファイルからの読み取り中に、SIGINT、SIGHUP をプログラムに送信します。

  6. 猫をキーボードの上に寝かせます。

最後に、プログラムがクラッシュする理由を突き止めようとしている場合は、ランダムな推測ではなく、デバッガーを使用してください。

于 2012-04-23T06:16:20.867 に答える
0

使用したOSと端末、およびプログラムが入力をどのように処理するかによって異なります。一部では、空の入力または十分な長さの入力により、プログラムがクラッシュします。

于 2012-04-23T07:47:46.363 に答える
0

まず第一に、経験豊富なプログラマーでなければなりません。次に、OS とマシンがどのように機能するか (optcodes、スタックなど) を十分に理解する必要があります。次に、エクスプロイトとシェルコードについて読むことができます。

于 2012-04-23T07:28:28.067 に答える