質問

私にとって、難読化は、「曖昧さによるセキュリティ」または「誤った保護の感覚」陣営のどこかに分類されるアイデアであるように思えます。知的財産を保護するために著作権があります。セキュリティ上の問題が発見されるのを防ぐために、 それらの問題を解決する. 。一言で言えば、社会問題に対する技術的な解決策だと私は考えています。 それらはほとんど機能しません。

ただし、開発チームでそのように感じているのは私だけのようです。そのため、私が間違っているか、説得力のある議論が必要なだけです。私たちの製品は .NET を使用しており、ある開発者は .NET Reactor を提案しました (ちなみに、これは このSOスレッドでも提案されました).

.NET Reactor は、純粋な .NET アセンブリ (C#、VB.NET、Delphi.NET、J#、MSIL などで記述されたもの) をネイティブ マシン コードと混合することで、逆コンパイルを完全に停止します。

つまり、バイトコードの利点をすべて一度に捨ててしまうということですか?

良いものはありますか エンジニアリング 難読化の利点?

役に立ちましたか?

解決

いくつかの問題について説明しているので、役立つかもしれない質問を投稿しました。ネットコードの難読化について心配する必要がある

他のヒント

あなたはエンジニアリング上の理由を尋ねたので、これは厳密に言えば質問に対する答えではありません。しかし、それは有効な説明だと思います。

おっしゃるとおり、難読化は社会問題に対処することを目的としています。そして、社会(またはビジネス)問題は、技術的な問題とは異なり、完全な解決策があることはほとんどありません。問題に対処したり、問題を最小限に抑えたりするには、ある程度の成功しかありません。

この場合、難読化により、誰かがコードを逆コンパイルして盗むことに対する障壁が高くなります。これにより、カジュアルな攻撃が阻止され、慣性によって知的財産が盗まれる可能性が低くなります。面倒なたとえですが、イモビライザーは車の盗難を防ぐことはできませんが、盗難の可能性を低くすることはできます。

もちろん、保守性、(おそらく)パフォーマンス、そして最も重要なことに、ユーザーがバグレポートを正確に送信することが難しくなるというコストがかかります。

GateKiller が言ったように、難読化によって決心したチームの逆コンパイルは妨げられませんが、(製品が何であるかにもよりますが) チームがあなたを攻撃する可能性がどの程度決心しているでしょうか?

したがって、これは社会問題に対する技術的な解決策ではなく、複雑な社会構造に 1 つの影響を加える技術的な決定です。

プログラマーの大規模なチームが本当にソース コードを取得したいと考えており、時間、資金、労力があれば、成功するでしょう。

したがって、難読化は、ソースを入手するための時間、お金、労力がない人、つまり、近くを通りかかった人が電話をかけてくる可能性を阻止する必要があります。

純粋なマネージ コードの難読化に固執する場合、アセンブリ サイズをかなり削減でき、難読化されたクラス/関数名 (単一文字に折りたたまれる) によりメモリ フットプリントが小さくなります。これはほとんどの場合無視できますが、一部のモバイル/組み込みデバイス (ただし、ほとんどは Java) に影響を与えます (そして使用されます)。

エンジニアリング上の潜在的な利点の 1 つは、場合によっては難読化により、より小さな実行可能ファイルやその他のアーティファクトが作成される可能性があることです。JavaScript を難読化すると、ファイルが小さくなります (すべての変数の名前が「descriptiveNameOne」ではなく「a」と「b」になり、すべての空白が削除されるなどのため)。これにより、難読化された JavaScript を使用する Web ページの読み込み時間が短縮されます。明らかに、これは .NET の世界には (あまり) 当てはまりませんが、エンジニアリングに直接的な利点がある状況の一例です。

.net とは関係ありませんが、Javascript や、場合によっては他の相互対話言語での難読化を検討します。JavaScript は難読化によって必要な帯域幅が減り、パーサーが読み取らなければならないトークンが減少するため、難読化によって大きなメリットが得られます。

しかし、コンパイルされたバイトコードを難読化することは、私にとってはあまり有用とは思えません。つまり、何を試みて何を達成したいですか?難読化は、ライセンスチェックコードで簡単に回避されるのを避けるためにわずかに役立つだけだと思います。

難読化を使用する主な理由は、ご指摘のとおり、知的財産を保護することです。一般に、企業にとっては、著作権を法的に執行しようとするよりも、.NET Reactor のような難読化製品を購入する方がはるかにコスト効率が高くなります。

難読化により、パフォーマンスの向上やアセンブリ サイズの縮小など、その他の付随的な利点も得られます。これらは、 エンジニアリング あなたが求めているメリット。

暗号化を使用して、途中で情報を保護します。

難読化を使用して、プログラムが情報を保持している間に情報を保護します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top