Ответ эксперта

Что даёт декомпиляция сборки .NET и чего не даёт?

Вопрос по направлению: Экспертиза исходного кода на C#

Ответ

Даёт текст на C#, местами почти совпадающий с исходным. Программа на .NET обычно хранится не в машинном коде, а в промежуточном представлении, которое сохраняет имена классов, методов и полей и структуру типов; декомпиляторы вроде ILSpy, dnSpy и dotPeek выдают из него читаемый код. Но опубликовать программу можно и переведённой в машинный код, причём двумя способами: при первом промежуточное представление остаётся в файле рядом с машинным кодом и декомпиляция идёт как обычно, при втором его в файле нет — тогда она невозможна, как в C++. Что именно перед экспертом, устанавливают первым делом.

Чего восстановление не даёт: комментариев и авторских пояснений — их не сохраняется никогда; имён локальных переменных, если рядом нет файлов отладочных данных. Исходного разбиения по файлам в самой сборке тоже нет, но при сохранённых отладочных данных — отдельным файлом или внутри сборки — пути исходных файлов и принадлежность им методов восстанавливаются из них.

Поэтому восстановленный текст не тождествен исходному, и подменять им объект нельзя: в заключении указывают, что исследовалось — исходные тексты или результат декомпиляции, каким средством и какой версии. Доказательственное значение полученного вывода оценивает суд.

Актуализировано
Обсудить задачу

Нужна экспертиза или консультация?

Опишите ситуацию и цель обращения. Мы определим нужный вид исследования, подберём профильного эксперта и поможем подготовить вопросы и материалы.

  • Подберём специалиста
  • Поможем с вопросами
  • Оценим срок и стоимость
Оценить материалы или позвоните 8 (800) 333-24-09 Бесплатный звонок по России