dポイントプレゼントキャンペーン実施中!

自力なり、ツールをつかうなりして逆コンパイルすれば、EXE形式から、Cなどのプログラム言語に変換することができるんですよね。

そうすると、ソフトを作っている会社なんかは、自社が力をそそいで作ったプログラムを簡単に真似されたりすると思うんですけど、それでいいんでしょうか。

それから、
ウィンドウズのEXEから、ソースコードに変換することはできないんですか?

すごい労力になるけど、やることは可能な気がするんですが。

A 回答 (3件)

>なぜみんなWindowsのソースコードを手に入れないのでしょう。



技術的、社会的に面倒でメリットが無いからです。
ウイルスについては、確かにバグを利用したものもありますが、
その場合でも、既知のバグに対してウイルスを作成する人がほとんどだと思います。

>LinuxのようなWindowsに対抗している会社が、Windowsを研究するためにソースコードを手に入れることなどなないのですか。
私もそうですが、Linuxや*BSDとその周辺の開発者の多くはボランティアとして趣味でコードを書いています。商売でないのですから、Windowsの研究をする必要もありませんよね。
要は、人のコードを真似をして書いて、何が楽しいのか?と言うことなんです。

>もしくは、将棋ソフトを作っている会社が、他社のソフトの将棋の思考の大事な部分を手に入れるとか。
商売なんですから、解析するための時間と手間を考えたら、自分達で作ったほうがコスト面で有利だと思われます。
    • good
    • 0
この回答へのお礼

例えば、ラーメン屋が味の秘密を探るために他店のラーメンを食べるとか、スープを取り寄せて何を調味料に使っているかを調べるとか、そういうことをコンピューターソフト業界がやっているかと思っていたんですが、(ラーメン屋がやっていかは知りませんが)
ソフト業界ではやらないようですね。

ありがとうございました。

お礼日時:2004/03/04 16:14

逆コンパイルとか言われる手法ですね。

ある程度は可能です。

しかし、

価格=単価×個数

のような処理をビルドしたものを逆コンパイルしても、変数名の情報などが無いため、

a=b*c

のようなソースしか得られません。人間が理解するには厳しいです。


また、通常は処理の最適化などが行われるので、厳密に元のソースを復元するのは不可能です。

関数
価格(単価, 個数){価格=単価×個数}

メイン処理
魚の価格=価格(魚の単価, 魚の個数)
肉の価格=価格(肉の単価, 肉の個数)

メイン処理
魚の価格=魚の単価×魚の個数
肉の価格=肉の単価×肉の個数

などとなっていると、関数が見えてこない。

あとは、ライブラリを使ったりしますし。

--
> 簡単に真似されたりすると思うんですけど、

そのために、使用許諾書などにそういう事を行わない場合に限って使用(インストール?)を認めますという旨の記述があります。
法律の条文にあったかはちと不明。

真似していた事がバレて、訴えられて、立証されれば、それによる損害を賠償しなければなりません。


とはいえ、人のソースコードを見るような事も、技術の発展には不可欠という側面もあります。
ソースコードを見なくても、データの並びやふるまいから処理内容が連想できて、設計の参考になる事はあります。

--
> ウィンドウズのEXEから、ソースコードに変換することはできないんですか?

逆アセンブルならば、debugコマンドとかで可能です。
開発環境が入っていると「デバッグしますか?」なんて聞かれて、見たくも無いソースを見せられる場合も…。


> すごい労力になるけど、やることは可能な気がするんですが。

通常は割に合わないので、誰もやりません。
例えば、Windows付属のメモ帳、一人で○○年がかりでとか、○億円かけて人を雇って○年がかりとかで出来るかも知れませんが…。
    • good
    • 1
この回答へのお礼

>逆アセンブルならば、debugコマンドとかで可能です。

できるのであれば、なぜみんなWindowsのソースコード
を手に入れないのでしょう。それとも、手に入れた人が、バグなんかを見つけて、ウィルスを作ったりしてるんですか?

>通常は割に合わないので、誰もやりません。
LinuxのようなWindowsに対抗している会社が、Windowsを研究するためにソースコードを手に入れることなどなないのですか。

もしくは、将棋ソフトを作っている会社が、他社のソフトの将棋の思考の大事な部分を手に入れるとか。

お礼日時:2004/02/25 15:49

アセンブリ言語への逆コンパイルであれば出来ますね。


C言語のソースへといった場合は、コンパイルするときのパラメータでそういった指定をしておかないと出来ませんし、またコンパイラのベンダーが違うとかバージョンが違うといったことでうまくいかないこともありますね。

蛇足ですが、Javaはソースレベルまで逆コンパイルできるんですよ。
    • good
    • 0

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