Protection in the clouds: AppFuscator 2.0
And here it has been almost three months since our first announcement cloud protection .NET applications. All this time we do not waste time and actively worked on improving our product. In identifying the priority areas and identify the most acute problems helped us a lot, actively involved in testing the first public version of jarosovaite. Thank You, on behalf of our team!
the
(click to enlarge)
the
In order to protect the Unity 3D application, it is sufficient to send to the obfuscation of the Assembly with custom code from the Managed folder, and then replace them with protected versions.
the
the
Some examples of intelligent recognition
the
Analyzer determines that enum'and the Mode used to identify the value of name, and marks it with the rest as prohibited for renaming.
the
As you can see, RealySerializable DataState and not marked with the SerializableAttribute attribute, but I found the initialization of the XmlSerializer with the type RealySerializable, the analyzer excludes it from renaming. The same approach works for other serializers (JSON, Binary, etc.). Finding that serialserial type enum DataState involved, the analyzer will mark it as serializable.
the
For example, the name is generated dynamically, so the analyzer cannot understand what is anyUnresolvedName, but he finds an explicit cast to the interface IRef, and prohibits the renaming of all its descendants.
Similarly, work and other occasions, try it yourself: appfuscator.com
In this version we more closer to our cherished goal is to make it so that You never thought about obfuscation, but just received the finished result for Your project.
Very soon we plan to launch a personal user account and a couple of great additions. Stay tuned.
And of course, as always, we will be very glad to Your wishes and good ideas.
Article based on information from habrahabr.ru
new version
the New kernel WPF obfuscation
the
- is Supported by the linking Assembly containing WPF (which is impossible to do in ILMerge) the
- Intelligent automatic exclusion of classes and fields to rename invalid, including for complex expressions of type PropertyPath the
- renamed BAML resources
Now, the classes involved in WPF, it is not excluded, and obfuscated along with all the others. WPF resources are perenosyatsya the
(click to enlarge)
Support Unity 3D
the
-
the
- Renamed all the internal methods, fields and classes the
- Supports all modes, including String Encryption, External Method Call Hiding, Decomposition
In order to protect the Unity 3D application, it is sufficient to send to the obfuscation of the Assembly with custom code from the Managed folder, and then replace them with protected versions.
Full compatibility with .NET Framework 4.5
the
-
the
- Now the obfuscator works equally well with .NET 2.0, 3.0, 3.5, 4.0, 4.5. the
- Correctly obfuscated code with async/await the
- switch to the latest version of Mono Cecil
Automatic intellectual obfuscation
the
-
the
- a powerful New mechanism for the analysis of tree hierarchy and dependencies the
- Significantly improved code analyzer the
- Autodetection of serializable classes of model structures in the code the
- Automatic exception to the renaming of types explicitly or indirectly related to serialization (for example Enum's used in serializable classes) the
- Correctly handled projects using Microsoft Unity Container the
- smart algorithm of choosing the appropriate method based on the search for the most complete satisfaction. Example of a case resolve ambiguous overloads: Method(int arg) and Method<T>(T arg) where T = int the
- fixed a compatibility problem decomposition algorithms with Expressions and LINQ the
- support for the constrained prefix the
- Automatic recognition of the type for the Activator.CreateInstance and ConstructorInfo.Invoke the cast to the interface\type. the
- Improved warnings, they are now rarely given in detail
Some examples of intelligent recognition
Enums
the
string name = "Second";
var result = (Mode)Enum.Parse(typeof(Mode), name);
Analyzer determines that enum'and the Mode used to identify the value of name, and marks it with the rest as prohibited for renaming.
Serializer
the
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; }
}
As you can see, RealySerializable DataState and not marked with the SerializableAttribute attribute, but I found the initialization of the XmlSerializer with the type RealySerializable, the analyzer excludes it from renaming. The same approach works for other serializers (JSON, Binary, etc.). Finding that serialserial type enum DataState involved, the analyzer will mark it as serializable.
CreateInstance by interface
the
var instance = Activator.CreateInstance(anyUnresolvedName);
var work = instance as IRef;
For example, the name is generated dynamically, so the analyzer cannot understand what is anyUnresolvedName, but he finds an explicit cast to the interface IRef, and prohibits the renaming of all its descendants.
Similarly, work and other occasions, try it yourself: appfuscator.com
Summing up
In this version we more closer to our cherished goal is to make it so that You never thought about obfuscation, but just received the finished result for Your project.
Very soon we plan to launch a personal user account and a couple of great additions. Stay tuned.
And of course, as always, we will be very glad to Your wishes and good ideas.
Комментарии
Отправить комментарий