26

JavaScript で書かれた開発ツールの構築に取り組んでいます。

これはオープン ソース プロジェクトではなく、(できれば) 商用製品として販売される予定です。

投資を保護する最善の方法を探しています。難読化ツール (コード マングラー) を使用して、コードを合理的に保護していますか?

私が気付いていない他の選択肢はありますか?

(難読化ツールが正しい言葉かどうかはわかりませんが、コードを取得して非常に判読不能にするアプリの 1 つです。)

4

9 に答える 9

144

秘密を教えます。このことを理解すれば、JavaScript の難読化は、スクリプトをネットワーク経由で送信するときに帯域幅を節約するためにのみ役立つという事実について、よりよく理解できるでしょう。

ソースコードを盗む価値はありません。

これはエゴに衝撃を与えるものであることは承知していますが、あなたが書いたコード行を見たことがなくても、自信を持ってこれを言うことができます。なぜなら、深刻な魔法が起こるごくわずかな開発領域の外では、すべてのソースコードに当てはまるからです。

明日、だれかが Windows Vista のソース コードを含む DVD の山をあなたの玄関先に投げ捨てたとします。あなたはそれで何ができるでしょうか?確かに、それをコンパイルしてコピーを配布することはできますが、それは製品版をコピーするよりも 1 歩手間がかかるだけです。ライセンス チェック コードを丹念に見つけて削除することもできますが、それは、優秀な子供が既にバイナリに対して実行したことです。ロゴとグラフィックを差し替えて、自分で書いたふりをして「Vicrosoft Mista」として売り込む?あなたは捕まるでしょう。

コードを読み、理解しようとして、Microsoft が製品の開発に投資した真の「知的財産を盗む」ことに膨大な時間を費やす可能性があります。しかし、あなたはがっかりするでしょう。コードは、次々と行われる日常的な決定の長い一連のものであることがわかります。あなたが考えているよりも賢い人もいます。あそこでどんな種類のサルを雇っているのかと首を横に振る人もいます。ほとんどの人はあなたを肩をすくめて「ええ、それがあなたのやり方です」と言うだけです.

その過程で、オペレーティング システムの作成について多くのことを学ぶことになりますが、それが Microsoft に損害を与えることはありません。

「Vista」を「Leopard」に置き換えても、上記の段落は 1 ビットも変わりません。マイクロソフトではなく、ソフトウェアです。このサイトの半分の人は、このサイトのソースを見ても見なくても、おそらくスタック オーバーフローのクローンを作成できます。彼らはそうしていません。Firefox と WebKit のソース コードは公開されており、誰でも読むことができます。独自のブラウザをゼロから作成してみましょう。また数年後に会いましょう。

ソフトウェア開発は時間の投資です。あなたがやっていることは非常に特別で、誰もあなたのソースを見ずにクローンを作成することはできなかった、あるいは実行可能な (そして簡単に検出可能な) 量のカット アンド ペーストなしで彼らの仕事をはるかに簡単にするだろうと想像するのはまったくの傲慢です。

于 2008-08-27T03:48:07.377 に答える
37

上記のほとんどの回答に深く同意しません。

難読化してもすべてのソフトウェアが盗まれる可能性があるのは事実ですが、少なくとも、ソフトウェアの個々の部分を抽出して再利用することが難しくなります。それがポイントです。

おそらく、誰かが私たちのソフトウェアの最良の部分を盗み、危険な並行処理を行った後、コードを開いたままにして法廷で戦うよりも、難読化を使用する方が安価でリスクが少ないでしょう。

難読化されていないコードのささやき:

  • さあ、私を分析して、私を再利用してください。私を使ってより良いソフトウェアを作ることができるかもしれません。

難読化されたコードは次のように述べています。

  • おいおい。私をクラックしようとするよりも、自分のアイデアを使用する方が安上がりです。
于 2011-03-04T08:30:13.710 に答える
3

誰かに盗まれないようにコードを難読化しようとすると、負け戦になります。カジュアルなブラウザがそれに到達するのを止めることはできますが、献身的な誰かがあなたが使用する手段をほぼ確実に克服することができます.

過去に、私は人々がいくつかのことをしているのを見てきました:

  1. ページの上部に大量の空白を貼り付けて、コードが利用できないことを人々に知らせるメッセージを表示します。実際には、数ページ下にスクロールするだけでアクセスできます。
  2. ある種のエンコーダーを介して実行すると、デコーダーを介して実行できるため、これは非常に便利です。
  3. もう 1 つの方法は、変数名を 1 文字に減らし、空白を削除することです (これも効率的な方法です)。

他にも多くの方法があります。

結局、あなたの努力は、カジュアルなブラウザがあなたのものを見るのを止める可能性が高いだけです. 献身的な人が現れた場合、あなたができることはあまりありません。あなたはこれと一緒に暮らす必要があります。

