-1

コンパイラを破壊するコードを書く可能性はありますか?悪いプログラミング慣行は、コンパイラに害を及ぼす可能性があり、私が書いたコードは、これを行うために特別に設計されたある種のウイルスではないと想定しているような状況につながる可能性がありますか?

4

3 に答える 3

1

いいえ。少なくとも偶然ではありません(これは、「悪いプログラミング慣行」について言及するときにあなたが話していると思います)

通常、何をしてもコンパイラのバイナリには影響しないため、メモリを破損した場合でも、コンパイラを再起動すると完全に「修復」されます。

このルールの主な例外は、コンパイラのバイナリを実際に変更した場合(たとえば、ファイルI / O APIを使用して実行可能ファイルを書き換える場合)ですが、これを誤って行うのは難しいことで有名です。

コンパイラの破損はそれほど簡単ではありません。おそらく、コンパイラのセキュリティの脆弱性を見つけて、それを悪用して結果を変更する必要があります。偶然に行うのは難しく、結果として機能する実行可能ファイルを取得するのはさらに困難です。

コンパイラにウイルスを強制的に生成させたい場合は、これを行うためのはるかに簡単な方法があります。

  • 実際にウイルスのコードを記述し、通常はコンパイルします。この場合、ウイルスのソースコードがウイルスのバイナリに正しく変換されるため、コンパイラは正常に動作しています。
  • コンパイラのバイナリを意図的かつ直接変更します。

インターネットからコードをダウンロードしてコンパイルするとウイルスが発生する可能性があることを懸念している場合は、その懸念が正当化される可能性があります。ただし、前述したように、ウイルスを生成/拡散する別の方法と比較して、コンパイラを適切に悪用することは途方もなく困難です。いずれにせよ、ソースコードを調べることは、実用的な目的のためにそのような懸念を却下するのに十分なはずです。

于 2012-10-07T16:11:53.630 に答える
1

一般的に、コンパイラは静的コードで構成されています。プログラムを実行するたびに、静的コードが最初から再実行されます。そのため、アクセスできない限り、コンパイラを破損することはできません。

コンパイラを使用して拡張できるプログラミング言語があります。ただし、言語を拡張できる場合でも、コンパイラーは実行ごとに新たに起動する可能性があります。さらに、この方法で有害なものをトリガーできる可能性はほとんどありません。

コンパイラのバグがあり、それらがトリガーされる可能性があります。ただし、通常はビルドが失敗するだけです。

これで、があればMakefile、ユーザーがアクセスできるものは何でも変更できます。したがって、アプリケーションを構築すると、望ましくない副作用が発生する可能性があります。インストールスクリプトは、通常、高い特権で実行されるため、もちろんシステムに影響を与える可能性が最も高くなります。

于 2012-10-07T16:18:36.887 に答える
0

いいえ、そのようなコードによってトリガーされる非常に奇妙でありそうもないバグがコンパイラーにある場合を除いて、それは不可能です。

于 2012-10-07T16:09:00.810 に答える