• 締切済み

exeファイルの中身を見ることは可能ですか?

exeファイルの中身のソースを確認する方法、つまりC++などの言語に戻す方法はありますか? あるいはバイナリエディタでexeファイルの中身のソースを知る方法はありますか? 自作したexeファイルの中身のソースを勝手に解読されて、同じようなソフトを複製される可能性はありますか?

みんなの回答

  • A88No8
  • ベストアンサー率52% (834/1602)
回答No.4

こんにちは >exeファイルの中身のソースを確認する方法、つまりC++などの言語に戻す方法はありますか?  exe ファイルは、マイクロソフト製OSの規約による手順で機械語に変換されたバイナリファイルです。  従って、バイナリファイルを逆アセンブラなどの手法でニーモニックに戻して、パターンマッチングをするような(超めんどー)プログラム書かれたなら、ある程度は戻せるでしょう。 ある程度とは、exeファイル状態の時デバッグ情報は含まれ無いので定数名、変数名、関数名、その他マクロ、インクルードファイル名、クラス名、インスタンス名..など元のソースを復元するために必要な情報が決定的にありませんので、構文などの雰囲気だけひょっとしたら復元できるかも知れないという意味です。 >自作したexeファイルの中身のソースを勝手に解読されて、同じようなソフトを複製される可能性はありますか?  exeファイルからWindowsのソースを復元するよりも動作しているプログラムから、要求事項を読みとって設計仕様書を書けば、著名なOS上で動くものなら、exeファイルの中身を参考にせずとも新たに開発できてしまいます。  例えれば、小説であらすじが判れば、似たようなエピソードの物語を書くのは、元の小説を変にいじるより簡単ということです。 しかし、単にクローンを作っただけでは、当然オリジナリティがないのですぐに判ってしまいます(そんなもの恥ずかしいです)。 また同じOS上で動くものは、その機能の組み立て方も無限のバリエーションがあるわけでもないので似てきてしまいソースを比べたら同じ部分があったということはあり得ます。  独創的なアイデアであって、著作物(プログラム)を守りたいなら著作権法で守られるように考えておくべきでしょう。

  • BLK314
  • ベストアンサー率55% (84/152)
回答No.3

アセンブラ・レベルでなら完全に読み取れます。 Cの場合は基本的にはソースがないと、exeだけではどうにもなりませんが、 関数名などは容易に想像できる形で埋め込まれているので、 ある程度わかります。 C++は基本的に関数名が変更される(パラメータの情報等が埋め込まれる)ので、Cほど容易には解析できません。(extern "C"を除く) 関数名変更のルールは規定されておらず、完全にベンダーに任せられています。ベンダーによっては、同じベンダーのコンパイラでもバージョンが違うと変更のルールが変わるものもあります。 よってC++の場合、解析は決してたやすくはないと思います。 完全に不可能とはいえませんが... アセンブラとC++の両方に通じていて、使用されたコンパイラにも通じている人なら、完全に復元することは不可能にしても、ある程度の理解はされてしまう可能性は十分にあると考えます。

noname#130082
noname#130082
回答No.2

exeファイルの中にソースの情報がすべて入っているわけではないので、完全には無理だと思います。 ある程度なら、逆コンパイルなどのソフトがあると思います(私はやったことがないので詳しくは分かりません)。 また、exeファイルと別にソースを公開しているオープンソースのソフトもあります。 ただ、普通は、オープンソースでない場合は、元のソースを調べようとするような行為は、作者が禁止していることが多いようです(リバース・エンジニアリング禁止、などの言葉がマニュアルや利用規則などに書かれているなど)。 他人や会社のソフトを使う場合は、取り合えず、そこらへんをチェックしておいた方がよいと思われます。 また自作ソフトの場合は、完全には無理だが、ある程度は可能、ということで、公表する場合は利用条件としてそこは禁止と明記した方が良いと思われます。

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

