9

実行可能なバイナリ ファイルに文字を挿入すると、ファイルが「破損」するのはなぜですか?

また、コンパイルされたプログラムを壊さずに文字を追加する方法はありますか?

バックグラウンド

16 進エディタを使用して、コンパイル済みの実行可能ファイルのコードを変更し、通常どおり実行できることは長い間知っていました...

以下のアプリケーションの例として、Facebookを に変更してLacebookも、プログラムは問題なく実行されます。

ここに画像の説明を入力

ここに画像の説明を入力

しかし、それは新しいキャラクターで壊れます

また、新しいキャラクターを追加すると、プログラムが壊れて実行されなくなったり、すぐにクラッシュしたりすることも承知しています。たとえば、Myの前に追加すると、次のようにFacebookなります。

ここに画像の説明を入力

私が知っていること

わからないこと

  • オペレーティング システムと実行可能ファイルの関係がよくわかりません。プログラムの名前を入力してリターンキーを押すと、基本的にオペレーティングシステムにそのファイルを「実行」するように指示していると思います。これは、基本的に、ファイルをメモリにロードし、プロセッサのポインタをそれに設定し、それを伝えることを意味します'行け!'
  • バイナリ ファイルのテキスト文字列に余分な文字が含まれていると問題が発生する理由を理解しています

知りたいこと

  1. 余分な文字が原因でプログラムが壊れるのはなぜですか?
  2. プログラムが壊れていると判断するのは何ですか? OS?また、OS はこのプログラムをサンドボックス化して、最近システム全体をクラッシュさせないようにしていますか?
  3. コンパイルされたプログラムのテキスト文字列に 16 進エディタを使用して余分な文字を追加し、アプリケーションが壊れないようにする方法はありますか?
4

3 に答える 3