問題タブ [obfuscation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
obfuscation - 小規模ベンダー向けのソフトウェア保護
これは、ある時点で私たち全員が考慮しなければならない問題です。
何年にもわたって多くのアプローチを経て、私は一般的にこの声明に同意する傾向があります。「数百人以上が使用する保護されたソフトウェアについては、ひびの入ったバージョンを見つけることができます。これまでのところ、すべての保護スキームが改ざんされる可能性があります。」 あなたの雇用主は著作権侵害対策ソフトウェアの使用を強制していますか?
さらに、私がこの主題について投稿するたびに、誰かが私に思い出させます。「まず第一に、どのような種類の保護を採用する場合でも、真に専用のクラッカーは、最終的にはすべての保護障壁を通り抜けます。」 単一の開発者のためのお金のc#コード保護のための最高の価値は何ですか
したがって、これら2つの広く真の免責事項に耐えることなく、「保護」について話しましょう。
熟練したクラッカーの時間と注意を払う可能性が低い小さなアプリの場合、保護は価値のある演習だと今でも感じています。
何をしても、クラッカーがアプリケーションにパッチを適用してIFステートメント(jmp)の結果を切り替えることができれば、世界中のすべてのパスワードとドングルが役に立たないことは明らかです。
したがって、私のアプローチは、次のような製品を使用して仮想化でコードを難読化すること でした。http ://www.oreans.com/codevirtualizer.php この製品に非常に満足しています。私の知る限り、それは打ち負かされました。PEcompactを使用して実行可能ファイルを圧縮することもできます。他の誰かがそれを使用した経験がありますか?
EXEcryptor http://www.strongbit.com/news.aspに問題があっただけ で、サイトでさえ使用するのが頭痛の種です。コンパイルされたアプリは、WMI呼び出しを行うとクラッシュします。
このアプローチにより、コードの小さなセクションを難読化で囲み、セキュリティチェックなどを保護できます。
アプリケーションはサーバーからのデータを定期的に必要とするため、ユーザーがオフラインで長期間使用しても意味がないため、オンライン認証アプローチを使用します。定義上、アプリはひびが入っていても、その時点では価値がありません。
したがって、単純な暗号化されたハンドシェイクは十分に優れています。難読化保護の範囲内で時々チェックします。ユーザーがアプリを別のマシンにインストールすると、起動時に新しいIDがアップロードされ、サーバーは古いIDを無効にして、新しい認証を返します。
また、コンパイルされたアプリのハッシュを使用し、起動時に1ビットが変更されているかどうかを確認してから、アプリ内からアプリをファイルとして(読み取りLOCKを使用して)開いて、起動後に変更されないようにします。
すべての静的文字列は.exeファイルに明確に表示されるため、エラーメッセージなどを使用して一般的なものにしようとしています。「認証に失敗しました」という文字列はどこにもありません。
メモリダンプから保護するために、単純なテキスト難読化手法(すべての文字のXORなど)を使用します。これにより、メモリ内のプレーンテキストデータを変数などと区別するのが難しくなります。
そしてもちろん、本当に機密性の高いデータにはAESがあります。テキストのカウンターモードが好きです。これにより、シーケンスが繰り返されず、空白のシーケンスのような基になるデータが表示されます。
しかし、これらすべての手法で、キーまたは初期化ベクトルをメモリからダンプできる場合、またはIFステートメントをバイパスできる場合は、すべてが無駄になります。
私は条件文ではなくswitch文を使う傾向があります。次に、実際に目的のタスクを実行する関数ではなく、基本的に行き止まりの2番目の関数を作成します。
もう1つのアイデアは、変数を追加してポインターをコーディングすることです。変数は承認の結果です(通常はゼロ)。これは、ある時点で必然的にGPFにつながります。私はこれを最後の手段として使用するのは、いくつかの下位レベルの認証が失敗した後です。そうしないと、実際のユーザーがこれに遭遇する可能性があります。次に、ソフトウェアの評判が低下します。
どのようなテクニックを使用していますか?
(これは、何かを実装することのメリットを議論するスレッドではありません。何かをすることに決めた人のために設計されています)
asp.net - .NET Web アプリケーションの難読化
.NET Web アプリケーションを難読化することはできますか? Visual Studio 2005 に付属の Dotofuscator ツールを使用しようとしたところ、コンパイル済みの Web サイトの dll を難読化できましたが、ソウルションを IIS サーバーにデプロイすると、アプリケーションのページを難読化できませんでした。
質問は次のとおりです。完全な .NET Web アプリケーションを難読化できた人はいますか?
回答ありがとうございます
編集: bin フォルダーのすべての dll を難読化しました。aspx ファイルの更新を許可せずにサイトを構築しています。その後、http://serveradress/main.aspxにアクセスすると、 main.aspx が存在しないというエラーが表示されます
PD: アプリケーションがライセンス チェックを行うため、コードを難読化する必要があり、ライセンス チェック コードを削除しにくくしたい
.net - 混合 .NET DLL を難読化するための最適な製品
.NET DLL とアプリケーションがあります。DLL は C++/CLI で記述されており、「混在」しています。つまり、部分的に管理されたコードと部分的にネイティブなコードです。
1. すべてのマネージ
コードを難読化して、逆アセンブルできないようにする
2. 混合 DLL のパブリック メソッド/クラスを難読化して、誰も自分のアプリケーションで DLL を使用できないようにする (つまり、パブリック名をごちゃまぜにする)。
はい、難読化が完璧ではないことは理解しています。この 2 つの目標は、管理要件です。これを処理できる唯一のアプリは、Dotfuscator Professional Edition のようです。残念ながら、それは、セールスマンに価格を教えてもらうよう頼まなければならない、信じられないほど迷惑なアプリの 1 つです。別の解決策を知っている人、または安価で合法的なコピーを購入するのに適した場所を知っている人はいますか?
マネージ コードで DLL を書き直すように言わないでください。それには 1 か月の作業が必要であり、承認を得ることができません。:-)
難読化がどれほど優れているかについて、私は特に偏執的ではないことに注意してください。アプリ内のすべてのメソッドとクラスの名前をごちゃまぜにするものであれば、おそらく十分です。
私が試した他の難読化ツールは次のとおりです。
Dotfuscator Community Edition には Visual Studio 2008 が付属していますが、混合アセンブリはサポートされていません。
Eazfuscator .NET はシンプルで無料ですが、混合アセンブリをサポートしていません。
{smartassembly} は、1 つのライセンスで 500 ドルです。興味深い機能がいくつかありますが、混合アセンブリはサポートされていません。
サラマンダーは800ドル。混合アセンブリを完全にサポートすると主張しているが、難読化された dll を使用しようとすると、アプリケーションがクラッシュする
.NET Reactor は、1 つの開発者ライセンスで 180 ドルです。混合 DLL の「部分的な」難読化をサポートします。残念ながら、DLL のパブリックタイプを難読化しても機能しません。.exe はクラスを見つけることができません。DLL を .exe にマージ/パックする機能がありますが、混合 DLL を使用すると機能しません (.exe の一部であっても、exe は DLL のアセンブリを見つけることができません)。
スケーターは、単一のライセンスで 300 ドルです。彼らのウェブサイトには、混合アセンブリをサポートしていると主張するものは何もありません。アプリを試してがっかりするのにうんざりしているので、そうではないと思います。
また、Microsoft の ILMerge を試して、DLL を .exe とマージしてから難読化できるかどうかを確認しましたが、混合 DLL でチョークするようです。
Dotfuscator に代わるものや、正規のコピーを購入するのに適した場所について何か提案はありますか? 安価に販売していると主張する名前のないサイトをいくつか見つけましたが、それらはロシアの海賊版だと思います.
asp.net - ASP.NET ソース コードの保護
私は現在、外部の第三者が私のコードを表示および使用できないように、ソース コードを最適に保護する方法についていくつかの調査を行っています。
Web を閲覧していると、いくつかのアイデアが思い浮かびます。
1) Web サイトを DLL に公開する
2) コード難読化ツール
3) サードパーティ
しかし、私が見つけたものは、実際によく説明されているか、これを達成する方法が詳細に示されています。このトピックにもう少し光を当てることができる人はいますか?
前もって感謝します
c# - メソッド名は EXE にコンパイルされますか?
Windows アプリ プロジェクトを EXE にコンパイルした後、クラス、メソッド、および変数名は MSIL に含まれますか?
- 難読化の場合- 名前が少なく、リバース エンジニアリングが難しくなります。
- そしてパフォーマンスのために-短い名前、より速いアクセス。
たとえば、メソッドが名前で呼び出される場合:
- 名前を短くして、名前付きルックアップのパフォーマンスを向上させます。
- 名前を暗号化して、逆コンパイルしにくくします。
c# - ソースコードレベルでの難読化は、難読化ツールよりも効果的ですか?
私の最後の質問から学ぶと、ほとんどのメンバー名はプロジェクトの出力に含まれているようです。
9rays、Salamander、Jungleなどの一部の逆コンパイラを見ると、多くの難読化技術はすでに打ち負かされているように見えますが、特に恐ろしい主張が 1 つあります。
難読化ツールによって挿入された文字列暗号化を自動的に削除します ~ Salamander
それで、手動のソースコードレベルの難読化は、よく知られている(簡単に打ち負かされる??)難読化プログラムによる、コンパイル後/コンパイル中の泡立つ「表面的な」難読化よりも効果的ですか?
javascript - これをどのようにリバースエンジニアリングしますか?
javascript の php ファイルの下部にあるコードがいくつかあります。16 進数を ASCII に変換してから、正規表現の置換を行い、コードを実行するなど、多くの奇妙なゆがみを経験します...
実際に実行する前に実行内容を確認する方法はありますか?
コードは次のとおりです。
.net - dotfuscator は実行速度を遅くしますか?
私のプログラムが dotfuscator community edition を通過すると、実行速度が 5% 低下することがわかりました。
それは正常ですか?それをしないdotfuscatorの代替(無料)は何ですか?