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!

new version



the New kernel WPF obfuscation

the

    Now, the classes involved in WPF, it is not excluded, and obfuscated along with all the others. WPF resources are perenosyatsya 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


image

(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.
Article based on information from habrahabr.ru

Комментарии

Популярные сообщения из этого блога

March Habrameeting in Kiev

PostgreSQL load testing using JMeter, Yandex.Tank and Overload

Monitoring PostgreSQL with Zabbix