Защита от декомпиляторов

Защита от декомпиляторов

 

Защита от декомпиляторов существенно ограничивает возможности восстановления исходного кода приложения на язык ассемблера или языки высокого уровня (C#, VB и т.д.). Для обеспечения защиты от восстановления исходного кода используются следующие методы:

  • Внедрение в защищаемое приложение дополнительных методов, обладающих корректной семантикой для языка ассемблера, но не корректной для компиляторов языков высокого уровня, и, соответственно, вызывающие ошибки при восстановлении кода на эти языки.
  • Внедрение в защищаемое приложение дополнительных методов, обладающих не корректной семантикой даже для языка ассемблера, и, соответственно, вызывающие ошибки при восстановлении кода на язык ассемблера.
  • Внедрение в методы сборки недостижимых в процессе исполнения вызовов функций с некорректным кодом, формирующих скрытые ошибки, проявляющиеся при попытке скомпилировать дизассемблированный код.
  • Бинарная обработка сборки для защиты от декомпиляции.
  • Внедрение в методы сборки, кода с некорректной для компиляторов языков высокого уровня семантикой (при включенном режиме обфускации "Граф потока управления").
  • Преобразование кода методов сборки, в код с некорректной семантикой для языков высокого уровня (при включенном режиме обфускации "Граф потока управления").

 

Настройка параметров защиты от декомпиляторов

 

Внешний вид вкладки Защита от декомпиляторов (с пометками)

 

Опции:

  • Разрешить защиту от декомпиляторов - Включение режима защита от декомпиляторов при обфускации;
  • Сборка - для которой будут настраиваться опции;
  • Уровень защиты - задает уровень защиты при обфускации;


Пример результата обфускации с опцией Защита от декомпиляторов (просмотр осуществляется с использованием утилиты .Net Reflector):
при попытке просмотра содержимого функции, декомпилятор выдает сообщение об ошибке.

 

 

Пример результата обфускации с опцией Защита от декомпиляторов (просмотр осуществляется с использованием утилиты Depends):
при попытке экспорта (с дизассемблированием) сборки, декомпилятор выдает сообщение об ошибке.

 

 

Результат декомпиляции сборки ClassLibrary1:

 

System.NullReferenceException: Object reference not set to an instance of an object.
   at ᝅ.ᜀ()
   at ឺ.ᜀ(IMethodDeclaration A_0, IMethodBody A_1)
   at ឤ.ᜀ(IMethodDeclaration A_0)
   at ᜭ.ᜁ(IMethodDeclarationCollection A_0)
   at ឤ.ᜀ(ITypeDeclaration A_0)
   at ឥ.ᜀ(ITypeDeclaration A_0, Boolean A_1, Boolean A_2)
   at ប.ᜀ(ITypeDeclaration A_0, String A_1, ILanguageWriterConfiguration A_2)
namespace 儵
{
}



 

 

 
15.11.2008
 
 
 
 
10.12  .NET Reactor
15.11  n
15.11  C# ClickOnce
 
01.08  Task Context
01.08  XLSX в Mono
27.07  прокси