架空の状況:
私がソフトウェア製品をゼロから構築し、それが素晴らしいことをしているとしましょう。唯一の問題は、誰かがコードを見ると、それを非常に簡単に理解し、自分で簡単に構築できることです。
さて、私はコードを最初から100%ビルドし、API呼び出しを組み合わせて使用しています。他の誰もコードの開発に関与していません。
この製品を販売したい場合、私よりはるかに賢い人がすべてをリバースエンジニアリングして、より良い製品を思い付くという保証は何ですか?
今、私はコード全体を断片化することを考えています。たくさんの冗長なコードとたくさんのコメントを追加します。
ソフトウェアコードを暗号化して、デバッグ、トラブルシューティング、およびコードの動作の理解を事実上不可能にするソフトウェアはありますか?それでもいつものように実行しますか?開発者が安心できるように?
プログラムの中で本当に斬新なものはほとんどありません。あなたがあなたのコードに入れる可能性のあるほとんどすべてのものは、他の誰かが自分で発明する可能性があります。一般的に、コードを読んで学ぶよりも簡単です。コードを読むことはそれを書くことよりも難しいです、そしてほとんどのプログラマーはとにかくそれをすることを本当に好きではありません。
そのため、彼らはあなたのアプリを見て「私はそれができる」と考え、次に「それは素晴らしい。そのコードを読んでからコピーする」と考える可能性がはるかに高くなります。彼らがそれを理解していても、あなたはまだ著作権を所有しているでしょう、あなたはまだ最初に市場に出ます。
忘れておくことをお勧めします。
誰かがコードを見ると、それを非常に簡単に理解し、自分で簡単に構築することができます。
したがって、誰にもソースコードを教えないでください。
この製品を販売したい場合、私よりはるかに賢い人がすべてをリバースエンジニアリングして、より良い製品を思い付くという保証は何ですか?
(a)それでそれを売り始めてください今そして市場を獲得してください。リバースエンジニアリングには時間がかかり、その間に市場と「マインドシェア」を獲得します。 (b)リバースエンジニアリングを禁止する条項をライセンス契約に入れます。 (c)製品を入手するすべての人が契約に署名することを確認してください。
今、私はコード全体を断片化することを考えています。冗長なコードと大量のコメントを追加します。
これは、ソースコードを配布する場合にのみ意味があります。その場合、誰もリバースエンジニアリングする必要はありません。彼らはあなたのソースコードを持っています。彼らにそれを与えないでください。
ソフトウェアはありますか...
この仕事をすることを目的としたソフトウェアはたくさんあります。ただし、これはビジネス上の問題に対する技術的な解決策です。すべてのソフトウェアはリバースエンジニアリングできます。これは、ある時点ですべてのソフトウェアを復号化し、CPUが理解できるように難読化を解除する必要があるためです。その時点で、それは本質的に平文です。したがって、正式に言えば、技術的な解決策はありません(改ざん防止HSMで実行されるコードのようなものを除いて)。
私はあなたがビジネスの損失から守るために使うことができるもう一つのビジネスメカニズムがあることを付け加えます、それはこれがすべてであるものです:価格。ライセンシーがコピーを評価して検査を許可しないように価格を高くするか、リバースエンジニアリングがコストをかけられないほど低くします。またはそれを無料にして、サポート契約であなたのお金を稼ぎます。
このようなコードベースを作成するための知識と経験を実際に身に付ければ、難読化は偶発的なIP侵害を阻止することを目的としていることが明らかになります。
あなたのコードを知りたい人はあなたのコードを知っているでしょう。
それが金銭的損失の問題になった場合、裁判所はあなたの保護です。
それがどのように機能するかです。
誰かがいつでもあなたのコードを理解して解決することができます。コードにたどり着く方法がない場合は、システムを使用するだけでも、誰かがプロセスを複製できるようになります。
例:背中を他の人に向けた状態で、水差しを持ってカップに注ぎます。この他の人は、水と重力が物を他の容器に落とすのに優れていることを知っているので、水差しを持ち上げて重力(API呼び出し)を有利に機能させるプロセスを実行できます。彼らはあなたがあなたの前腕でどの角度を使用したか、そしてあなたが使用した非常に卑劣なカップ保持技術を正確に知らないかもしれませんが、彼らは同じプロセスを複製し、時間をかけてそれを改善することができます。
tl; dr:コードを保護することはできません。
競争があなたの現在のものをリバースエンジニアリングしている間に、やるべきことはさらに素晴らしいものを発明することです。それはイノベーションによる競争と呼ばれています。
私は弁護士ではありません
あなたが本当にそれについて心配しているなら、あなたがそれにお金を投資することをいとわない点まで、あなたのコードを(難読化や暗号化のような合理的なものを超えて)保護するのではなく、むしろ特許あなたのアイデアとあなたの芸術。次に、誰かがそれを受け取り、リバースエンジニアリングして、あなたに基づいてより良いプロセスを作成した場合、あなたには法的あなたのお金を得る根拠があります。
トンあなたがしなければならないことがあります、彼らがあなたの考えを採用したことを証明することを含みます(これは簡単ではありません)、しかしこれが世界の飢餓とすべての人文科学の問題の解決策であるならばそれはするべきことです。
downsideの場合、私は推測しますが、おそらくあなたの方法は90%正しいでしょう:
知的財産弁護士は確かにあなたに言うことができます、そして相談の費用はそれほど多くありません。全体として、彼らに相談してから、コードを隠すことに多くの時間を投資する方が安くなります。
幸運を。
気にしないでください。コードが本当に「素晴らしいことをする」場合は、ハッキングされることが保証されます。そして、それは好奇心のためだけです。
コードをリバースエンジニアリングから保護する100%の方法はありません。私たちは何語について話しているのですか?これがC/C++の場合、リバースエンジニアリングはかなり難しく、デバッグ情報などから削除できます。ただし、たとえばJavaの場合、コードを難読化しても、とにかくあなたの仕事の多くを明らかにするいくつかのかなりクールなツール( [〜#〜] jad [〜#〜] のような)です。
これらすべてにもかかわらず、私はあなたがあなたの態度を変えようとするべきだと思います。大企業は単純なソリューションに多額のお金を払っており、今日ではソフトウェアではなくサービスが最も重要であるように思われます(したがって、オープンソフトウェアベースの企業の成功)。ですから、あなたが素晴らしいソフトウェアを持っているなら、誰かがそれを盗むかもしれないことを恐れないでください、むしろそれをうまく売る方法を考えてください。
ソフトウェアコードを暗号化して、デバッグ、トラブルシューティング、およびコードの動作の理解を事実上不可能にするソフトウェアはありますか?それでもいつものように実行しますか?開発者が安心できるように?
これは完全に間違った考え方のIMOです。バスにぶつかったらどうなりますか?あなたの会社は倒産しますか?すべてのデータが火事で破壊されますか?顧客の一人一人にとって、ソフトウェアへの投資の価値は低下し、最終的にはゼロに達します。これは、ソフトウェアを開発したり、トラブルシューティングを行ったりすることができないためです。私はsoそのように多くのお金が無駄になっているのを見てきました、それは恐ろしいビジネスモデルだと思います。
私は自分でソフトウェアを作ることでパンを稼いでいるので、それで生計を立てることの難しさを知っています。それでも、難読化は今日行く方法ではありません。顧客に厳格なライセンス契約を課し、ソフトウェアの再配布についても考えないように、顧客を怖がらせますが、開いたままにしておきます。
これは無駄です。あなたより賢い人が常にいるので、彼らはあなたの難読化をリバースエンジニアリングすることができます。
通常、コードをハッキングして意味のある方法で使用するのに十分賢い人は、自分でコードを実行するのに十分賢く、おそらくあなたよりもうまくやれると思っているので、わざわざあなたのものを盗むことはありません。
あなたのコードをハッキングすることはできるが、それを意味のある方法で利用できない人々について心配する必要はありません。あなたが良い仕事をした場合、これはあなたがした仕事の質を強化するだけです(すべてのくだらないタッチスクリーン電話の模倣者を考えてください)。
彼らはあなたのコードをリバースエンジニアリングしようとしています。何も彼らを止めることはできません..あなたができる唯一のことはそれを難しくすることです。これは、PHPやJavascriptなどの継承的に「オープン」なコードを難読化することから、自己修正のがらくたでコードを散らかすことにまで及びます。
多くの点で、ソフトウェアの一部を価値あるものにするのは、それが提供するクレイジーな技術の進歩ではなく、むしろ私たちが三次的であると考えるかもしれないものだと思いますソフトウェア自体の一部。あなたがそれをサポートするためにそこにいるという事実のように。または、Webサービスとして提供されており、サーバーが実行されていることを確認するためにそこにいることになります。または、それがコミュニティであり、コミュニティをモデレートして構築するためにそこにいるでしょう。
あなたは実際にはsellingコードかもしれませんが、あなたのコードが持っている価値はコード自体に固有のものではなく、むしろ機能とエコシステムから派生していますそれはあなたのコードを囲んでいます。