Обфускатор для файлов одиночной публикации .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