Почему мы можем легко декомпилировать сборки .NET? - PullRequest
4 голосов
/ 04 октября 2011

Почему мы можем легко декомпилировать сборки .NET?

Какова основная причина, по которой мы можем легко декомпилировать EXE-файлы .NET?

Существует много программ, которые я могу использовать для маскировки кода моего приложения, но зачем это нужно для защиты? Разве Microsoft не может сделать это трудно узнать в принципе? Может быть, главная причина в том, что код .NET должен превратиться в код IL? Это правда?

Ответы [ 3 ]

2 голосов
/ 04 октября 2011

IL-код (который содержится в сборках .NET) - это язык более высокого уровня (виртуальный) машины (и гораздо более простой - только на основе стека, без регистров и т. Д., Как у вас в ЦП), чем сборка ЦП (x86, ARM и т. д.) что намного ниже уровня и непросто (так как существуют различные регистры и т. д.).

Таким образом, когда компилятор C # компилируется в код IL, гораздо проще создать (угадать) исходный код C #.

1 голос
/ 04 октября 2011

Почему Microsoft не сделала этого? Потому что вы не можете защитить свой код от решительного хакера. Подобно крупнейшему поставщику программного обеспечения, они не делают встроенного подобного, но они позволяют вам иметь рынок инструментов, где вы можете выбрать наиболее подходящий для вас инструмент, исходя из ваших потребностей и размера кармана.

0 голосов
/ 04 октября 2011

Когда вы открываете .NET DLL с помощью DotPeek или Reflector, вы конвертируете IL обратно в код на языке по вашему выбору.Это важно визуализировать, так как он не вернет вам точно такой же код, который был написан, а просто код, который выдает тот же IL.

...