6

私は JavaScript をよく使っていましたが、雇用主を悩ませていたのは、ソース コードが簡単に盗めないことでした。難読化しても、実際には何の役にも立たなかったのです。有能な開発者であれば、必要に応じてそのコードを読み取ることができることは誰もが知っていたからです。

JS スクリプトは 1 つの問題ですが、IP (知的財産) に何百万ドルも投資している SOA プロジェクトはどうでしょうか。私は .net、特に C# が大好きですが、最近、「このコンパイル済みプログラムをクライアントに渡した場合、クライアントの開発者はリバース エンジニアリングを行うことができますか?」という質問に再び答えなければなりませんでした。私はコードを難読化するために最善を尽くしましたが、別の熱心な C# 開発者がコードを理解するのにそれほど時間はかからないことはわかっていました。

.netコードを保護することは不可能ですか?

私が持っている考慮事項は次のとおりです。

  1. 通常のネイティブ実行可能ファイルでさえ元に戻すことができますが、すべての開発者がこれを行うスキルを持っているわけではありません。ネイティブ実行可能ファイルを逆アセンブルするのは、.net アセンブリよりもはるかに困難です。
  2. 難読化はこれまでのところしか役に立ちませんが、少しは役に立ちます。
  3. .net で記述されたものは比較的簡単に IP が盗まれるという Microsoft の公の認識を見たことがないのはなぜですか? マイクロソフトのサイトで対策トレーニングの断片を見たことがないのはなぜですか? VS にオプション コンポーネントとしてコミュニティ難読化ツールが付属しているのはなぜですか? ここで砂の中に頭を抱えているだけかもしれませんが、ほとんどの開発者の優先順位リストで正確に高くはありません.
  4. .net の将来のバージョンで私の懸念に対処する予定はありますか?

私は .net をノックしているわけではありませんが、現実的な回答をお願いします。ありがとうございます。質問は主観的でコミュニティとしてマークされています。

4

2 に答える 2

10

すべてのコードはリバース エンジニアリングできます。

.NET はこの基準を下げます (Reflector を試してみてください!) が、難読化によって再び高くなります。優れた難読化ツールは、非常に献身的で意欲的な人以外のすべての人がコードをリバース エンジニアリングするのを防ぐのに十分なほど、ハードルを高くします。

そうは言っても、私は個人的に品質に焦点を当てることを好みます. 私は小規模な ISV を運営しており、.NET を使用しています。難読化は重要ですが、高品質の製品を提供できれば、誰かがコードをリバース エンジニアリングしようとしても問題ありません。

仮に、彼らが複雑なプロジェクトですべてをリバース エンジニアリングできたとしても、実際に市場で競争上の優位性を持つ何かを提供するのは何年も遅れるでしょう...

于 2010-03-30T23:58:15.227 に答える
1

どんなコードでもリバースエンジニアリングできます。はい、高度に最適化された C++ よりも .NET や Java の方が簡単ですが、Javascript や PHP よりも簡単ではありません。難読化は脆弱性を軽減するのに大いに役立ちますが、現実には、コードを手に入れると、コードを隠すために何をしたとしても、決心したリバース エンジニアがあなたの秘密を見つけようとします。あなたがやっていることは、せいぜい、彼にとってより迷惑なものにすることだけです.

優れた難読化ツールは、専門知識が Reflector で始まり、Reflector で終わるカジュアルなプログラマーが、コードがどのように機能するかを実際に理解するのを防ぎます。それを超えて、あなたがすることはほとんど絶望的です.

リバース エンジニアリングを非常に簡単にする .NET の機能は、フレームワークで強力なリフレクションとダイナミズムを可能にする機能と同じであるため、近い将来、これが変わるとは思いません。

于 2010-03-31T00:01:14.033 に答える