1

私はMSMobiles.comブログで、とりわけ次のようなこの投稿に出くわしました。

.Netは多くの点で優れていますが、商用アプリには適していますか?とんでもない!誰でもあなたのソースコードを見ることができます。ハイエンドの難読化ツールは大いに役立ちますが、決心したハッカーなら誰でも1日以内にコードを修正できます。私はこれを、著作権侵害対策および難読化ツールに数千ドルを費やしたにもかかわらず、悲しい経験から知っています。

次に、.NETでの商用Windowsモバイルアプリの開発について次のように述べています。

1日の遅延に備えてください。その後、競合他社があなたの機能をコピーし、同じ機能を備えた独自のアプリをSkymarketに配置します。

.NETに精通している人のために:これは真実ですか、それともナンセンスですか?この問題はどういうわけかWindowsMo​​bileに固有のものですか、それともWindows上の.NETにも当てはまりますか?Microsoftが独自のクライアントサイドソフトウェアを.NETで大量に作成していること(そして多くのベンダーがJavaで高価なアプリを作成していること、これは明らかに同じ問題を抱えていること)を知っているので、これは私には驚きのように思えました。 IPはとても簡単に盗まれる可能性があります。

4

11 に答える 11

9

競争上の優位性とビジネスの成功がコード内のアルゴリズムに依存している場合、すでに失敗しているという単純な理由から、ほとんど意味がないと私は主張します。成功するアプリは、コードだけではなく、多くの要素の1つです。

これがあなたが本当に恐れていることであるなら、私は難読化に投資し、あなたがあなたのコードを盗んだと信じている競合他社にあなたに代わって排除措置の手紙を送る法律顧問(かなり安いと信じられないかもしれません)に前払いします。これは法的にほとんどどこにも行きませんが、行動の脅威はまさにあなたの最も効果的なツールです。

于 2009-01-31T01:43:58.420 に答える
5

.NET アプリケーションの逆コンパイルの容易さについては、まだいくつかの真実があります。(これは、Windows Mobile で実行されているものだけでなく、すべての .NET アプリケーションに適用されます。)

無料ツールと商用ツールの両方を使用して、コンパイル済みのアセンブリを取得し、ソース コードを取得するのは比較的簡単です。(単純に Reflector を見てください。) そうは言っても、難読化ツールを使用できます。これは、大多数の人々を阻止しますが、熱心なハッカーを遅くするだけです。

それにもかかわらず、ほとんどすべての言語用の逆コンパイラがあり、会社 (または個人) が製品の内部を確認することを決定した場合、彼らは何があっても方法を見つけます。

あなたが参照している投稿を読むと、Microsoft、.NET、および/または Windows Mobile で非常に悪い経験をした人によって書かれたように聞こえます。発言のいくつかはせいぜい間違っています。(特に、これは「ネイティブ」コードで記述されているため、iPhone では問題にならないという点です。)

于 2009-01-31T01:51:12.760 に答える
4

中間のバイトコード言語を使用すると少し簡単になるかもしれませんが、実際にはどの言語でもこれを行うことができます。

実行可能コードは、簡単に逆アセンブルして実行できます。 IDA-Proはネイティブの実行可能ファイルを読み込んで逆アセンブルし、Hex-Rays プラグインを使用して C のような疑似コードを提供することもできます。Hex-Rays がなくても、アセンブリ コードをステップ実行して何が起こっているかを推測することはそれほど難しくありません。これは、ライセンス製品の keygen を作成する方法です。それらは逆アセンブルされ、プログラマーは、プロダクト キーの生成と検証を担当する関連するアセンブリ コードを調べます。

ただし、アプリから主要な機能を元に戻すコストはかなり高くなります。したがって、それが企業秘密のアルゴリズムを含む非常に競争力のある機能でない限り、ほとんどの場合、プログラマーを雇ってゼロから作成する方が、リバース エンジニアリングを行うよりも簡単で費用対効果が高くなります。

より高いレベルの保護を探している場合は、コードを難読化し、プログラムの逆アセンブルをより困難にする商用パッカーを使用できます (また、アプリケーションがパックされている間はリフレクターが使用されなくなります)。ただし、これらは回避されてアンパックされる可能性があり、難読化されたコードは、適切な RE の速度をまったく低下させません。したがって、あまり強調しないでください。私自身の意見では、.NET は他の非バイトコード言語と同じくらい適しています。

