Да, такие инструменты, как Reflector могут декомпилировать вашу программу на C #, а затем Reflector.FileDisassembler может даже вернуть ваш источник.
Я настоятельно рекомендую прочитать статью HRH Джона Скитса об обфускации и декомпиляции .NET:
http://www.yoda.arachsys.com/csharp/obfuscation.html
Для .net (и даже Java, у которой есть похожие проблемы) есть обфускаторы . Visual Studio поставляется с общедоступной версией Dotfuscator, однако есть catch :
MSIL регенерируется с большой неясностью после компиляции, поэтому, когда хакер декомпилирует его, его трудно прочитать. Но, когда есть исключение, трассировка стека также покажет запутанный код, так что теперь вам гораздо сложнее отлаживать программу.
Платные версии имеют карту XML, которая может сопоставить исключение с нужными классами, чтобы вы могли знать, в каком классе / методе содержится ошибка.
Как описывает статья Джона, вопрос баланса, и никакое программное обеспечение не является по-настоящему безопасным.