- PR -

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

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

ですが、対策には興味があります。
必要になるだろう場合があまりなさそうだ、という話は多く出ていますが、
「だから、いらないよね」で終わってしまうのはとても残念です。

仮に対策が必要になった場合、と前提を置いてはだめでしょうか?
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2007-05-13 03:23
引用:

rainさんの書き込み (2007-05-13 00:52) より:
仮に対策が必要になった場合、と前提を置いてはだめでしょうか?



誰もいけないとはいっていないと思いますが、
その場合のrainさんの意見はどうなんでしょうか?

私の意見は、必要なのであれば難読化ソフト(Editionの差などはその人、保護対象アプリなりの判断で)
を使えばよいのでは?と思います。

正直、ぐだぐだ言ってないで、必要ならお金払ってでも使えばいいだけですよね。
他人のアプリ(難読化ツール)の権利(単刀直入にお金)は認めないけど、
自分のアプリは保護したいのでしょうか?
#これはrainさんに言っているわけではありません

保護に値するアプリなら、高いお金を払ってでも保護する価値があるはずですよね?
保護する価値のあるアプリを守るためのアプリが高いのはある意味当然でしょう。
しかも需要が多いとまでは言えないなら高くなるのも仕方ないと思います。

また、逆コンパイルは高級言語へとリバースされるからこそ、
メソッドや変数名がaやらbやらになるだけでかなりの効果があると思います。
読む気をなくすどうのこうの以前に欲しい情報の箇所を探すことすら困難になります。

欲しい情報のある箇所を限定できないために、
ほとんど全部のソースを読む覚悟が必要だと思いますし、
その上でaやらbやらのメソッドや変数名を解釈してリバースエンジニアリングする
のは多大なコストがかかるわけで、
そういった価値のあるソフトに対してしか行いないのではありませんか?

そのくらいに価値のあるソフトであれば、
逆コンパイルでなくて逆アセンブルでもするのではないでしょうか?

要は保護したいアプリの価値と保護してくれるツールの価値を
天秤にかけるだけの話だと私は思います。


[ メッセージ編集済み 編集者: よねKEN 編集日時 2007-05-13 03:27 ]
ラフィン
ぬし
会議室デビュー日: 2002/05/23
投稿数: 809
お住まい・勤務地: 外野
投稿日時: 2007-05-13 07:18
 主題からはずれてますが、修正・補足しておきます。

引用:

ラフィンさんの書き込み (2007-05-09 08:56) より:

 フォトスタジオでカメラマンに依頼して写真を撮ってもらった場合、カメラマンはその写真を勝手に他者に販売することはできません。街角で偶然写った場合も同様ですが、写真において肖像権は被写体に、著作権はカメラマンだけでなく被写体にもあります。


 著作権はカメラマンにあります。

 職業(もしくは本格的趣味)で写真を撮っている人なら、人物や他人の所有する土地や建物を撮影する際には原則的に許可を得る必要があることを知っています。そういう人は写真を撮る際に被写体の許可を得、写真を発表する際にも許可を得てやっています。そういう手続きを怠っていた(もしくは知らなかった)としてもよほどのことがない限り問題にはなりません。たまたま通りがかりに写ってしまったとしても無許可で写真を撮られた場合、被写体側は「撮られた写真が何に使われるかわからない」という理由で訴えることもできたはず。

 法律というより主にモラルの問題です。

引用:

 受託開発の場合はこれと同様でそのソースに関してユーザーにも著作権があってもしかるべきだと考えます。そこにはユーザーの戦術レベルの業務改善ノウハウが存在し、それはユーザーにとっては当然守りたいものだと思います。その場合ソースを開発側のみ持つというのは一方的な権利の主張かも。


 「あってもしかるべき」と書いたように、実際にはありません。また「あってもしかるべき」と思うのは著作権でなく、同等な権利(肖像権ではない)です。

 ここで開発側とユーザーで権利の話を議論しているわけではありませんので、「ユーザーはこうしてアイデアを守る必要がある」ではなく、「漏れた場合はユーザーも同様に不利益をこうむる可能性がある」と意識しておきたいよね。という意図で書きました。
はにまる
ぬし
会議室デビュー日: 2003/12/19
投稿数: 969
お住まい・勤務地: 誤字脱字の国
投稿日時: 2007-05-13 09:55
引用:

Jittaさんの書き込み (2007-05-12 22:23) より:
既にある技術だから、評価されないのではないですか?
何人かが、card?との違いを説明するよう求めていますが、その違いを説明せず、ただ「今までにない技術だ」と言い張るばかりです。また、同一性が指摘されているモノを知っておらず、知ろうともしていません。
そういう、「態度の同一性」を感じています。


当スレッドでは、保護対象のソースや技術に市場価値があるか問うてはいない思います。

ただ、人は自ら所有するモノを過大評価する傾向にあり、過敏な自己防衛の結果、過剰なリスク対策に陥る危険性をアドバイスする行為は私も賛成です。また難読化プログラムの価格をリスク対策の判断指標とし価格が”高い”と思うならば再検討する事をお奨めしますね。

