• ベストアンサー

実行ファイルからソースはみれる?

C言語の実行ファイルとDATファイル(?)という二つがあります。 それで実行できるみたいですが、実行ファイルからソースファイルを見ることはできないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.2

C言語で作られた実行ファイルから、 C言語のソースコードを見ることは、実用的にはまず不可能です。 逆アセンブラというツールがあり、 アセンブラレベルで何をやっているか調べることはできます。 しかし、C言語で書かれたプログラムをアセンブラレベルで読んでも、 あまり理解はできないだろうと思います。 C言語のコンパイルの場合、 ソースコードと実行ファイルの内容がきちっと対応するわけではありません。 そのため、ソースファイルに戻すのは困難です。 また、通常の実行ファイルには、 関数名・変数名の情報も入っていません。 仮にソースに戻せたとしても、関数名は仮の名前になります。 ひどく可読性が悪くなります。 実行ファイルをソースコードに戻すツール(逆コンパイラ)は、 一応あるらしいのですが、 実用レベルのものではなかったと思います。

usui323
質問者

お礼

回答ありがとうございました。 なるほど、よくわかりました。 丁寧な説明ありがとうございました。

その他の回答 (1)

  • Pesuko
  • ベストアンサー率30% (2017/6702)
回答No.1

実行ファイル=EXEですか? コンパイルしてるからみれません。 どうすればみれるか? 見れません。 ディスアッセンブリしても出てくるのはコンパイル時に最適化・マージなどされたCPU固有のアセンブラのみ。 ソースが簡単に見れれば、みんな直ぐにリバースエンジニアリングしてしまいます。

usui323
質問者

お礼

回答ありがとうございました。 そうですね。簡単にできたらまずいんですよね。