私のアドバイスは、最も難読化されたコードではなく、最高の製品/サービス/コミュニティを使用して、最も多くの人を引き付け、競争に打ち勝つ本当に素晴らしい製品を作ることです.

于 2008-08-27T03:01:02.560 に答える
1

Web ページにアクセスするすべてのユーザーが、Javascript ソースの動作するバージョンをダウンロードするという事実に常に直面しています。彼らソースコードを持っています。難読化すると、誰かがあなたの努力を盗む目的で再利用するのが非常に難しくなる可能性があります。ただし、多くの場合、誰かが難読化されたソースを再利用することさえできます! あるいは、最悪の場合、手で解き、最終的に理解することもできます。

あなたのような状況の例は、Google マップかもしれません。Javascript ソースは明らかに難読化されています。ただし、本当にプライベートで機密性の高いロジックの場合は、データをサーバーにプッシュし、XMLHttpRequests (AJAX) を使用してサーバーにその情報を処理させます。この設計により、サーバー側に重要な部分があり、より厳密に制御されます。

于 2008-08-27T02:53:19.320 に答える
0

それはおそらくあなたができる最善のことです。十分な献身的な人なら誰でも、おそらくプログラムの難読化を解除できることに注意してください。プロジェクトに着手する前に、それに慣れていることを確認してください。これに関する最大の問題は、サイトで誰がそれを使用しているかを制御することだと思います. 誰かがあなたのコードが掲載されているサイトにアクセスし、その機能が気に入った場合、その人がコードの機能を理解していなくても、読み取れなくても問題ありません。コードをコピーするだけで、自社サイトで使用。

于 2008-08-27T02:49:43.243 に答える
0

誰かがコードを理解したい場合、難読化ツールはまったく役に立ちません。コードはクライアント マシンにまだ存在し、そのコピーを取得して自由に調べることができます。

ソース コードをブラウザに渡して実行する必要があるため、Javascript で記述されたコードを非表示にする方法はまったくありません。

コードを非表示にする場合は、次のオプションがあります。

1) コンパイルされたコード (ソースではない) がクライアントにダウンロードされる環境 (Flash や Silverlight など) を使用します。それが絶対確実かどうかはわかりませんが、Javascript よりもはるかに優れていることは確かです。

2) 作業を行うサーバー側のバックエンドと、サーバーに要求を行うだけのシン クライアントを用意します。

于 2008-08-27T02:50:11.370 に答える
0

はい、 Dean Edward's Packerなどのツールを使用してコードを圧縮するよりも、確実に圧縮すれば十分です。.NET でコンパイルされたコード/IL のリバース エンジニアリングに関して .NET Reflector のようなツールで何ができるかを考えると、投資を完全に保護するためにできることは何もないことがわかります。

一方で、自分のソース コードをリリースする人も、いずれにせよ非常にうまくやっているように見えることを覚えておいてください。人々が知的財産以上のものを求めているのは、彼らの経験です。

于 2008-08-27T02:52:30.087 に答える
0

コード難読化ツールは、最小限の保護が必要なものには十分ですが、実際に保護するには十分ではないと思います. あなたが忍耐強いなら、あなたは本当にすべてを解体することができます..そして私はあなたのためにそれを行うプログラムがあると確信しています.

そうは言っても、最終的にはあなたが作成したあらゆる種類の保護を破るために、誰かがあなたのものを盗用するのを止めることはできません. コードがコンパイルされていないスクリプト言語では特に簡単です。

Java や .NET などの他の言語を使用している場合は、「calling home」などを実行して、ライセンス番号が特定の URL と一致することを確認できます。これは、アプリが常にオンラインに接続されるある種のオンライン アプリである場合に機能します。しかし、ソースにアクセスできれば、人々はその部分を簡単に回避できます。

要するに、javascript は、あなたがしていることには適していません。
あなたがしていることからのステップアップは、おそらくWebサービスバックエンドを使用してデータを取得することです. Web サービスに認証/検証プロセスを処理させます。防弾であることを確認するには少し作業が必要ですが、うまくいく かもしれません

于 2008-08-27T02:56:06.177 に答える
0

これが Web サイトの場合、その性質上、メニュー クリック 1 回でコードを表示できるのであれば、何かを非表示にする理由は本当にあるのでしょうか? 誰かがあなたのコードを盗もうとする場合、彼らはほとんどの場合、最も壊れたコードでさえ人間が読めるようにしようとします。商用 Web サイトを見てください。コードを難読化することはありません。Google アプリからコードを盗む人もいません。コードの盗難が本当に心配なら、他のコンパイル済み言語で書くことをお勧めします。(もちろん、これは webapp 全体を破壊します...) それでも、完全に安全というわけではありません。世の中には多くの逆コンパイラがあります。

本当に、十分な動機を持つ人に直面して、あなたがやりたいことをする方法はありません.

于 2008-08-27T03:06:46.900 に答える