Защита .NET бинарников под Linux
-
- Posts: 12
- Joined: Fri May 27, 2022 12:49 pm
- Contact:
Защита .NET бинарников под Linux
Здравствуйте! Есть ли планы реализации защиты .NET бинарей под линкус?
Ибо не сразу узнал что защита .NET только в Windows, а кроссплатформенный .NET так и просится под Linux и MacOS
Ибо не сразу узнал что защита .NET только в Windows, а кроссплатформенный .NET так и просится под Linux и MacOS
Re: Защита .NET бинарников под Linux
Какая может быть защита .NET бинарников в среде, которая даже не создает файловую проекцию в памяти для загружаемого модуля? Все внутренности файла живут исключительно внутри .NET рантайма и до них невозможно достучаться через GetHINSTANCE.
-
- Posts: 12
- Joined: Fri May 27, 2022 12:49 pm
- Contact:
Re: Защита .NET бинарников под Linux
Я в целом хочу узнать планируется ли добавление защиты .NET приложений на ОС Linux, сейчас же никакой защиты нет для бинарей под линукс, а она очень нужнаAdmin wrote:Какая может быть защита .NET бинарников в среде, которая даже не создает файловую проекцию в памяти для загружаемого модуля? Все внутренности файла живут исключительно внутри .NET рантайма и до них невозможно достучаться через GetHINSTANCE.
Re: Защита .NET бинарников под Linux
К сожалению у нас нет таких планов, но в любом случае возможна разработка такой версии за дополнительную плату.
Re: Защита .NET бинарников под Linux
В версии 3.8.7.2037 добавлена поддержка .NET для Linux (не путать с NET Framework под Mono).
-
- Posts: 12
- Joined: Fri May 27, 2022 12:49 pm
- Contact:
Re: Защита .NET бинарников под Linux
Отличные новости!
Проверил простой 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#
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);
}
Re: Защита .NET бинарников под Linux
Просьба в архивы включать в том числе и откомпилированные бинарники.
-
- Posts: 12
- Joined: Fri May 27, 2022 12:49 pm
- Contact:
Re: Защита .NET бинарников под Linux
Прошу прощения, впредь буду включать бинари.
Я так понял что моя проблема возникает при опубликовании приложения (dotnet publish)
Приложил архив, вас должно заинтересовать \bin\Release\net8.0\publish\linux-x64\
Re: Защита .NET бинарников под Linux
Это не названия переменных слетают, а vmprotect их переименовывает (опция "Удалять отладочную информацию"). В выходном MAP файле сохраняется информация о новых и старых именах для работы с "Stack Trace Decoder".Названия переменных "слетают" (Я так понял вместо названий идёт их hex адрес)
Ваша проблема возникает из-за того, что вам нужно исключить класс Root из переименования.Я так понял что моя проблема возникает при опубликовании приложения (dotnet publish)
Code: Select all
[Obfuscation(Feature = "renaming", Exclude = true, ApplyToMembers = true)]
class Root {
...
-
- Posts: 12
- Joined: Fri May 27, 2022 12:49 pm
- Contact:
Re: Защита .NET бинарников под Linux
Спасибо, ещё буду проверять но пока работаетAdmin wrote: ↑Mon Apr 08, 2024 2:29 pmЭто не названия переменных слетают, а vmprotect их переименовывает (опция "Удалять отладочную информацию"). В выходном MAP файле сохраняется информация о новых и старых именах для работы с "Stack Trace Decoder".Названия переменных "слетают" (Я так понял вместо названий идёт их hex адрес)
Ваша проблема возникает из-за того, что вам нужно исключить класс Root из переименования.Я так понял что моя проблема возникает при опубликовании приложения (dotnet publish)
Code: Select all
[Obfuscation(Feature = "renaming", Exclude = true, ApplyToMembers = true)] class Root { ...
Если вдруг возникнут сложности - я отпишусь тут