関連するQ&A

  • 複数のソースコードで一つの実行ファイルを作る方法

     アバウトな質問で申し訳ございません。  タイトル通り、複数のC言語ソースコードで一つの 実行ファイルを作成したいのですが可能なのでしょう か?(一つのソースに書き直すのは×。)  ご助言お待ちしています。 なお、ディレクトリ構造は以下のようになっています C:\system\test1\test1.c C:\system\test2\test2.c~ C:\system\test10\test10.c (test1.c~test10.cの機能を持った実行ファイルを 作成したい)

  • 実行ファイルからソースがとりだせますか?

    実行ファイルを逆コンパイルしてソースを取り出せたり しますか?

  • Visual Studio で実行ファイルが作れません

    C言語の勉強のため、VisualStudio2005standard を初めて使い始めましたが、ビルドできたのに実行ファイルができません。 ファイル→新しいプロジェクト→プロジェクトの種類→VCC++→win32→コンソールアプリケーション→プロジェクト名の入力→アプリケーションの設定→完了 このように操作したら、ソースフォルダの下に拡張子 .cpp のC++のひな形ができたので、それにソースを書いて、拡張子を .c に替えて保存し、ビルドしたらエラーはありませんでした。 しかし、オブジェクトファイルまたは実行ファイルは作成されていず、メニューの実行コマンドも無効の表示で、実行できませんでした。 操作の誤り、何らかの設定の必要があればご指摘いただきたいです。 よろしくお願いします。

  • eclipse+CDTで実行ファイルとソースが連携しない

    このような質問サイトに投稿するのは初めてなので 至らない点がありましたら、ご指摘ください。 現在以下の環境でcのソースのデバッグを試みています。 redhat9 eclipse3.3 CDT4.0 gdb6.6 gcc4.1.1 ・空のCプロジェクトをつくりソースをインポート ・makefileは既存のものを使用 ・デバッグモードでビルド ・バイナリを作成(更新時間にて新規作成を確認済み) ・必要な箇所にブレークポイントを設定 ・デバッグモードで実行 コンソールにブレークポイントをはったソース(例えばtest.c)について 以下のメッセージが表示されます。 No source file named test.c 実行ファイルとソースが連携しないため、ステップ実行でのデバッグが できない状態です。 F8を押すと実行ファイルは実行されます。 ファイルのパスを通すのかなと、「source lookup path」にフォルダを 指定してみましたが、特に変わらずでした。 上記問題について、何かご存知でしたらご教授ください。 よろしくお願いいたします。

  • C++のソースをコンパイルしてできた実行ファイル

    のトラブルです。ちなみにプログラミングはかなりの初心者です。 サンプルソース等をコンパイルして実行ファイルを作成しても、実行ウィンドウが固まってしまいます。 どのプログラムでコンパイルしても同じです。二台のPCのVisual C++でやってみましたが(VistaデスクトップとXPノート)、どちらでもビルドが正常終了した後実行ファイルを確認するとファイル名の表示されたウィンドウが真っ白のまま固まってます。borlandのC++Builderで作成した実行ファイルも実行ウィンドウが同じ状態になりました。CD-ROM添付のサンプル実行ファイルだけはしっかり表示されました。 猫でもわかるゲームプログラミングで勉強しようとしています。 どなたか分かる方ご回答お願いしますm(_ _)m

  • ソースを2つ作った場合のとき

    こちらのカテゴリーでは初めて質問させていただきます。宜しくお願いします。 先日からC言語を勉強し始めて、ボーランドから無料配布されているやつをDLし、設定までは終わりました。 それで いざプログラム作成しようとしたのですが次のような状態になってしまいました 【ファイル】→【新規作成】→【プロジェクトタブ】からプロジェクト名 をつける。そのあと【新規作成】→【ファイル】→【C/C++ファイル】でファイル名をつける。 そしてプログラムを作成、コンパイルなどをすると、そのときの実行結果はちゃんと出るのでます。(これをソース1とします。) その後同じように【ファイル】→【新規作成】→【ファイル】でプログラムを作り実行をするとここでもまたちゃんと結果を出ます。(これをソース2とします) そのあと先ほど作ったソース1を見直そうとして、もう一度実行するとそのままソース2の結果が出るのですがこういうときはどうすればよろしいのですか? すごく長々となり申し訳ありません。意味不明だったならばもう一度後で書き直します。 それとプログラミングなどは全くの初心者で本当に申し訳ありませんが宜しくお願いします

  • C言語でのソースファイルが・・・

    C言語でのソースファイルが・・・ 最近C言語(MinGW、MSYS)の勉強をしていました。 それで今日も勉強の続きをしようと全てのソースファイルを見たらMSYSでしか開けなかったのが普通にWクリックで開けるメモ帳になっていました。 自分でそのソースファイルに何かをしたわけではなく本を見ながら文字を書いて覚えるみたいな作業をしていただけなので何かをしたというわけではないです。 なのでなにをしてこうなった。何があってこうなった。と言うことがまったくわかりません。 これはもとのソースファイルにもどせるのでしょうか? また予想でいいのでなにが原因か考えてはもらえないでしょうか? 少々現状を理解できなくて質問が曖昧になってます・・・。すいません。 ご回答お願いします。

  • シェルからCで作った実行ファイルを動かすには?

    当方、完全に初心者です。 bashのファイルからC言語の実行ファイルを動かすことは可能でしょうか? いくつかのCの実行ファイルを、引数を指定して実行させたのですが、 どのようにすれば一番効果的でしょうか。引数を変えて何度も実行させたいので、スクリプトを書くと便利かなと考えたのですが。 どのように書けばいいのかがわかりません。 どうぞご教授ください。よろしくお願いします。

  • c言語の実行が分かりません

    C言語のプログラムを実行させる方法が分かりません。 unixでC言語を以下の手順で学習しています。 1 emacs上でファイル名.cというソースファイルを作成。 2 xterm上で gcc ファイル名.c と入力 その後xterm上で後一つコマンドを入力すればいいのですが、そのコマンドを忘れてしまいました。教えていただければ、ありがたいです。

  • アセンブリの実行ファイルをソースに変換する

    アセンブリの実行ファイルをソースファイルに逆アセンブラしたいのですが、方法が見つかりません。 どうすればexeファイルからasmファイルに戻すことが出来るんでしょうか?

専門家に質問してみよう