Sunday, April 17, 2011

Resource Encryption and Speed Improvements

Eazfuscator.NET 3.1 has been released just a few minutes ago, so I’m here to spread some words about it!

This release includes highly demanded features and improvements.

Resource encryption
This highly demanded feature allows to encrypt and optionally compress the embedded resources of an assembly.

Out of the box support for Managed Extensibility Framework (MEF)
Reflection analysis engine in Eazfuscator.NET was improved to automatically handle the semantics implied by MEF. This feature is a decent addition to the product, given that MEF is becoming more and more widespread nowadays thanks to its excellent design and robustness.

Code control flow obfuscation produces fully verifiable code
The code produced by control flow obfuscation was unverifiable in previous versions of Eazfuscator.NET. Unverifiable code is out of .NET standard and control flow obfuscation was treated almost as a hack before. New Eazfuscator.NET guarantees that produced code is always verifiable and thus can be validated by PEVerify tool for a full conformance to .NET standard. This also means that code control flow obfuscation is safe and compatible with Mono and other alternative .NET runtimes now.

Better reflection analysis engine
Eazfuscator.NET now understands even more about LINQ, Web services, component designer and serialization. This allows to achieve better, non-intrusive obfuscation results.

Improved multi-core performance
New Eazfuscator.NET is a lot faster on multiprocessor systems than the previous versions, so it is definitely worth a try if you have large projects and long builds.

Some other improvements and fixes are included in the release as well.
You can download the new version right now or whenever you find it suitable.

Thank you!

14 comments:

  1. Hi, Oleksiy!

    I'm wondering how do you find the time to continue developing a free tool of such a quality. Eazfuscator beats major proprietary tools such as Dotfuscator and SmartAssembly, developed by teams of full-time developers. Thumbs up!

    I've just donated $10 via PayPal, and encourage other users to do so. Eazfuscator is definitely the best value for the price.

    Do you have any plans to publish Eazfuscator (or at least some parts of it) as open-source?

    Regards, Alexey Yakovlev

    ReplyDelete
  2. Thank you, Alexey! Currently I don't have plans to publish Eazfuscator as open-source.

    ReplyDelete
  3. Hi Oleksiy,

    Thanks for this tool. It is the best for a good protection for my dotnet projects.
    I use it with pleasure!

    Greets,

    Peter Willemsen from the Netherlands

    ReplyDelete
  4. Thanx,

    very good feature resource encryption,

    is possible to exclude a specific file? Toolbox icon is not visible if I use resource encrypt...

    Thank you

    Regards

    Christian

    ReplyDelete
  5. Melk, it is possible to exclude specific file(s).

    [assembly: Obfuscation(Feature = "encrypt resources [exclude] Lib.FillLevel.png", Exclude = false)]

    Please refer to documentation for details.

    ReplyDelete
  6. Christian, the latest beta of Eazfuscator.NET automatically handles the bitmaps of toolbox items when resource encryption is on. This can minimize the amount of manual tuning.

    http://www.foss.kharkov.ua/g1/projects/eazfuscator/dotnet/BetaPreview.aspx

    ReplyDelete
  7. Hello Oleksiy,

    I m trying to ofuscate my project with your program but i have a bug.
    All my DisplayName of my controls, like combobox, listview are bugging, it display random caracters like | ♫
    The DisplayName is a Propertie of my classes.

    Do you what the problem is ?

    Regards,

    Benjamin F.

    ReplyDelete
  8. Benjamin, I guess this happens because DisplayProperty tries to retrieve the names of the classes and of course they are renamed after obfuscation. Hence you have strange characters.

    My suggestion: do not use the reflection to get the names of the classes for DisplayProperty. Just hardcode the required value.

    ReplyDelete
  9. Thanks for your reply :

    In fact, i m adding my classe object in the items list of the control and i set the DislayName of the control to the property of my classe.

    Like :

    DisplayClass.DisplayDossier display = new DisplayClass.DisplayDossier(doss, doss.NumDossier + ". " + doss.Nom);
    comboBoxDossiers.Items.Add(display);

    comboBoxDossiers.DisplayMember = "DisplayName";

    I don't know how to solve this problem :/

    Have you a idea ?

    Regards,

    Benjamin F

    ReplyDelete
  10. Benjamin, you can disable the renaming of "DisplayName" property or just override ToString() method in DisplayDossier class.

    ReplyDelete
  11. It doesn't like my project:

    Error 1 Error occured during processing of input file 'C:\Users\Administrator\Documents\Visual Studio 2010\Projects\ProfileCleaner\bin\Release\ProfileCleaner.exe' --> Stage 'Phase 1': Error at 'ProfileCleaner.il':4943 --> Type system engine parsing error --> Error occured during parsing of .method token ".method assembly hidebysig static pinvokeimpl("advapi32.dll" nomangle unicode lasterr winapi)bool marshal( bool) 'LookupPrivilegeNameW'([in][opt] string 'systemName', [in] valuetype 'ProfileCleaner.ProcessPrivileges'.'Luid'& 'luid', [in][out][opt] class ['mscorlib']'System.Text'.'StringBuilder' 'name', [in][out] int32& 'nameLength') cil managed preservesig" in class 'ProfileCleaner.ProcessPrivileges'.'NativeMethods' --> Error occured during parsing method token 'LookupPrivilegeNameW' --> Unable to parse type name token "[in][out][opt]" --> Unable to read assembly name. C:\Users\Administrator\Documents\Visual Studio 2010\Projects\ProfileCleaner\

    [DllImport(AdvApi32, CharSet = CharSet.Unicode, SetLastError = true, ExactSpelling = true)]
    [return: MarshalAs(UnmanagedType.Bool)]
    internal static extern bool LookupPrivilegeNameW(
    [In, Optional] string systemName,
    [In] ref Luid luid,
    [In, Out, Optional] StringBuilder name,
    [In, Out] ref int nameLength);

    ReplyDelete
  12. Hi Nick,

    This issue is fixed in the latest beta (3.2.34)
    http://www.foss.kharkov.ua/g1/projects/eazfuscator/dotnet/BetaPreview.aspx

    Thank you

    ReplyDelete
  13. I get an error about an undefined class which is definitely not undefined.

    Obfuscating assembly 'xxx.dll'... Error: Reference to undefined class 'xxx.SSVC'
    Could not create output file, error code=0x80004005
    ***** FAILURE *****

    ReplyDelete
  14. Anonymous, please write to my email, so I can answer you:
    http://www.foss.kharkov.ua/g1/projects/eazfuscator/dotnet/Contacts.aspx

    ReplyDelete