• 締切済み

実行オブジェクトからソースを抽出することは可能ですか?

Windows2000からUnixサーバにLAN経由でアクセスして、 gccコマンドでコンパイルしたCの実行オブジェクトファイルから Cのソースを抽出する方法はありますでしょうか。 解答の程、宜しくお願い致します。

みんなの回答

  • noocyte
  • ベストアンサー率58% (171/291)
回答No.4

「元のソースに戻す」ことにこだわるのならばお決まりの答えとして「不可能」と いうことになりますが,発想を変えて「機械語プログラムを,それと (ほぼ) 等価な Cのソースに変換する」という意味に解釈するならば,ある程度は可能です. http://q.hatena.ne.jp/1182501721 デコンパイル?について http://okwave.jp/qa3043962.html

  • alfeim
  • ベストアンサー率58% (114/195)
回答No.3

C言語は静的にリンケージ処理してしまうため、関数名、変数名などは通常失われます(動的リンケージ用に外部公開しているものなどは別ですが・・・)。 あとは処理内容、いわゆるアルゴリズムですが、これはある程度コンパイラが特定できていれば逆変換はある程度は可能です・・・・が、最適化処理など不可逆な変換が入るためかなり難しいと思います。 現実的には逆アセンブル結果をもとに人手でCソースに起こし直す方が現実的でしょうね。実際には逆アセンブルでもコール位置を考慮してくれる逆アセンブラでないとまともに読めない場合がありますけど・・・特にIntel系の場合は。

回答No.2

こんにちは。 実行モジュールから元のCソースへの変換は昔からできないのが常識でした。 今はどうなのでしょうかねー。完全回復は無理だと思いますが、ある程度違った形では回復可能とは個人的に思うのですが。 根本的な目的ななんなのでしょうか? (1) ソースがどこかへ消えてしまったから復元したい。 (2) わけのわからないモジュールがあるので、ソースに復元し内容を理解したい。 (3) 仕様が明解なモジュールであるが、一部の仕様を他でも利用したいのでソースに復元して利用したい。 (4) 商用プログラムに手を加え、別な商品として売りたい(おいおい^^;) 違った方向から考えると解決の糸口がみつかるかも。 といいつつも、上の例なんかどうしようもないですね。 すいません。

  • itohh
  • ベストアンサー率45% (210/459)
回答No.1

こんにちは。itohhといいます。 アセンブラソースまでならば、戻せるでしょうが、Cのソースには戻せません。

ikariya
質問者

お礼

自分でも極力調べてみましたが、探し当てられませんでした。 ありがとうございました。

関連するQ&A

専門家に質問してみよう