Я знаю, что приложения.NET трудно защитить. Я использую Отражатель RedGate и знаю, что вообще говоря, можно получить исходный код от многих.NET dlls.
однако мой вопрос - действительно ли на самом деле выполнимо декомпилировать целое приложение?
Я имею в виду - создают осуществимое решение VS, таким образом, пират может просто нажать F5 и получить точно тот же результат как будто автор на его машине?
Reflector имеет несколько плагинов, которые позволяют выгружать сборку в код:
http://www.denisbauer.com/home/reflectorfiledisassembler
http://filegenreflector.codeplex.com /
Но я не уверен, что могу создать файл проекта.
Для небольшого приложения это возможно И осуществимо. Вам нужно декомпилировать классы один за другим и скопировать / вставить код в Visual Studio.
Для большого приложения, хотя это возможно, на самом деле это невыполнимо, поскольку процесс копирования / вставки становится чрезвычайно утомительным.
Это действительно зависит от того, какой код вы пишете. Если вы используете много новых функций в C # 3 и выше, таких как лямбда-выражения, автоматические свойства и yield, декомпилированный исходный код не работает и требует довольно много работы для его компиляции.
Даже без этих функций я обычно сталкивался как минимум с некоторыми проблемами при компиляции декомпилированного исходного кода полного приложения winforms.
В наши дни существует множество обфускаторов, которые защищают ваши .NET-приложения от декомпиляции. Одним из таких обфускаторов является http://www.red-gate.com/products/smartassembly/index.htm . Они пытаются превратить ваш хорошо структурированный код .NET IL в код spegatti (который все еще работает), который декомпиляторы не могут генерировать исходный код. Это не похоже на стопроцентную уверенность в том, что пираты не могут получить перекомпилируемый код, но им будет нелегко декомпилировать при использовании обфускатора.
Я не думаю, что есть что-то, что полностью автоматизирует это для приложения, состоящего из нескольких сборок, но могу сказать, что на самом деле не так уж и сложно соединить части вместе в решение самостоятельно. Возможно, это немного утомительно для большого приложения, но если вы действительно захотите, это, безусловно, выполнимо.
К счастью, я не беспокоюсь об этом , что сильно .