Для защиты исходного кода приложения обычно используются протекторы (представитель, .Net Reactor) или обфускаторы (представитель SmartAssembly, список можно глянуть здесь). В данной статье не планирую рассказать в чем их отличие, и какие есть разновидности. Со всем этим читатель может ознакомиться самостоятельно, например здесь. Случайно в интернете нашёл описание как можно написать собственный обфускатор ну или по крайней мере разобраться как он работает. Пример основан на использовании Mono.Cecil, что так же позволит немного разобраться в данной библиотеке.
К сожалению, блог автора пропал и его удалось восстановить благодаря веб-архиву. В итоге всех статей автор написал свой обфускатор, который выложил в открытом доступе http://code.google.com/p/ncloak/
Выкладываю ссылки в хронологическом порядке. Пользуйтесь :)
Protecting your precious code!
Protecting your precious code! - Part 2
Protecting your precious code - Obfuscation
Protecting your precious code - Mono.Cecil
Protecting your precious code - Naming inside our obfuscater
Lesson of rolling name table
Obfuscating multiple assemblies - Part 1
Obfuscating multiple assemblies - Part 2
Breaking into obfuscated code
String Encryption as an Obfuscation Tool - Part 1
String Encryption as an Obfuscation Tool - Part 2
String Encryption as an Obfuscation Tool - Part 3
The danger of the Changelog
Stopping ILDASM decompiling your assemblies
Handling 64-bit assemblies during obfuscation
How to make your Obfuscator fool Reflector
Making NCloak fool Reflector
Removing Invalid OpCodes From Obfuscated Assemblies
Hacking Mono.Cecil - allowing invalid opcodes
Tamper Proofing your Code
Tamper Proofing - an implementation (Part 1)
Tamper Proofing - an implementation (Part 2)
К сожалению, блог автора пропал и его удалось восстановить благодаря веб-архиву. В итоге всех статей автор написал свой обфускатор, который выложил в открытом доступе http://code.google.com/p/ncloak/
Выкладываю ссылки в хронологическом порядке. Пользуйтесь :)
Protecting your precious code!
Protecting your precious code! - Part 2
Protecting your precious code - Obfuscation
Protecting your precious code - Mono.Cecil
Protecting your precious code - Naming inside our obfuscater
Lesson of rolling name table
Obfuscating multiple assemblies - Part 1
Obfuscating multiple assemblies - Part 2
Breaking into obfuscated code
String Encryption as an Obfuscation Tool - Part 1
String Encryption as an Obfuscation Tool - Part 2
String Encryption as an Obfuscation Tool - Part 3
The danger of the Changelog
Stopping ILDASM decompiling your assemblies
Handling 64-bit assemblies during obfuscation
How to make your Obfuscator fool Reflector
Making NCloak fool Reflector
Removing Invalid OpCodes From Obfuscated Assemblies
Hacking Mono.Cecil - allowing invalid opcodes
Tamper Proofing your Code
Tamper Proofing - an implementation (Part 1)
Tamper Proofing - an implementation (Part 2)