Защита .NET бинарников под Linux

Issues related to VMProtect
Post Reply
DiklosGroupLtd
Posts: 12
Joined: Fri May 27, 2022 12:49 pm
Contact:

Защита .NET бинарников под Linux

Post by DiklosGroupLtd »

Здравствуйте! Есть ли планы реализации защиты .NET бинарей под линкус?
Ибо не сразу узнал что защита .NET только в Windows, а кроссплатформенный .NET так и просится под Linux и MacOS
Admin
Site Admin
Posts: 2584
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Защита .NET бинарников под Linux

Post by Admin »

Какая может быть защита .NET бинарников в среде, которая даже не создает файловую проекцию в памяти для загружаемого модуля? Все внутренности файла живут исключительно внутри .NET рантайма и до них невозможно достучаться через GetHINSTANCE.
DiklosGroupLtd
Posts: 12
Joined: Fri May 27, 2022 12:49 pm
Contact:

Re: Защита .NET бинарников под Linux

Post by DiklosGroupLtd »

Admin wrote:Какая может быть защита .NET бинарников в среде, которая даже не создает файловую проекцию в памяти для загружаемого модуля? Все внутренности файла живут исключительно внутри .NET рантайма и до них невозможно достучаться через GetHINSTANCE.
Я в целом хочу узнать планируется ли добавление защиты .NET приложений на ОС Linux, сейчас же никакой защиты нет для бинарей под линукс, а она очень нужна :)
Admin
Site Admin
Posts: 2584
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Защита .NET бинарников под Linux

Post by Admin »

К сожалению у нас нет таких планов, но в любом случае возможна разработка такой версии за дополнительную плату.
Admin
Site Admin
Posts: 2584
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Защита .NET бинарников под Linux

Post by Admin »

В версии 3.8.7.2037 добавлена поддержка .NET для Linux (не путать с NET Framework под Mono).
DiklosGroupLtd
Posts: 12
Joined: Fri May 27, 2022 12:49 pm
Contact:

Re: Защита .NET бинарников под Linux

Post by DiklosGroupLtd »

Admin wrote: Tue Apr 02, 2024 10:51 am В версии 3.8.7.2037 добавлена поддержка .NET для Linux (не путать с NET Framework под Mono).
Отличные новости! :D
Проверил простой 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);
}
На всякий приложил тестовый проект.
ConsoleApp1.zip
(1.47 KiB) Downloaded 38 times
p.s. Простой aspnet проект тоже не стартует после накрытия протекта, но пока надо бы с этого начать)
Admin
Site Admin
Posts: 2584
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Защита .NET бинарников под Linux

Post by Admin »

Просьба в архивы включать в том числе и откомпилированные бинарники.
DiklosGroupLtd
Posts: 12
Joined: Fri May 27, 2022 12:49 pm
Contact:

Re: Защита .NET бинарников под Linux

Post by DiklosGroupLtd »

Admin wrote: Mon Apr 08, 2024 2:04 pm Просьба в архивы включать в том числе и откомпилированные бинарники.
Прошу прощения, впредь буду включать бинари.
Я так понял что моя проблема возникает при опубликовании приложения (dotnet publish)
Приложил архив, вас должно заинтересовать \bin\Release\net8.0\publish\linux-x64\
ConsoleApp1.zip
(844.47 KiB) Downloaded 39 times
Admin
Site Admin
Posts: 2584
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Защита .NET бинарников под Linux

Post by Admin »

Названия переменных "слетают" (Я так понял вместо названий идёт их hex адрес)
Это не названия переменных слетают, а vmprotect их переименовывает (опция "Удалять отладочную информацию"). В выходном MAP файле сохраняется информация о новых и старых именах для работы с "Stack Trace Decoder".
Я так понял что моя проблема возникает при опубликовании приложения (dotnet publish)
Ваша проблема возникает из-за того, что вам нужно исключить класс Root из переименования.

Code: Select all

[Obfuscation(Feature = "renaming", Exclude = true, ApplyToMembers = true)]
class Root {
...
DiklosGroupLtd
Posts: 12
Joined: Fri May 27, 2022 12:49 pm
Contact:

Re: Защита .NET бинарников под Linux

Post 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 {
...
Спасибо, ещё буду проверять но пока работает :D
Если вдруг возникнут сложности - я отпишусь тут
Post Reply