于 2009-01-31T02:05:05.727 に答える
3

唯一のオプションは、ネットワーク アプリを使用することです。マスター サーバーにクエリを実行するクライアントのみを配布します。このように一生懸命やるソースはあなたの秘密です。

于 2009-01-31T02:57:06.887 に答える
1

これは、Windows上の.NETにも適用されます。Javaにも適用されます。

コードを難読化することができ、一部の難読化ツールは優れています(Googleで簡単に適切なコードを見つけることができます)が、最終的には、難読化ツールは完全なテクノロジーではないため、IPの保護に注意する必要があります。難読化ツールは、よりスマートになる逆コンパイラーを打ち負かし、よりスマートになる難読化ツールを打ち負かします。

技術的には、コンパイルされたコードを調べることで、C++プログラムまたは任意のプログラムがどのように機能するかを理解できます。コンパイルされるレベルは、IL(.NETアプリがコンパイルされるレベル)と言うよりもはるかに複雑です。

于 2009-01-31T01:41:37.210 に答える
1

リフレクターでグーグルしてください。はい、それは本物です、はい、それは起こります、そしてはい、あなたの難読化は助けることができますが、完璧ではありません。そして、Reflector自体について考えてみましょう。Redgateがまだそれを難読化しているかどうかはわかりませんが、元の作者は、印刷できない文字を使用して難読化しています。

ただし、Javaにも同じ問題が存在するため、自分の立場を選んでください。ああ、そして真に決心したハッカーは、あらゆるプラットフォーム上のあらゆるアプリケーションをクラックするので、その機能のためにプラットフォームを選択し、それはあなたの問題とあなたのスキルセットに適合しています。

ツールを使用して、セキュリティを強化し、基準を引き上げます。

于 2009-01-31T01:44:14.893 に答える
0

ILの優れた点の1つは、すべてのタイプをフルネームで完全に修飾できることです。したがって、たとえばReflectorで難読化されたコードを見ると、同じクラスに同じ名前の変数が12個ある可能性がありますが、ILで完全に修飾されているため、ランタイムで問題は発生しません。

于 2009-01-31T01:49:24.183 に答える
0

.Netアセンブリを読み取るのは非常に簡単です。あなたは自分で試すことができます:

http://www.codeproject.com/KB/dotnet/NetDasm.aspx http://www.shutterspeaks.com/2006/08/27/how-to-disassemble-net-assembly-files/

仕事を難しくするために利用できる難読化ツールがあります。Mono(.Netのオープンソース実装)を使用すると、.netコードを実行可能ファイルにコンパイルすることもできます。これにより、逆アセンブルが非常に困難になります。

于 2009-01-31T01:49:45.913 に答える
0

はい、キャスパーは確かに正しいです。いつでもマシンコードを見ることができます。ただし、ポリモーフィズムなどのより複雑なオブジェクト指向の関係は、アセンブリ コード レベルで見たときに見分けるのは困難です。

しかし、私の意見では、ソース コードを保護する考え方全体に欠陥があります。オープンソースの哲学は、バグやセキュリティ上の欠陥を発見する人が増えるため、コードを公開して精査することでソフトウェアが改善されるというものです。また、Linus の法則は、Sun や Google などの主要企業でますます採用されています。

于 2009-01-31T01:53:50.477 に答える
0

ソフトウェアの知的財産は、実際にはコード自体だけにあるのではなく、製品化に着手したアイデア、製品の開発、テスト、展開中に得られた知識、および製品の修正、保守、強化に関与するインフラストラクチャーにあります。

アプリケーションのコードを持つことは、車を持つことによく似ています。もちろん、分解して組み立て方を正確に見ることはできますが、その知識があるからといって、来週から車を組み立てることができますか? しそうにない。

于 2009-01-31T02:29:12.153 に答える
0

しばらく使っていませんでしたが、Salamander.NET は .NET アプリを Win32 ネイティブ アプリに変換します (フレームワークに依存しません)。.NET 2.0 以降にアップグレードされたかどうかは不明ですが、2005 年には 1.1 で動作していました。

于 2009-04-02T19:45:11.857 に答える