逆コンパイラ用のツールはいくつかあります。 完璧に元に戻せるわけではありませんが、大まかな流れは掴むことができます。  ただ、私はプログラムは、有償無償に関わらず、フリー(日本でのフリーではなく、自由のフリー)で開発しますから、ソースも含めて公開してます。  フリーソフトウェアの定義 - GNU プロジェクト - フリーソフトウェア財団 (FSF) ( http://www.gnu.org/philosophy/free-sw.ja.html )  

関連するQ&A

  • exeファイルの中身の関数を調べる

    exeファイルの中身の関数(C言語、WINAPI、DirextXなど)を調べるフリーソフトはないでしょうか?情報が足りないところがあれば補足します。

  • .exeファイルの中身

    いつもお世話になります。 os:windows XPです。 .exeファイルを通常クリックするとアプリケーションが実行されると思うのですが、エディターか何かを使ってこの.exeファイルの中身(プログラム)を見ることは可能なのでしょうか? よろしくお願いします。

  • 二つのexeファイルの比較がしたい

    バイナリエディタで弄ったファイルとオリジナルで、どの部分が変更されているか気になるものがあったので質問させていただきました 改変済みのexeファイルと、改変前のオリジナルexeファイルを自動で照らし合わせてくれるソフトを探しています どなたか宜しくお願いいたします

  • exeファイルの中身を見る方法はありますか?

    あるサイトでexeファイルをダウンロードしたのですが ウイルスが流行している今日、このexeファイルを実行する前に 中身がみれないものかと思いまして質問させてもらいました。 もし中身がみれるフリーソフトなどありましたら あわせて教えて頂けると幸いです。 よろしくお願いします。

  • exeファイルの作り方

    VB勉強用として買った本に、著者の自作ソフトウェアのソースコードと実行可能ファイルが入ったCDがあるんですが、そのデータをデスクトップにコピーしてexeファイルをつくって自分で著者が作ったソフトを使いたいなぁと思っています。exeファイルを作るにはどうしたらいいか調べたところ、ファイル-exe~ でできるらしいのですが、そのようなものが見当たりません。 どうやればexeファイルがつくれるのですか? Visual Stadio2005を使用しています。

  • EXEファイルって何ですか?

    exeファイルっていったいどんな仕組みでソフトを起動させているのでしょうか? コンパイラでアセンブリ言語の状態になっているのがexeファイルなんでしょうか?

  • exeファイル

    最近C言語を始めたのですが 早くも行き詰ってしまいました コンパイラを使って exeファイルを作ったのですが どうすればネット上でそのプログラムを使えるのでしょうか? 拡張子がexeのままだと使えないようなので・・・

  • exeファイルはどのdllを参照すべきか、知っているのでしょうか。

    dllとは、プログラムが実行時に参照するものですよね。 よく使われる機能があらかじめ作られているものですよね。 私はC言語しか知らないので、C言語でプログラミングすることで話を進めさせてください。 (とは言っても、ごく初歩的なプログラムが組めるだけの素人です。) OSはWindowsということにします。 C言語は、関数の集まりでソースが書かれています。 dllも、中身に関数の実体が記述されている、そういうイメージでしょうか。 私がもっと勉強して、複雑なプログラムを組んだりすると、 「あ、これはdllに実体がある機能だから、いちいち実装を書かなくてもいいんだな」 と考えて、ソースファイル( ~.c )の中でその関数を使うだろうと思います。 私がよくわからないのはここからです。 dllにある関数をソースで使って、無事コンパイルして、さあリンクしてexeを作りましょう、 というときに、リンカ(リンクを行うプログラム)は、 「そんな関数、実体がないぞ」 って文句を言ってこないのでしょうか。 いや、リンカは、dllに実体がある関数だということを知っているはず。 でもそれって、いちいち 「この関数はどこどこにある ○○.dll というdllに書いてあります」 というふうに、リンカに教えてあげなくてはいけないのでしょうか。 (それってまさか、ソースに書くわけじゃないですよね? ) それから、 exeファイルっていうのは「この機能はdllに行わせる機能だ」ということを知っているのでしょうか。 dllに行わせる機能だということを知っているとしても、 どのディレクトリにある なんと言う名のdllに その機能が書かれていることまで知っているのでしょうか。 (でもそこまで知っていたら逆に、ディレクトリ構成の違うマシンでは実行できなくなってしまうし。) そういうような原理的なことを教えてください。

  • PHPでexeファイル実行

    C言語でMPG形式の画像ファイルを読み込み、画像処理をしてテキスト形式で画像データを出力するプログラムを作成したのですが、 これをPHPプログラム内で動作させ、テキストデータ(できればバイナリのほうがいい)を読み取りたいと思います。 これはexeファイルをexecやsystem関数で実行することで解決できるのでしょうか? また、C言語の画像処理プログラムが画像を読み込んでからテキストデータを作成するまで1分ほどのタイムラグがあります。 どうすればPHP内の処理でexeファイル実行→exeがデータベースから画像を読み込む→ 1分処理待ち→テキスト作成→作成されたテキストデータをPHPで読み込み とできるのでしょうか? ちなみに、exeファイルとphpで作成した画像データベースはサーバー機に置くつもりです。 テキストデータを介さなくても、C言語プログラムからphpに直接データを渡す方法があればそちらのほうが望ましいです。 連続投稿で申し訳ないのですが、急を要するのでぜひともご解答お願いします。

    • ベストアンサー
    • PHP
  • ファイルの中身

    現在C言語を勉強中です。テキストファイルの読書き パイナリーファイルの読書き、構造体の保存方法まではなんとか理解できたのですが。  mdbファイル(Access)やリッチテキストファイルの中身はいったいどうなっているのですか。データ構造はいったいどうなっているのでしょうか。まったく想像もつきません。ファイルの中身の調べ方等教えてください。 漠然とした質問で申し訳ないのですがよろしくお願いします。

専門家に質問してみよう