Вопрос или проблема
Я получаю это сообщение, когда пытаюсь загрузить PE-бинарный файл для взлома игры на Kali.
Запустить его — это не часть задачи.
0009:err:module:fixup_imports_ilonly mscoree.dll не найден, IL-only бинарный файл L"test.exe" не может быть загружен.
Однако у меня есть:
$ find / -iname "*mscoree.dll*" 2>/dev/null
/usr/lib/i386-linux-gnu/wine/mscoree.dll.so
/usr/lib/i386-linux-gnu/wine/fakedlls/mscoree.dll
/usr/lib/x86_64-linux-gnu/wine/mscoree.dll.so
/usr/lib/x86_64-linux-gnu/wine/fakedlls/mscoree.dll
В чем проблема?
Я пытался исправить это с помощью разных команд winetricks, таких как:
winetricks dotnet45
winetricks forcemono
Включая установку mono-complete.
В зависимости от того, какую версию Wine вы используете, вас спросят, хотите ли вы установить Mono. Mono включает в себя все необходимое для установки и загрузки mscoree.dll. В противном случае dotnet35 или более поздняя версия от winetricks должна предоставить ту же библиотеку. Также может быть проблема с вашим текущим префиксом. Создайте новый, чтобы убедиться, что он работает правильно.
Ответ или решение
Для решения проблемы с отсутствием библиотеки mscoree.dll при запуске бинарного файла на Wine в Kali Linux необходимо предпринять несколько шагов. Вашей задачей является заставить Wine корректно находить и использовать данную библиотеку, чтобы можно было запустить ваш .NET PE-бинарный файл. Рассмотрим детали и предложим шаги по решению проблемы.
Фиксация проблемы
Ошибка, которую вы сталкиваетесь, связана с попыткой Wine загрузить файл. Вы видите следующее сообщение об ошибке:
0009:err:module:fixup_imports_ilonly mscoree.dll not found, IL-only binary L"test.exe" cannot be loaded.
Это означает, что Wine не может найти и загрузить библиотеку mscoree.dll, необходимую для выполнения .NET-приложения. Хотя файлы, которые имитируют эту библиотеку, присутствуют:
/usr/lib/i386-linux-gnu/wine/mscoree.dll.so
/usr/lib/i386-linux-gnu/wine/fakedlls/mscoree.dll
/usr/lib/x86_64-linux-gnu/wine/mscoree.dll.so
/usr/lib/x86_64-linux-gnu/wine/fakedlls/mscoree.dll
Шаги по решению проблемы
1. Установка .NET через Winetricks
Попробуйте установить версию .NET Framework или Mono, необходимую для вашего приложения. В вашем случае вы уже пробовали использовать:
winetricks dotnet45
Тем не менее, возможно, стоит уточнить, какая конкретно версия .NET требуется для вашего приложения и установить именно её. Также может понадобиться установить более ранние версии, такие как dotnet35, если основывается на более старой версии .NET.
2. Использование Mono
Mono предлагает альтернативный путь к запуску .NET-приложений. Убедитесь, что у вас установлено mono-complete, и попробуйте команду:
winetricks forcemono
Это заставит Wine использовать совместимость с Mono для вашего приложения, что может решить проблему с mscoree.dll.
3. Создание нового Wine-префикса
Проблема может заключаться в повреждении текущего Wine-префикса. Создание нового префикса может помочь:
WINEARCH=win32 WINEPREFIX=~/wine32_prefix winecfg
winetricks dotnet45
См. что установка .NET на новом префиксе может устранить проблему. После создания нового префикса попробуйте снова запустить приложение.
4. Проверка установок
Убедитесь, что вы используете самую актуальную версию Wine, обновив ее через менеджер пакетов:
sudo apt update
sudo apt upgrade wine
5. Диагностика и логирование
Запустите Wine с дополнительной диагностикой:
WINEDEBUG=+loaddll wine your_application.exe
Это даст больше информации о том, где может возникать проблема.
Заключение
Эти шаги должны помочь в решении проблемы с mscoree.dll в Wine. Каждый из методов может потребовать тестирования и тонкой настройки в зависимости от вашего конкретного приложения и среды. Надеюсь, это поможет вам успешно запустить ваше .NET-приложение.