- 締切済み
exeファイルの中身を見ることは可能ですか?
exeファイルの中身のソースを確認する方法、つまりC++などの言語に戻す方法はありますか? あるいはバイナリエディタでexeファイルの中身のソースを知る方法はありますか? 自作したexeファイルの中身のソースを勝手に解読されて、同じようなソフトを複製される可能性はありますか?
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- A88No8
- ベストアンサー率52% (836/1606)
こんにちは >exeファイルの中身のソースを確認する方法、つまりC++などの言語に戻す方法はありますか? exe ファイルは、マイクロソフト製OSの規約による手順で機械語に変換されたバイナリファイルです。 従って、バイナリファイルを逆アセンブラなどの手法でニーモニックに戻して、パターンマッチングをするような(超めんどー)プログラム書かれたなら、ある程度は戻せるでしょう。 ある程度とは、exeファイル状態の時デバッグ情報は含まれ無いので定数名、変数名、関数名、その他マクロ、インクルードファイル名、クラス名、インスタンス名..など元のソースを復元するために必要な情報が決定的にありませんので、構文などの雰囲気だけひょっとしたら復元できるかも知れないという意味です。 >自作したexeファイルの中身のソースを勝手に解読されて、同じようなソフトを複製される可能性はありますか? exeファイルからWindowsのソースを復元するよりも動作しているプログラムから、要求事項を読みとって設計仕様書を書けば、著名なOS上で動くものなら、exeファイルの中身を参考にせずとも新たに開発できてしまいます。 例えれば、小説であらすじが判れば、似たようなエピソードの物語を書くのは、元の小説を変にいじるより簡単ということです。 しかし、単にクローンを作っただけでは、当然オリジナリティがないのですぐに判ってしまいます(そんなもの恥ずかしいです)。 また同じOS上で動くものは、その機能の組み立て方も無限のバリエーションがあるわけでもないので似てきてしまいソースを比べたら同じ部分があったということはあり得ます。 独創的なアイデアであって、著作物(プログラム)を守りたいなら著作権法で守られるように考えておくべきでしょう。
- BLK314
- ベストアンサー率55% (84/152)
アセンブラ・レベルでなら完全に読み取れます。 Cの場合は基本的にはソースがないと、exeだけではどうにもなりませんが、 関数名などは容易に想像できる形で埋め込まれているので、 ある程度わかります。 C++は基本的に関数名が変更される(パラメータの情報等が埋め込まれる)ので、Cほど容易には解析できません。(extern "C"を除く) 関数名変更のルールは規定されておらず、完全にベンダーに任せられています。ベンダーによっては、同じベンダーのコンパイラでもバージョンが違うと変更のルールが変わるものもあります。 よってC++の場合、解析は決してたやすくはないと思います。 完全に不可能とはいえませんが... アセンブラとC++の両方に通じていて、使用されたコンパイラにも通じている人なら、完全に復元することは不可能にしても、ある程度の理解はされてしまう可能性は十分にあると考えます。
exeファイルの中にソースの情報がすべて入っているわけではないので、完全には無理だと思います。 ある程度なら、逆コンパイルなどのソフトがあると思います(私はやったことがないので詳しくは分かりません)。 また、exeファイルと別にソースを公開しているオープンソースのソフトもあります。 ただ、普通は、オープンソースでない場合は、元のソースを調べようとするような行為は、作者が禁止していることが多いようです(リバース・エンジニアリング禁止、などの言葉がマニュアルや利用規則などに書かれているなど)。 他人や会社のソフトを使う場合は、取り合えず、そこらへんをチェックしておいた方がよいと思われます。 また自作ソフトの場合は、完全には無理だが、ある程度は可能、ということで、公表する場合は利用条件としてそこは禁止と明記した方が良いと思われます。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
逆コンパイラ用のツールはいくつかあります。 完璧に元に戻せるわけではありませんが、大まかな流れは掴むことができます。 ただ、私はプログラムは、有償無償に関わらず、フリー(日本でのフリーではなく、自由のフリー)で開発しますから、ソースも含めて公開してます。 フリーソフトウェアの定義 - GNU プロジェクト - フリーソフトウェア財団 (FSF) ( http://www.gnu.org/philosophy/free-sw.ja.html )