しかし私自身も現在の職場では技術的に優位な立場にあり、自分のソースは他社の人に見られても、社内の人間に断りも無くソースを見せたくない心情があります。市場的にもソフトウェア・サービスの提供方法や価値の多様性と伴に.Netのオプションとして逆アセンブルの禁止・許可・承認の選択機能があるといいかもしれません。

企業に対する技術者の利権保護にもなったり。(余談失礼)
はにまる
ぬし
会議室デビュー日: 2003/12/19
投稿数: 969
お住まい・勤務地: 誤字脱字の国
投稿日時: 2007-05-13 10:06
引用:

ラフィンさんの書き込み (2007-05-13 07:18) より:
法律というより主にモラルの問題です。


なんのモラルですか?今議論されている権利は、システム開発の委託契約で確認される事項だと思いますが。

引用:

「漏れた場合はユーザーも同様に不利益をこうむる可能性がある」と意識しておきたいよね。という意図で書きました。


とすればスレに意見をより強固に主張しているという事ですね。

確かに開発者の保護ばかり話が集中しユーザーの知的財産権に対する保護まで議論が及んでいませんでした。技術力を直接のサービスとして考えている技術者に対し、サービス指向の技術者からすれば知的財産権の根幹をなすソースの保護は重要課題であり、前者と価値観が合わない箇所かもしれませんね。


[ メッセージ編集済み 編集者: はにまる 編集日時 2007-05-13 10:09 ]
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2007-05-13 11:35
引用:

はにまるさんの書き込み (2007-05-13 09:55) より:

当スレッドでは、保護対象のソースや技術に市場価値があるか問うてはいない思います。



書きこみをした理由は、この思いがあったからです。
でも私にはうまく書けなかったのであのようになりました。

引用:

よねKENさんの書き込み (2007-05-13 03:23) より:

誰もいけないとはいっていないと思いますが、
その場合のrainさんの意見はどうなんでしょうか?



私自身はよねKENさんに同意です。
どんな手段があり、いくら費用がかかって、どれだけの効果が得られるか。
これを知った上で判断されれば、何も問題ないと思います。

このスレッドは、それらの情報を集めるために建てられたのではないかと思ったわけです。
ラフィン
ぬし
会議室デビュー日: 2002/05/23
投稿数: 809
お住まい・勤務地: 外野
投稿日時: 2007-05-13 12:05
引用:

はにまるさんの書き込み (2007-05-13 10:06) より:

なんのモラルですか?


 特に「なんの」ということはありません。

引用:

とすればスレに意見をより強固に主張しているという事ですね。


 私はそういうつもりはないですが、どう解釈しようとあなたの勝手です。

引用:

確かに開発者の保護ばかり話が集中しユーザーの知的財産権に対する保護まで議論が及んでいませんでした。技術力を直接のサービスとして考えている技術者に対し、サービス指向の技術者からすれば知的財産権の根幹をなすソースの保護は重要課題であり、前者と価値観が合わない箇所かもしれませんね。


 法や契約に定められていなくても、自分のこと以外でも守りたいものはあります。

 この件であなたと対話を続けてもスレのプラスになり難いように思いますのでこのへんで。それともまだ何か明確にしておきたいことがあるならPMください。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-05-13 12:11
私の場合、主に業務用のシステムを構築していますが、
近年ではいわゆるWebサービスが多くなっていますね。

これら「サーバ側におかれるシステム」では、サーバへの潜入がされない限りは
ネットワーク越しに特定のプロトコルでデータをやり取りするだけなので
そもそもバイナリコードから元のソースが解析されることを気にする必要がありません。

こういったシステムでは通信プロトコルがハックされないように気を使うべきでしょう。
つまり、異常データを受けて誤動作しないかどうか。(バッファオーバーランのように…)

ゲーム系、とくに近年流行しているオンラインゲームにおいてはプロトコルを
どのように守るかというのは重要課題です。
ただ、その場合もソースが見られたとしても破られないような作りにする
というのが本質ではないでしょうか。

クライアントにインストールする系統のプログラムにおいては、
ユーザ登録部分などがクラックされないようになっていればよいのかな?
そういう箇所に対しては難読化はある程度の効果があると思います。

クラック対策としてはチェックルーチンの呼び出し箇所をNOPで埋める…
ってことがやりくければよい。
ただし、クラック箇所が特定しにくいという話と、特定された後に
クラックしやすいというのは別なんですよね。

難読化されていようと、場所さえ突き止めれればバイナリエディタで
数バイト書き換えればクラックされてしまうのですから。

実現可能かは置いておいて、たとえばダウンロード販売するソフトが
あったとして、ユーザ登録時のアカウントのハッシュ値を元に
ユーザごとにバイナリを暗号化するようなしかけだとすれば、
一人のクラッカーにクラックされたとしても、他の人のバイナリは
クラックできないわけですよね?

結局は逆コンパイル対策と一口に言うけども、
「何を防ぎたい」のかが重要じゃないですかね。
目的が違えば対策の方法論も変わってくるでしょう?

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