2016-10-01 11 views
0

私はLinux Mint 17.3 OSに逆アセンブラ(または逆コンパイラ)をインストールしようとしています。逆アセンブラと逆コンパイラの違いは何ですか?私は彼らが何であるかという大まかな考えを持っています(名前はかなり自明です)。しかし、まだ少し混乱しています。逆アセンブラはどのように動作し、逆コンパイラとはどのように違いますか?

私は逆アセンブラがプログラムをアセンブリ言語に変換することを知っていますが、それは私には役に立たないようです。また、逆コンパイラが「バイナリファイル」をソースコードに変換することも読んでいます。正確にバイナリファイルとは何ですか?

明らかに、デコンパイラはCに逆コンパイルできません。Pythonと他の同様の言語のみです。では、プログラムを元のCソースコードに変換するにはどうしたらいいですか?

答えて

4

逆アセンブラはアセンブリ言語文にマシンコードを転送する非常に簡単なアプリケーションです - このアクティビティはアセンブラプログラムを行い、厳密な1対1であるため、簡単であることは逆の動作でありますマシンコードとアセンブリの関係逆アセンブラは、特定のCPUを対象としています。実行可能ファイルを作成するために使用されたオリジナルのアセンブラは、ほんのわずかな関連性しかありません。

逆コンパイラは、コンパイルされた高級言語プログラムを機械語から元の形式に再作成することを目指しています。したがって、CまたはForth(コンパイルされていない一般的な言語)コンパイラを逆コンパイルします。たとえ同じコンパイラであっても、元の高水準言語の構造が機械語でどのように表現されるかについては、非常に多くの高水準言語が存在するため、多くの方法があります。コンパイラのモードや状況に応じて異なる戦略)、この操作ははるかに複雑で、元のコンパイラに依存しています(使用されたコマンドラインでさえ、選択された最適化レベルと使用されたバージョンです)。

逆コンパイラの作業の大半は、推測された推測であり、元のプログラムを100%ソースコード形式で再構築することはできません。元のプログラムであった可能性のあるソースコードのバージョン

+0

オハイオ州、それは今よりはるかに良い意味になります。つまり、プログラムの作成時に使用された元のコンパイラとコマンドラインに固有の逆コンパイラを入手するのが理想的です。たとえば、GCCとLinux端末を使用していると仮定してプログラムを変換する逆コンパイラ。 – kashveyron

+1

コンパイラの* version *について言及する価値はあるかもしれません。 – jpmc26

+1

@ jpmc26もっと慎重に読んでください;)二番目のパラ、最後の文は角かっこで – tofro

関連する問題