Page 1 of 1
Защита .NET бинарников под Linux
Posted: Thu Aug 25, 2022 2:30 pm
by DiklosGroupLtd
Здравствуйте! Есть ли планы реализации защиты .NET бинарей под линкус?
Ибо не сразу узнал что защита .NET только в Windows, а кроссплатформенный .NET так и просится под Linux и MacOS
Re: Защита .NET бинарников под Linux
Posted: Thu Aug 25, 2022 2:37 pm
by Admin
Какая может быть защита .NET бинарников в среде, которая даже не создает файловую проекцию в памяти для загружаемого модуля? Все внутренности файла живут исключительно внутри .NET рантайма и до них невозможно достучаться через GetHINSTANCE.
Re: Защита .NET бинарников под Linux
Posted: Thu Aug 25, 2022 3:43 pm
by DiklosGroupLtd
Admin wrote:Какая может быть защита .NET бинарников в среде, которая даже не создает файловую проекцию в памяти для загружаемого модуля? Все внутренности файла живут исключительно внутри .NET рантайма и до них невозможно достучаться через GetHINSTANCE.
Я в целом хочу узнать планируется ли добавление защиты .NET приложений на ОС Linux, сейчас же никакой защиты нет для бинарей под линукс, а она очень нужна
Re: Защита .NET бинарников под Linux
Posted: Wed Aug 31, 2022 11:44 am
by Admin
К сожалению у нас нет таких планов, но в любом случае возможна разработка такой версии за дополнительную плату.
Re: Защита .NET бинарников под Linux
Posted: Tue Apr 02, 2024 10:51 am
by Admin
В версии 3.8.7.2037 добавлена поддержка .NET для Linux (не путать с NET Framework под Mono).
Re: Защита .NET бинарников под Linux
Posted: Mon Apr 08, 2024 2:00 pm
by DiklosGroupLtd
Admin wrote: ↑Tue Apr 02, 2024 10:51 am
В версии 3.8.7.2037 добавлена поддержка .NET для Linux (не путать с NET Framework под Mono).
Отличные новости!
Проверил простой Console Hello World - всё работает
Начал проверять сериализацию/десериализацию JSON (System.Text.Json) - есть нюанс:
Названия переменных "слетают" (Я так понял вместо названий идёт их hex адрес), пример:
Code: Select all
root@diklosvm1:~/cmp2# ./ConsoleApp1
Deserialized!
{"D30B37B2":false,"ADBF60AD":null,"25AC9CA1":0}
root@diklosvm1:~/cmp2#
А ещё создаётся .map файл с названиями филдов:
Code: Select all
0A9EC1B1 get_Cint
0AA3D906 set_Cint
1836242F set_Cstring
1C12AB97 value
2408611D get_Cbool
25AC9CA1 Cint
87A8F99E ConsoleApp1.Program
95821B3F args
A435622A value
A5A8D718 Main
ABB26238 set_Cbool
ADBF60AD Cstring
C5320026 get_Cstring
CC0E37B2 <Cint>k__BackingField
CD8CF980 value
CD9EBF30 ConsoleApp1.Root
CE8394AA <Cbool>k__BackingField
D30B37B2 Cbool
D917C2B8 <Cstring>k__BackingField
Вообще достаточно воспроизвести вот так:
Code: Select all
private static void Main(string[] args)
{
string test = "c0ffee";
Console.WriteLine(myDeserializedClass.GetType().FullName);
}
На всякий приложил тестовый проект.
p.s. Простой aspnet проект тоже не стартует после накрытия протекта, но пока надо бы с этого начать)
Re: Защита .NET бинарников под Linux
Posted: Mon Apr 08, 2024 2:04 pm
by Admin
Просьба в архивы включать в том числе и откомпилированные бинарники.
Re: Защита .NET бинарников под Linux
Posted: Mon Apr 08, 2024 2:18 pm
by DiklosGroupLtd
Admin wrote: ↑Mon Apr 08, 2024 2:04 pm
Просьба в архивы включать в том числе и откомпилированные бинарники.
Прошу прощения, впредь буду включать бинари.
Я так понял что моя проблема возникает при опубликовании приложения (dotnet publish)
Приложил архив, вас должно заинтересовать \bin\Release\net8.0\publish\linux-x64\
Re: Защита .NET бинарников под Linux
Posted: Mon Apr 08, 2024 2:29 pm
by Admin
Названия переменных "слетают" (Я так понял вместо названий идёт их hex адрес)
Это не названия переменных слетают, а vmprotect их переименовывает (опция "Удалять отладочную информацию"). В выходном MAP файле сохраняется информация о новых и старых именах для работы с "Stack Trace Decoder".
Я так понял что моя проблема возникает при опубликовании приложения (dotnet publish)
Ваша проблема возникает из-за того, что вам нужно исключить класс Root из переименования.
Code: Select all
[Obfuscation(Feature = "renaming", Exclude = true, ApplyToMembers = true)]
class Root {
...
Re: Защита .NET бинарников под Linux
Posted: Tue Apr 09, 2024 2:46 pm
by DiklosGroupLtd
Admin wrote: ↑Mon Apr 08, 2024 2:29 pm
Названия переменных "слетают" (Я так понял вместо названий идёт их hex адрес)
Это не названия переменных слетают, а vmprotect их переименовывает (опция "Удалять отладочную информацию"). В выходном MAP файле сохраняется информация о новых и старых именах для работы с "Stack Trace Decoder".
Я так понял что моя проблема возникает при опубликовании приложения (dotnet publish)
Ваша проблема возникает из-за того, что вам нужно исключить класс Root из переименования.
Code: Select all
[Obfuscation(Feature = "renaming", Exclude = true, ApplyToMembers = true)]
class Root {
...
Спасибо, ещё буду проверять но пока работает
Если вдруг возникнут сложности - я отпишусь тут