私はコンパイラの魔法についてよく知りません。人間が読めるコード (または実際には読めないアセンブリ命令) を機械コードに変換する行為は、私にとっては魔法と組み合わされたロケット科学です。
この質問の対象を Win32 実行可能ファイル (.exe) に絞り込みます。これらのファイルを専用のビューアーで開くと、さまざまな場所に文字列 (通常は 1 文字あたり 16b) が散らばっていますが、残りはただのゴミです。読めない部分(大部分)はマシンコード(または画像などのリソースかもしれません...)だと思います。
マシンコードを読み取る簡単な方法はありますか? exe をファイル ストリームとして開き、バイト単位で読み取る場合、これらの個々のバイトをアセンブリに変換するにはどうすればよいでしょうか? これらの命令バイトとアセンブリ命令の間の直接的なマッピングはありますか?
.exeはどのように書かれていますか? 命令ごとに 4 バイト?もっと?以下?一部のアプリケーションが実行可能ファイルをこのように作成できることに気付きました。たとえば、ACD See では、一連の画像をスライドショーにエクスポートできます。ただし、これは必ずしも SWF スライドショーである必要はありません。ACD See は実行可能なプレゼンテーションを作成することもできます。それはどのように行われますか?
EXE ファイル内で何が行われているかを理解するにはどうすればよいですか?