Babel 220.127.116.11 is entirely a new application. First the dependency from Microsoft Phoenix Framework was removed, so it isn't necessary to install Phoenix Framework RDK. This means that also Visual Studio 2008 family isn't required.
This new version introduce a feature called Dead Code Elimination. Dead Code Elimination remove from the target assembly all unused methods, properties, events that are not used internally (constructor are left untouched because removing them may cause problem with reflection API).
A lot of bugs from previous 1.5 version has been fixed. Because this is a completely reworked application take care to test it very well before substitute the previous 1.5. I did my tests and they went pretty well but I know that I may miss something so beware!
Summer is just around the corner and these days my writing source code rate is constantly decreasing. Babel 1.5 has been around for a while and presently I have some fixes to release, mostly thanks to your feedback. So next babel release will be a maintenance release with no feature added.
I'am thinking about porting babel to Mono platform, making babel run on Linux as well as Mac. I don't know if this is even possible but I would like to try. I never heard about an obfuscator running under Mono and it will be great to have babel run on Linux. I am only a little scared about the amount of work to porting all the code.
This week I have coded a babel service (babel obfuscator service) that I'd like to present on this post. This is a Windows service that works to obfuscate a massive number of .NET assemblies using mechanism based on watched folders.
The service monitor one folder and when an assembly is copied into thet folder it starts babel obfuscation putting the obfuscated assembly and the related map file and console output to a destination folder.
This service is useful when you need to obfuscate a lot of assemblies and you don't want to bother with DOS command line.
It works also with signed assembly. You just need to copy also the .snk file with your signed assembly.
I think this can be a valid substitute to a GUI interface for an obfuscator: the GUI in this case is Explorer itself.
Babel obfuscator service can be configured by means of xml file.
Follow a video of babel service at work. In the video the service is used to obfuscate the asseblies of SharpDevelop 3.0 in less then 2 minutes.
About one month has passed from the release 1.4 and I like to hear from you how babel is performing.
During the last month I have fixed one bug on static field onfuscation for generic types. I know that it can be quite difficult catch a bug on this kind of application that are not a crash of the obfuscator itself. It is likely that the obfuscated target crashes instead.
So if you experienced a situation like that: your application crashes after being obfuscated, let me know, and if there is a bug I will fix and release a new version of babel as soos as possible.
Another note about the obfuscation agent.
During the development I have coded a bounch of rule into the agent.
These rules are printed into the console output during obfuscation. If you think that your application does not work after obfuscation because a rule is missing please let me know.
I really appreciate your help so don't esitate to send me your user experience.
After a week spent on testing babel 1.4 I have decided to release the binaries.
I am quite happy about the tests results. Unfortunatly 64 bit support is not complete: I have found that executables once obfuscated run always in WOW64. Whereas dlls seem to run into 64 bit environment if obfuscated without inserting invalid opcodes. Seem that something is wrong into the PE executable so that the OS loader force the WOW64 subsystem to start. Untill now I don't have understood the reason completely so the 64 bit support for now is dalayed.
Long time has passed from release 1.3 and now the new release of babel is close to be released. I hope to close all the tests in this week and upload the 1.4 binaries at the begin of next one.
I would like to thanks all the people that download babel. Thank you for your support and for the time you spend to report to me bugs and feelings.
The 1.4 release have some major changes from previous release:
First of all the obfuscator engine was totally rewritten and this took a lot of time to deveop and test. This new engine fix some bugs that occurred with obfuscation of generic types and also introduce obfuscation of generic type arguments. The new engine was tested also with the code autogenerated by LINQ query and it seem to perform very well.
The major improvement is the introduction of obfuscator agent. The agent performs a code static analysis before obfuscation process to find all the symbols that should not to be obfuscated because they will probably break the resulting obfuscated assembly. Agent should improve obfuscation reliability without using rule files (that are also important and of course not removed in this new version).
Another improvement is in string encryption. Now it is possible to encrypt string of assembly where you don't have access to the source code. In version 1.3 string encryption was possible only by inserting two methods into the assembly suited to encrypt and decrypt strings. Although this custom encryption offers a good protection, it is impossible to use when the source code is not available. So when encrypting strings of assemblies that are not proprietary, babel insert a custom decryption method into the obfuscated target.
Also 64 bit fans will enjoy this new version because I have inserted the capability to disable injection of bad IL opcodes so that it is possible to run agnostic CPU asseblies into 64 bit OS (see issue 8).
Another major feature of version 1.4 are XML mapping files. I have to say that is a preview that should need more attention in future release. Mapping files should contains enough information to reconstruct obfuscated call stack. Presently I have not developed an application able to decrypt stack trace but mapping file are a first step towards this aim.