- PR -

逆コンパイル対策について

投票結果総投票数:131
必ずするようにしている 2 1.53%
高価なものだけしている 1 0.76%
全くしていない 128 97.71%
  • 投票は恣意的に行われます。統計的な調査と異なり、投票データの正確性や標本の代表性は保証されません。
  • 投票結果の正当性や公平性について、@ITは一切保証も関与もいたしません。
投稿者投稿内容
blue200102
会議室デビュー日: 2007/05/07
投稿数: 8
投稿日時: 2007-05-07 09:55
blue200102と申します。

逆コンパイル対策について、頭を悩ませています。

開発環境
Visual Studio 2003 VB.Net
SQL Server2000
VB 6.0

元々は、VB6.0をベースに開発を続けていましたが4年ほど前からVB.Netに、徐々に移行しています。
.Netプログラムは、中間言語MSILベースですので、かなりの精度で逆コンパイル出来てしまうようです。Reflector for .NETという逆コンパイルソフトを使って自分のプログラムを逆コンパイルして驚きました。これは、コメント行が無いだけでほとんどソースを渡しているのと変わらないとではないかと。
これは、著作権保護、ノウハウ保護という点で非常に問題です。Visual Studioには、おまけでDotfuscator Community Editionなるものが付いてきますが、名前空間、型、メソッドの名前を変更するだけで、全然、対策になってない気がします。
そこで、皆さんに以下の事を伺いたいと思います。

一、
逆コンパイルに対してどの程度の危機感を持たれていますか?
根幹に関わる問題だ、或いは、別に俺のプログラムを読ませたいやつには読ませてやる等の色んな見解があると思いますが・・・

二、
そもそも、逆コンパイルされるとどんな事が起こるのですか?
自分の作ったプログラムをチョト変えてそのまま売られちゃうとか、一部のロジックを真似されてしまうとかですか・・・

三、
逆コンパイル対策としては、どの様な対策がありますか?
難読化については、難読化するプログラムが発売されているようですか、どれも高額ですね。フリーの難読化プログラムとかないのでしょうか?Javaとかだと有名なフリーの難読化ツールが複数あるようですね。
また、EXE自体を暗号化してしまうという不正コピー防止ツールが、昔からありましたが、あれなんか逆コンパイル対策として有効なんですか?

四、
VB 6.0で開発してコンパイルしたEXEは、マシン語なので、逆コンパイルされても精度が悪く、難解で、解析するには、高いスキルと根気と多大な労力が掛かると聞きましたが、これは、本当なのですか?

五、
逆コンパイル、難読化、EXEの暗号化等について、何か意見や見解、体験談等が御座いましたら、是非、聞かせてください。


最後に投票にご協力いただけたらと思います。
質問:ソフトに難読化やEXEの暗号化等の逆コンパイル対策をしているか?
(もちろん、フリーソフトとかオープンソースとかは、除いてです。)

以上、長くなりましたが、よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-05-07 10:05
逆コンパイル対策について [microsoft.com]

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
blue200102
会議室デビュー日: 2007/05/07
投稿数: 8
投稿日時: 2007-05-07 10:32
引用:

じゃんぬねっとさんの書き込み (2007-05-07 10:05) より:
逆コンパイル対策について [microsoft.com]





うっかり書き忘れて申し訳ありません。
数日前に、MSのフォーラムに、同様の内容を投書しました。
しかし、考えてみたら、マイクロソフトのフォーラムなので、逆コンパイルという微妙な事柄なので、マイクロソフトに対して遠慮がある人もいるのかもしれないと思いこちらでも立ててみた次第です。
というのは、そもそも、マイクロソフトは、Visual Studioには、Dotfuscator Community Editionなどとケチな事を言わないで、もっと本格的な難読化ができるProfessional Editionを付けるべきだったと考えます。
ソフト開発で飯を食っている者にとって、自分の苦労して考えたロジックをちょっと変えただけで、別のところに売られてしまうような事は、悔しくてたまりませんし、同時に死活問題であります。
そもそも、マイクロソフトは、旗を振って、.Netを推し進めたのだから、我々プログラマーの権益を守る義務があると思います。事実上の独占企業であるマイクロソフトは、もう少し、やさしさを持ってほしいと思っています。

BackDoor
ぬし
会議室デビュー日: 2006/02/20
投稿数: 831
投稿日時: 2007-05-07 11:14
価値観の相違かな。

引用:
blue200102さんの書き込み (2007-05-07 10:32) より:

ソフト開発で飯を食っている者にとって、自分の苦労して考えたロジックをちょっと変えただけで、別のところに売られてしまうような事は、悔しくてたまりませんし、同時に死活問題であります。


著作権ってご存知ないですか?
# プログラムの表現自体は法律によってきちんと保護されていますけど・・・。

一昔前のメインフレーマで、ソースコード&PG仕様書込みで納品物としていたせいか
本題に関してのMS社の対応には全く問題を感じておりません。
JAVAにしても簡単に逆コンパイルが可能なので、.Netに関してもその部分を意識して
いるのではないでしょうか?

# オープンソース系でもかなりのアルゴリズムが公開されているしねえ。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2007-05-07 11:54
引用:

blue200102さんの書き込み (2007-05-07 09:55) より:
一、
逆コンパイルに対してどの程度の危機感を持たれていますか?


危機感はさほど持ちません。プログラムですから、CPU は読めるわけです。人間も読めてあたりまえだと思います。

引用:

blue200102さんの書き込み (2007-05-07 09:55) より:
二、
そもそも、逆コンパイルされるとどんな事が起こるのですか?
自分の作ったプログラムをチョト変えてそのまま売られちゃうとか、一部のロジックを真似されてしまうとかですか・・・


