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