クラウド保護: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



まとめると



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



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



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



All Articles