残念ながら、ソースコードを紛失し、Linuxのgccで作成された出力ファイルがあり、PCにアクセスできません。出力ファイルをソースファイルに変換する方法はありますか(LinuxのCでは)?
牛を飼っていたが、うっかりしてハンバーガーに変えてしまい、牛を元に戻したくなった。
申し訳ありませんが、この方法では機能しません。
バックアップからソースファイルを復元するだけです。
ああ、バックアップがありませんでした。残念ながら、宇宙はそのための休憩を与えません。
decompile バイナリを使用できます。それはあなたのソースコードを与えることはありませんが、同じ振る舞いのsomeソースコードを与えるでしょう。デバッグバイナリでない限り、変数名は取得できません。最適化なしでコンパイルしない限り、まったく同じロジックは得られません。もちろん、コメントは得られません。
私は Boomerang を使用して一部のプログラムを逆コンパイルしましたが、その結果はマシンコードよりも読みやすくなりました。それが最高のツールかどうかはわかりません。とにかく、奇跡を期待しないでください。
実行可能ファイルのリバースエンジニアリングでは、いくつかのツールが一般的です。
私が見たほとんどの場合、コードは最初から書き直すか、アセンブリ言語プログラムとして維持するか、古いバージョンに変更要求を再適用することによって再構築する必要がありました。
やりたいことを「逆コンパイル」といいます。そこには多くの逆コンパイラがあり、それらすべてをここでカバーすることは現実的ではありません。
ただし、一般的な注釈として、Cソースから実行可能マシンコードへの変換は不可逆です。例えば:
コードが記述どおりにコンパイルされることはまれです。最近のほとんどのコンパイラーは、コードを大幅に変更して最適化します。したがって、逆コンパイルすると、コンパイラはソースコードがどのように見えるかを推測することしかできません。yourコードが何であるかを知る方法はありません。デコンパイラーが優れている場合、取得したコードは少なくとも同等の実行可能ファイルにコンパイル可能であり、読み取り可能になるようにゆっくりとリファクタリングを開始できます。しかし、おそらくデコンパイラーは絶対に読めないスパゲッティコードを生成し、それを解読することは大きな頭痛の種になるでしょう。場合によっては、プログラムを最初から書き直すだけでless作業になることがあります。