Требование hostpolicy
Признак:
dotnet MyApp.dll A fatal error was encountered. The library 'libhostpolicy.so' required to execute the application was not found in '/home/sampleuser/Documents/Tests/netcoreapp/MyApp/Result/'. Failed to run as a self-contained app. If this should be a framework-dependent app, add the /home/sampleuser/Documents/Tests/netcoreapp/MyApp/Result/MyApp.runtimeconfig.json file specifying the appropriate framework.
Решение:
Необходимо скопировать файл MyApp.runtimeconfig.json из папки с оригинальной сборкой в папку с защищенной сборкой (в примере - по пути /home/sampleuser/Documents/Tests/netcoreapp/MyApp/Result/).
System.DllNotFoundException
Признак:
Unhandled exception. System.TypeInitializationException: The type initializer for '<Module>' threw an exception. ---> System.DllNotFoundException: Unable to load shared library 'CodeStorage64.dll' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: libCodeStorage64.dll: cannot open shared object file: No such file or directory at Templates.CommonTemplate.Į(IntPtr Ǩ, IntPtr Ǩ) at Templates.CommonTemplate.į(IntPtr Ǩ, IntPtr Ǩ) at Templates.CommonTemplate.ĭ(Int32 Ǩ, Int32 Ǩ) at .cctor() --- End of inner exception stack trace --- Aborted (core dumped)
Решение:
- Убедиться, что файл CodeStorage64.so находится в той же папке, что и запускаемая защищенная сборка.
- Убедиться, что программа запущена с LD_LIBRARY_PATH, хранящим путь к папке с запускаемой защищенной сборкой, т.е. вместо dotnet MyApp.dll необходимо запустить программу как LD_LIBRARY_PATH=. dotnet MyApp.dll.
- Необходимо проверить права доступа (чтение, запись, запуск) пользователя и пользователя-владельца и, если требуется, изменить их или попробовать запустить от пользователя root.
Connect failed
Признак:
[2021/08/09 08:40:52:6790] N: Connect failed errno=111
Решение:
- Убедиться, что работает grdcontrol. При этом он должен быть запущен от пользователя root (sudo ./grdcontrol).
- Убедиться, что рядом находится конфигурационный файл grdcontrol.properties.
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object
Характерная ошибка при защите .NET программы без использования опции Проброс исключений.
Причина:
Отсутствие LD_LIBRARY_PATH=. при запуске как dotnet ./SampleDotNetCoreApp.dll.
Признак:
При отсутствии обфускации
at SampleDotNetCoreApp.Program.Main(String[] args)
При обфускации
at i.i(String[] i)
Решение:
Необходимо задавать LD_LIBRARY_PATH=. для .NET Core и .NET 5+, поскольку внутри используется функция dlopen().