コンパイルされた形式のソース コードに実際にセキュリティ上の問題があるのだろうか?
ソース コードは既にマシン コードにコンパイルされているため、マシンが既に命令 (つまり、コンパイルされたソース コード) を実行している場合、セキュリティ上の問題は発生しないはずだと考えていました。
オンラインで適切で適切な説明が見つかりませんでした。
コンパイルされた形式のソース コードに実際にセキュリティ上の問題があるのだろうか?
ソース コードは既にマシン コードにコンパイルされているため、マシンが既に命令 (つまり、コンパイルされたソース コード) を実行している場合、セキュリティ上の問題は発生しないはずだと考えていました。
オンラインで適切で適切な説明が見つかりませんでした。
もちろん、セキュリティ上の問題があります。
例:
標準入力から char バッファーに文字を読み取り、プログラマーが入力の長さをチェックしていない単純な C/C++ コードを想像してみてください。このようなコードは、バッファ オーバーフローに対して脆弱です。
リバースエンジニアリング。マシンコードを使用すると、逆コンパイラを使用して高レベルのより読みやすいコードを取得できます。十分な時間があれば、ハードコードされたキーや秘密のアルゴリズムを見つけることができます。たとえば、ハイスコアを送信するときにゲームで使用される暗号化の方法などです。
ランタイム中のメモリ内の変数の改ざん。たとえば、スコア 100 のゲームがあり、実行されたプロセスに割り当てられたメモリでこの 100 を探しているとします。そのような値を持つアドレスが 4 つ見つかったとします。後でさらに 10 ポイントを獲得すると、110 になります。つまり、この 4 つのアドレスをチェックしていて、そのうちのどれに 110 が含まれているかを調べます。最終的に 1 つのアドレスが見つかった場合は、ビンゴです。これで、たとえば 999999 など、好きなもので上書きできます。
コンパイルされたコードの主なセキュリティ上の問題の 1 つは、それが何をするかわからないことです。簡単に調べることができません。これにより、信頼できるソースからコンパイルされたコード (ソフトウェア) のみを実行することが不可欠になります...
たとえば、あなたが好きかもしれない私の数当てゲームを書くかもしれませんが、あなたが数を推測するのに忙しい間、私はあなたのマシン上のすべてのデータをコピーするのに忙しい実行の新しいスレッドを開始していないと誰が言いますか? ?
バッファ オーバーラン、SQL インジェクション、Peek 'n' Poke などの問題がまだ残っている可能性もあります。
コンパイルはセキュリティのためではなく、効率のために行われます。セキュリティを期待してこのような状況になった場合は、難読化について調査したいと思うかもしれませんが、それはまったく別のワームです...