Как сделать, чтобы вино нашло mscoree.dll?

Вопрос или проблема

Я получаю это сообщение, когда пытаюсь загрузить 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-приложение.

Оцените материал
Добавить комментарий

Капча загружается...