
No.3ベストアンサー
- 回答日時:
>なぜみんなWindowsのソースコードを手に入れないのでしょう。
技術的、社会的に面倒でメリットが無いからです。
ウイルスについては、確かにバグを利用したものもありますが、
その場合でも、既知のバグに対してウイルスを作成する人がほとんどだと思います。
>LinuxのようなWindowsに対抗している会社が、Windowsを研究するためにソースコードを手に入れることなどなないのですか。
私もそうですが、Linuxや*BSDとその周辺の開発者の多くはボランティアとして趣味でコードを書いています。商売でないのですから、Windowsの研究をする必要もありませんよね。
要は、人のコードを真似をして書いて、何が楽しいのか?と言うことなんです。
>もしくは、将棋ソフトを作っている会社が、他社のソフトの将棋の思考の大事な部分を手に入れるとか。
商売なんですから、解析するための時間と手間を考えたら、自分達で作ったほうがコスト面で有利だと思われます。
例えば、ラーメン屋が味の秘密を探るために他店のラーメンを食べるとか、スープを取り寄せて何を調味料に使っているかを調べるとか、そういうことをコンピューターソフト業界がやっているかと思っていたんですが、(ラーメン屋がやっていかは知りませんが)
ソフト業界ではやらないようですね。
ありがとうございました。
No.2
- 回答日時:
逆コンパイルとか言われる手法ですね。
ある程度は可能です。しかし、
価格=単価×個数
のような処理をビルドしたものを逆コンパイルしても、変数名の情報などが無いため、
a=b*c
のようなソースしか得られません。人間が理解するには厳しいです。
また、通常は処理の最適化などが行われるので、厳密に元のソースを復元するのは不可能です。
関数
価格(単価, 個数){価格=単価×個数}
メイン処理
魚の価格=価格(魚の単価, 魚の個数)
肉の価格=価格(肉の単価, 肉の個数)
↓
メイン処理
魚の価格=魚の単価×魚の個数
肉の価格=肉の単価×肉の個数
などとなっていると、関数が見えてこない。
あとは、ライブラリを使ったりしますし。
--
> 簡単に真似されたりすると思うんですけど、
そのために、使用許諾書などにそういう事を行わない場合に限って使用(インストール?)を認めますという旨の記述があります。
法律の条文にあったかはちと不明。
真似していた事がバレて、訴えられて、立証されれば、それによる損害を賠償しなければなりません。
とはいえ、人のソースコードを見るような事も、技術の発展には不可欠という側面もあります。
ソースコードを見なくても、データの並びやふるまいから処理内容が連想できて、設計の参考になる事はあります。
--
> ウィンドウズのEXEから、ソースコードに変換することはできないんですか?
逆アセンブルならば、debugコマンドとかで可能です。
開発環境が入っていると「デバッグしますか?」なんて聞かれて、見たくも無いソースを見せられる場合も…。
> すごい労力になるけど、やることは可能な気がするんですが。
通常は割に合わないので、誰もやりません。
例えば、Windows付属のメモ帳、一人で○○年がかりでとか、○億円かけて人を雇って○年がかりとかで出来るかも知れませんが…。
>逆アセンブルならば、debugコマンドとかで可能です。
できるのであれば、なぜみんなWindowsのソースコード
を手に入れないのでしょう。それとも、手に入れた人が、バグなんかを見つけて、ウィルスを作ったりしてるんですか?
>通常は割に合わないので、誰もやりません。
LinuxのようなWindowsに対抗している会社が、Windowsを研究するためにソースコードを手に入れることなどなないのですか。
もしくは、将棋ソフトを作っている会社が、他社のソフトの将棋の思考の大事な部分を手に入れるとか。
No.1
- 回答日時:
アセンブリ言語への逆コンパイルであれば出来ますね。
C言語のソースへといった場合は、コンパイルするときのパラメータでそういった指定をしておかないと出来ませんし、またコンパイラのベンダーが違うとかバージョンが違うといったことでうまくいかないこともありますね。
蛇足ですが、Javaはソースレベルまで逆コンパイルできるんですよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
実行後にコンパイルに失敗しま...
-
ヘッダーファイル『windows.h』...
-
リトルエンディアン、ビッグエ...
-
signal関数について
-
gccコンパイル時のエラーメッセ...
-
CUnitをDOSベースで使うには...
-
ウィンドウズでobjective cを勉...
-
#ifdef の使い方
-
C言語で作ったらWindowsでもMac...
-
debian/gnu Linuxで並列計算し...
-
C++Builderの選択
-
Cのソースを毎回コンパイルし...
-
AdobeReader8.0の機能を使って...
-
共有ライブラリの内容確認について
-
Ubuntu上でITRONプログラムを作...
-
Visual Basic.NETの処理速度は6...
-
c言語でログイン処理はできます...
-
gccでc++プログラムをコンパイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
実行後にコンパイルに失敗しま...
-
math.hに含まれる関数が使えない
-
シリアル通信の受信待ちについて
-
ビープ音が鳴りません・・・
-
C#で char型とstring型の比較で...
-
c言語です コンパイルした時に...
-
共有ライブラリの内容確認について
-
すべてのリビルド: 0 正常、 0 ...
-
64ビットのlinuxで32ビットメモ...
-
C言語で作ったらWindowsでもMac...
-
MS-BASICの逆コンパイルについて
-
<math.h>ヘッダを入力している...
-
ヘッダーファイル『windows.h』...
-
プレコンパイルの意味を教えて...
-
Verilog_HDLでのdefineとifdef
-
[COBOL] ソースの復帰
-
gcc バージョン違いによるコン...
-
同じEXE・同じファイルで解析結...
おすすめ情報