Frequently asked questions

Babel Obfuscator

Q: I have obfuscated my application but I still see type names in .NET Reflector. What I miss?
A: Most of the time, the types that are not renamed are public types. Public types are potentially accessible from any external assembly that references your obfuscated assembly. In this case babel can not rename these types automatically, otherwise this may affect the functionality of any assemblies that reference the obfuscated assembly. To rename public types you can declare those types as internal types or make an obfuscation rule to force the renaming.

Q: How can I hide the code inside methods?
A: Babel Obfuscator can hide completely the code inside the methods with code encryption. To enable code encryption just turn on MSIL Encryption in the Obfuscation setting and make an Obfuscation rule to select all the methods that should be encrypted.

Q: What are the best settings for control flow obfuscation?
A: You can get the best control flow obfuscation by enabling the goto, switch, case, if and call algorithms. You can increase the number of iterations to generate more spaghetti code, thus increasing the overall scrambling.

Q: What are the best obfuscation settings?
A: The best obfuscation settings depend in part on the .NET technology you are developing your application. In general it is better to enable all renaming options, use hash string encryption and enable the following control flow obfuscation options: goto, switch, case, if, call. You should also use code encryption for those methods you want to hide completely the internal structure. Some enhanced optimizations can help to increase the overall obfuscation like removing enum types and const fields. If you are obfuscating multiple assemblies you could use Babel merge feature to merge all those assemblies into the main assembly and internalize merged types. This will increase the overall obfuscation allowing Babel to further optimize your application.

Q: What does it means XAML renaming?
A: This option when enabled, makes Babel to rename all those symbols that are used in the XAML or BAML code. Basically this option is useful for increasing the proportion of symbols renamed when you are obfuscating a component made for WPF, Silverlight or the Windows Runtime that uses XAML.

Q: How can I increase the number of symbols renamed whether they be types, methods, or properties?
A: To increase the number of symbols that Babel can rename, you should declare as many symbols as possible internal or private. You should also avoid to use reflection API to access symbols through their names. Babel can safely ignore types consumed by reflection but this will increase the number of symbols that will not be renamed.

Q: What does it means remove Enum Typed optimization?
A: Babel can remove the enumerable types defined in your application by replacing the enumerable values with integer constants. This will reduce the metadata size and increase the level of obfuscation due to the removal of the information related to the names of enumerable constants.

Q: What does it means remove Const Fields optimization?
A: This means that Babel will try to remove from the metadata all the defined constant fields by replacing any occurrence with their value. As for Enum type removal, this optimization will also increase the obfuscation level.

Q: How can I prevent ILDasm from roundtrip an obfuscated assembly?
A: You can prevent ILDasm roudtripping by enabling the generation of dynamic proxy calls for internal and external types.

Q: How can I process an APPX package?
A: Babel Obfuscator can process directly APPX and XAP packages. Just drag & drop your APPX package into the Babel Obfuscator user's interface and you are ready to start the obfuscation.

Q: Does Babel support cross assembly symbol renaming?
A: Yes Babel can rename public symbols defined in referenced assemblies and use generated XML mapping files to fix symbols names. You can read more in the Babel Obfuscator user's guide where you can find a practical example explained in detail.

Licensing

Q: Is your license on a per-developer basis?
A: Yes for Standard, Professional and Enterprise licenses. Each developer must obtain a license. With this license, the developer can install on a primary machine and a portable/laptop. With Company license there are no limit to the number of developers/machine inside your Company where you can distribute the product.

Q: Do I have to pay you royalties?

A: No. babelfor.NET does not charge any royalties for redistribution of components obfuscated with Babel Obfuscator.

Q: Can I install the product on the build server?

A: Yes. You can install the product in your build server and use your license if you are the only user that have access to the build. If you have many developers that use the build server, you need to have the Company license to cover all the developers accessing the build services.

Q: Can I install the product on 2 machines (I'm running a desktop in the office, have a laptop at home)?
A: Yes.

Q: Can I continue to use Babel Obfuscator if the subscription expires and I choose not to renew?
A: Yes. You can continue to use Babel Obfuscator which you have licensed and paid for as long as you require. When a subscription expires, it simply means that you will no longer be issued any product updates or new product releases.
An expired subscription can be renewed. If you do not renew your subscription on the 13th month after purchase, your renewal cost will increase on a monthly basis. Feel free to contact our client services for more information on renewals and product costs once your subscription expires.

Q: I have purchased the Standard/Professional license. Can I upgrade to Enterprise or Company edition?
A: Yes. You can upgrade your existing license by paying the difference between the price of the license you own and the price of the new license. In this case the product maintenance period will not be changed.

Q: Do you offer discounts on any of your licenses?
A: Yes. Discounts are available when purchasing multiple single user licenses. Please write to sales@babelfor.net to ask for favorable terms in case of multiple license purchases.

Miscellaneous

Q: Where can I go for help if the answer to my question isn't here?
A: You can take a look at our discussion group for more help resources from our community. For anything else, you can write to our support at support@babelfor.net.