Обфускатор для файлов одиночной публикации .NET Core

Есть ли инструмент обфускации, который может хорошо работать с файлами exe и pdb, которые являются результатом публикации одного файла ядра dotnet?

Я использую публикацию одного файла ядра dotnet с помощью команды: dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true. Это отлично работает, давая мне всего два аккуратных файла - exe и файл pdb, которые я могу передать клиенту для запуска моего приложения.

Однако меня все еще беспокоит его способность декомпилировать.

Я попытался использовать ILSpy и JustCompile для обоих файлов, но, к счастью, их не удалось декомпилировать с помощью этих инструментов. Значит ли это, что мои файлы в безопасности, или инструменты еще не работают?

Если последнее, то какой инструмент обфускации я могу использовать для защиты этих файлов? Я попытался использовать Obfuscar, который не работал специально с выходами публикации одного файла, exe и pdb.

Какие-нибудь предложения по инструментам обфускации, которые можно использовать для этого?

4 ответа

Раскрытие информации: я работаю в команде Dotfuscator в PreEmptive.

Мы протестировали и подтвердили, что Dotfuscator Professional обрабатывает этот сценарий как в.NET Core 3, так и в.NET 5. В частности, вы должны использовать интеграцию Dotfuscator Professional с MSBuild, которая теперь является нашим рекомендуемым методом использования Dotfuscator Professional для новых проектов. Однако Dotfuscator не обновляется .pdbфайлы на.NET Core или.NET 5, поэтому вы не сможете отлаживать сборки, в которых используется Dotfuscator (например, сборки Release). Вы не должны отправлять .pdb файлы для ненадежных пользователей.

Вы можете декомпилировать автономные исполняемые файлы.NET Core, если распаковываете их вручную: Можно ли декомпилировать отдельный отдельный исполняемый файл.Net Core 3?

Вам нужно будет запустить обфускатор как часть процесса сборки, прежде чем отдельные сборки будут сжаты в один файл. Вероятно, это возможно, если вы добавите настраиваемую цель MSBuild, которая выполняет обфускатор, и используетеBeforeTargetsатрибут, чтобы интегрировать его в нужный момент в процессе сборки. Но я не рассматривал подробно систему сборки ядра.NET.

Вы можете использовать Обфускар.
Используйте его в каталоге obj после целевой компиляции, а затем скопируйте запутанные файлы в каталог. (Замените исходными файлами)

Skater .NET Obfuscator - мощный инструмент для защиты ваших библиотек DLL .NET 5 Прочтите следующий учебник на github

Другие вопросы по тегам