プロが教えるわが家の防犯対策術!

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

A 回答 (4件)

「元のソースに戻す」ことにこだわるのならばお決まりの答えとして「不可能」と


いうことになりますが,発想を変えて「機械語プログラムを,それと (ほぼ) 等価な
Cのソースに変換する」という意味に解釈するならば,ある程度は可能です.

http://q.hatena.ne.jp/1182501721

デコンパイル?について
http://okwave.jp/qa3043962.html
    • good
    • 0

C言語は静的にリンケージ処理してしまうため、関数名、変数名などは通常失われます(動的リンケージ用に外部公開しているものなどは別ですが・・・)。



あとは処理内容、いわゆるアルゴリズムですが、これはある程度コンパイラが特定できていれば逆変換はある程度は可能です・・・・が、最適化処理など不可逆な変換が入るためかなり難しいと思います。

現実的には逆アセンブル結果をもとに人手でCソースに起こし直す方が現実的でしょうね。実際には逆アセンブルでもコール位置を考慮してくれる逆アセンブラでないとまともに読めない場合がありますけど・・・特にIntel系の場合は。
    • good
    • 0

こんにちは。


実行モジュールから元のCソースへの変換は昔からできないのが常識でした。
今はどうなのでしょうかねー。完全回復は無理だと思いますが、ある程度違った形では回復可能とは個人的に思うのですが。

根本的な目的ななんなのでしょうか?
(1) ソースがどこかへ消えてしまったから復元したい。
(2) わけのわからないモジュールがあるので、ソースに復元し内容を理解したい。
(3) 仕様が明解なモジュールであるが、一部の仕様を他でも利用したいのでソースに復元して利用したい。
(4) 商用プログラムに手を加え、別な商品として売りたい(おいおい^^;)


違った方向から考えると解決の糸口がみつかるかも。
といいつつも、上の例なんかどうしようもないですね。
すいません。
    • good
    • 0

こんにちは。

itohhといいます。

アセンブラソースまでならば、戻せるでしょうが、Cのソースには戻せません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/04/12 14:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!