チョト変えてそのまま売られることはまずないと思います。ちっとも変えずにそのまま売られることはもしかしたらあるかもしれませんが。
真似はされるかもしれません。

引用:

blue200102さんの書き込み (2007-05-07 09:55) より:
三、
逆コンパイル対策としては、どの様な対策がありますか?


手軽に使えるオブファスケーターを使う程度にとどまるか、ASP にしてしまうかでしょうか。(最近は ASP と言わずに別の用語を使うみたいですが。)
あるいは、「解読おめでとう。こんなしょうもないプログラムをわざわざ解読するのは、あなたぐらいなものですよ。」ということが、解読すると分かるような感じで埋め込んでおくといいかも。

引用:

blue200102さんの書き込み (2007-05-07 09:55) より:
四、
VB 6.0で開発してコンパイルしたEXEは、マシン語なので、逆コンパイルされても精度が悪く、難解で、解析するには、高いスキルと根気と多大な労力が掛かると聞きましたが、これは、本当なのですか?


たしかに、難読かもしれません。ただ、解読の需要が少ないせいもあると思います。VB で書かれたどうでもいいようなプログラムを手間と時間をかけて解読しようと思う人はそんなに多くはないでしょう。

引用:

blue200102さんの書き込み (2007-05-07 09:55) より:
五、
逆コンパイル、難読化、EXEの暗号化等について、何か意見や見解、体験談等が御座いましたら、是非、聞かせてください。


なにを難読化したいのか、という目的も人によって複数あると思います。二分すると、データーを難読化したいのと、コードを難読化したいのとに分けられると思います。前者は、文字列リテラルや変数名などで、設計書の項目が分かってしまうようなことを嫌がる場合です。後者は、ロジックを覗かれるのが嫌というよりも、ロジックをパクられるのが嫌ということが多いのではないかと思います。
需要としては前者のほうが大きいのではないでしょうか。後者は、プログラマーとしてはたまに頭の中をよぎることもありますが、そんなものわざわざコードを解析してまでやる人はそうはいないと思います。パクるとしたら、外観や操作性のレベルをパクることになることが多いのではないかと推測しますが、そのレベルのパクりはかならずしも悪いことではないと思います。自由競争のレベルであることが多いのではないでしょうか。

#以下、あとで追加。
最後のほうに書いた、「後者は、プログラマーとしてはたまに頭の中をよぎることもありますが」、というのは、パクる側ではなくパクられる側の立場での考えです。こんなに手間をかけて書いたコードをパクられるのは嫌だな、と思うことも一瞬あるのですが、後になって冷静に考えるとそんなものは杞憂であることがほとんどです。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}

[ メッセージ編集済み 編集者: unibon 編集日時 2007-05-07 11:58 ]
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2007-05-07 12:42
そんな、たいそうなコードは書いてない、ってな選択肢は無しですか。

隠したいと思っても、もっと凄いコードがすでに公開されているようなら、
自己満足以上に、隠す意味がないですしね。

例えばGUIコンポーネントにイベントを仕込むのは、
確かに、えらく手間がかかりますが、
本質的には、それほどたいそうなことをしているわけではありません。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2007-05-07 12:44
引用:

というのは、そもそも、マイクロソフトは、Visual Studioには、Dotfuscator Community Editionなどとケチな事を言わないで、もっと本格的な難読化ができるProfessional Editionを付けるべきだったと考えます。


Professional Edition を Visual Studio に付けて Visual Studio の価格が上がったら困りませんか?というか、大多数の開発者は難読化ツールは必要ないと私は思っています。
「自分の苦労して考えたロジック」というのもよっぽどの天才でない限りおよそ独自性はないでしょうし、セキュリティ的に読まれては困る情報をコードに書くのは、.NET や Java のように逆コンパイルが容易なアーキテクチャでなくともご法度です。
どうしても読まれては困るコードは、ネイティブコンパイルできる言語で書くのが筋かな、と思います。それでも逆アセンブルは可能ですが。


引用:

ソフト開発で飯を食っている者にとって、自分の苦労して考えたロジックをちょっと変えただけで、別のところに売られてしまうような事は、悔しくてたまりませんし、同時に死活問題であります。


ライセンスで縛るべきものでしょう。
他社の競合ソフトを作りたい場合、対象ソフトを分析、解析しますが、絶対に逆アセンブル、或いはソースコードを見ないようにする等、競合も気を付けるのが普通です。訴えられたらパーですからね。クリーンルーム方式をソフトウェア開発でも使えという事ですね。ReactOS はクリーンルーム方式らしいですよ。

とは言え、難読化の需要があるのも確かのなで、「必要な人は買えば良い」という話に落ち着きます。
_________________
囚人のジレンマな日々
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-05-07 14:04
既知のアイデアに基づいてのコードが大半なので気にしませんね。

だいたい、いまどきのプログラムなんてのは大規模化していますから
業務で書くのはシチュエーションにあわせてのオーダーメイドの部分がほとんどです。
(そうで無い部分はAPIで提供されているか、有償・無償のライブラリがほとんど)

流用できやしないし、ぱくるぐらいなら書いたほうが早い。
特許が絡むアルゴリズムでも含んでいるなら気にかけるところですが
そういうプログラムを書く仕事に当たったことはないですねぇ。

# どうでもいいホームページを書いている人ほどHTMLのソースを見えないように
# いろいろと工夫しようとするようなものかもしれません。

スキルアップ/キャリアアップ(JOB@IT)