クラウド保護:AppFuscator 2.0

そして今、最初の発表である.NETアプリケーションのクラウド保護からほぼ3か月が経過しました。 この間、無駄な時間を無駄にせず、製品の改善に積極的に取り組みました。 優先分野を特定し、最も深刻な問題を特定する際に、最初の公開バージョンのテストに積極的に関与していたhabro-communityは、私たちを大いに助けてくれました。 私たちのチームを代表してどうもありがとう!

新しいバージョンで



新しいWPF難読化コア



画像

(クリックして拡大)

Unity 3Dサポート


Unity 3Dアプリケーションを保護するには、管理フォルダーからユーザーコードを含むアセンブリを送信して難読化し、保護されたバージョンに置き換えれば十分です。

.NET Framework 4.5との完全な互換性





自動インテリジェント難読化



スマート認識のいくつかの例

列挙型

string name = "Second"; var result = (Mode)Enum.Parse(typeof(Mode), name); 

アナライザーは、列挙モードでは名前による値の定義が使用されていることを判別し、すべてのメンバーと一緒に名前変更の禁止としてマークします。

シリアライザー

 var serializer = new XmlSerializer(typeof(RealySerializable)); var writer = new StringWriter(new StringBuilder()); serializer.Serialize(writer, new RealySerializable()); string res = writer.ToString(); public enum DataState { One, Two } public class RealySerializable { public int MyProperty { get; set; } public DataState State { get; set; } } 

ご覧のとおり、RealySerializableとDataStateはSerializableAttribute属性でマークされていませんが、RealySerializable型のXmlSerializerの初期化を検出すると、コードアナライザーはそれを名前変更から除外します。 同様のアプローチは、他のシリアライザー(JSON、バイナリーなど)でも機能します。 列挙型DataStateがシリアル化可能な型に含まれていることがわかると、アナライザーはそれをシリアル化可能としてマークします。

インターフェイスごとのCreateInstance

 var instance = Activator.CreateInstance(anyUnresolvedName); var work = instance as IRef; 

名前が動的に形成されると仮定すると、アナライザーはanyUnresolvedNameが何であるかを理解できませんが、IRefインターフェイスへの明示的なキャストを見つけ、そのすべての子孫の名前変更を禁止します。

他のケースも同様に機能します。自分で試してください: appfuscator.com

まとめると


このバージョンでは、私たちの大切な目標にさらに近づきました-難読化についてまったく考えないで、プロジェクトの最終結果を得るだけです。

まもなく、ユーザーアカウントといくつかの快適で便利なイノベーションを開始する予定です。 ニュースをフォローしてください。

そしてもちろん、いつものように、私たちはあなたの願いと良いアイデアにとても満足しています。

Source: https://habr.com/ru/post/J158643/


All Articles