Ошибка "Cannot create boxed ByRef-like values" после протекта

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

Ошибка "Cannot create boxed ByRef-like values" после протекта

Post by DiklosGroupLtd »

Здравствуйте! Заметил проблему:
После накидывания функции Main(string[] args) виртой или ультрой вылетает stacktrace:

Code: Select all

Unhandled exception. System.NotSupportedException: Cannot dynamically create an instance of type 'System.Runtime.CompilerServices.DefaultInterpolatedStringHandler'. Reason: Cannot create boxed ByRef-like values.
   at System.RuntimeType.ActivatorCache..ctor(RuntimeType rt)
   at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean wrapExceptions)
   at 2588DD38.17A27FAD()
   at 2588DD38.9BB07097(Object 6B0B01A5, Int32 2F03F1B4)
--- End of stack trace from previous location ---
   at 2588DD38.5B2C4C06()
   at 2588DD38.9BB07097(Object 6B0B01A5, Int32 2F03F1B4)
   at VMP_SmallRepresentationErr.Program.Main(String[] args)
Aborted
Компилировал через

Code: Select all

dotnet publish -c Release -r linux-x64
В конфиге:
1. Выключил "Удалять отладочную информацию"
2. Навесил на Main(string[] args) вирту
Остальное не трогал.

Запускаю в Ubuntu 22.04 WSL2:

Code: Select all

Linux DESKTOP-GAMANIA 5.15.153.1-microsoft-standard-WSL2-gamania-hotfix2 #1 SMP Fri Mar 29 23:14:13 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Ubuntu GLIBC 2.35-0ubuntu3.8
(Если использовать Мутацию - то всё работает.)

VMProtect Professional v3.8.8 build 2040
Прикладываю архив с сурсами для репрезентации ошибки и конфигом vmp (если понадобится):
VMP_SmallRepresentationErr.zip
Все файлы в архиве если что
(718.09 KiB) Downloaded 616 times
UPD: Обновился до 3.8.9 build 2125 - не помогло, проблема осталась
Admin
Site Admin
Posts: 2686
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Ошибка "Cannot create boxed ByRef-like values" после протекта

Post by Admin »

DiklosGroupLtd
Posts: 15
Joined: Fri May 27, 2022 12:49 pm
Contact:

Re: Ошибка "Cannot create boxed ByRef-like values" после протекта

Post by DiklosGroupLtd »

Admin wrote: Fri Jul 26, 2024 3:05 am viewtopic.php?t=31451
Я видел данный пост, но тут проблема в том, как быть в такой ситуации?
Просто выходит так, что в программе нельзя иметь код, в котором будет какой либо массив, ведь:
List<T>, IEnumerable<T>, так и T[] при протекте выдают эту самую ошибку. (Если накидывается вирта или ультра)
Я проверял с string, object и int.

Не сможете никак помочь? Без массивов очень тяжко будет..
Вне зависимости от ответа спасибо за помощь :D
Admin
Site Admin
Posts: 2686
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Ошибка "Cannot create boxed ByRef-like values" после протекта

Post by Admin »

Там проблема в System.Runtime.CompilerServices.DefaultInterpolatedStringHandler, который как раз ByRef-like. А List<T> - это вообще class, а не struct и с ним нет никаких проблем.
DiklosGroupLtd
Posts: 15
Joined: Fri May 27, 2022 12:49 pm
Contact:

Re: Ошибка "Cannot create boxed ByRef-like values" после протекта

Post by DiklosGroupLtd »

Admin wrote: Fri Jul 26, 2024 9:06 am Там проблема в System.Runtime.CompilerServices.DefaultInterpolatedStringHandler, который как раз ByRef-like. А List<T> - это вообще class, а не struct и с ним нет никаких проблем.
Пардон, действительно, полез в DnSpy, увидел там DefaultInterpolatedStringHandler и понял что проблема в конкатанации строк.
Конечно интересно что сами мелкомягкие под капотом используют DefaultInterpolatedStringHandler, вроде раньше как помню у них был String.Format, если соединять строки через $"{var}".
(Да, до .NET 5 включительно, используется String.Format под капотом, а уже с 6 - DefaultInterpolatedStringHandler )
В целом понятно как теперь решать проблему на нашей стороне.
Ну... если в будущем сможете пофиксить проблему с DefaultInterpolatedStringHandler - будет прям замечательно.

Всё равно спасибо за помощь. Хорошего дня :wink:
Admin
Site Admin
Posts: 2686
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Ошибка "Cannot create boxed ByRef-like values" после протекта

Post by Admin »

Исправлено в 2171 билде.
Post Reply