You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

Требование 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)

Решение:

  1. Убедиться, что файл CodeStorage64.so находится в той же папке, что и запускаемая защищенная сборка.
  2. Убедиться, что программа запущена с LD_LIBRARY_PATH, хранящим путь к папке с запускаемой защищенной сборкой, т.е. вместо dotnet MyApp.dll необходимо запустить программу как LD_LIBRARY_PATH=. dotnet MyApp.dll.
  3. Необходимо проверить права доступа (чтение, запись, запуск) пользователя и пользователя-владельца и, если требуется, изменить их или попробовать запустить от пользователя root. 

Connect failed

Признак:

[2021/08/09 08:40:52:6790] N: Connect failed errno=111

Решение:

  1. Убедиться, что работает grdcontrol. При этом он должен быть запущен от пользователя root (sudo ./grdcontrol).
  2. Убедиться, что рядом находится конфигурационный файл 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().



  • No labels