だから、私がすべてを正しく理解したなら
結構です。
それはバイナリファイルであり、そのデータは私たち人間にとって理解不可能です
通常、バイナリファイルは、特にファイルの目的が不明な場合、人間やマシンには理解できません。すべてのバイナリファイルが実行可能ファイルであるとは限らないことに注意してください。バイナリファイルの多くは、機械命令を含まないデータファイルです。ファイルに名前を付けるときにファイル拡張子が使用されるのはそのためです(一部のOS)。。拡張子comは、実行可能ファイルを示すためにCP / Mによって使用されました。。exe拡張子は、別の実行可能ファイル形式を示すためにMS-DOSによって追加されました。* nixesは、execute属性を使用して、実行できるファイルを示しますが、スクリプトだけでなくコードでもかまいません。
他の人がすでに述べたように、数値を含むバイナリファイルは、テキストビューアではなく、16進ダンププログラムまたは16進エディタで表示する必要があります。
ping.exeプログラムの内容の例があります
そのファイルは実際には再配置可能なプログラムであり、そのファイル内のすべてのデータがマシンコードを表すわけではありません。プログラムに関する情報には、必要なダイナミックライブラリ、リンクする必要のあるルーチン、スタックとプログラムとデータメモリの要件、プログラムのエントリポイントなどがあります。ファイル内のアドレスオペランドは、絶対値に計算する必要がある相対値、または解決する必要がある参照です。
おそらくあなたが考えている「プログラムファイル」は、バイナリイメージファイルまたはプログラムメモリのダンプと呼ばれます。このようなファイルには、マシンコードとデータのみが含まれ、すべてのアドレス参照が実行用に適切に設定されます。
アセンブリコードを知っていても(機械語の最低レベル)
アセンブリ言語は機械語と同じではありません。典型的な(高級言語のコンピューターを除外する)CPUは、一度に1つの命令で機械コードを入力として受け入れます。オペランドは、レジスタまたは数値メモリアドレスです。アセンブリ言語は、命令の場所や変数にシンボリックラベルを使用したり、数値演算コードをニーモニックに置き換えたりできる、より高水準の言語です。アセンブリ言語プログラムは、実際に実行する前に、機械語/コードに変換する必要があります(通常、アセンブラー、リンカー、ローダーと呼ばれるユーティリティによって)。
逆の操作である逆アセンブルは、プログラムファイルに対して実行でき、シンボリック情報がある程度失われます。コードとデータの場所を手動で識別する必要があるため、メモリダンプまたはプログラムイメージファイルの逆アセンブルは、試行錯誤です。
ところで、(数値の)マシンコードを読んでコード化できる人がいます。もちろん、これは12ビットのメモリアドレスモードを備えた32ビットCISCプロセッサよりも、8ビットCPUまたはマイクロコントローラの方がはるかに簡単です。