как установить масс эффект 2 на виндовс 10

Mass effect 2 windows 10 не запускается. Mass Effect не запускается: решение проблем. Что делать, если ничего не помогло

Серия ролевых компьютерных игр Mass Effect вышла в трех полноценных частях. На данный момент к релизу готовится новая игра в этой серии, которая ознаменует перезапуск космической саги. Поэтому данный момент является отличным поводом пройти оригинальную трилогию заново и вспомнить все события виртуальной вселенной. Для тех, у кого встречаются проблемы с игрой, написана данная статья. Ниже вы узнаете, почему Mass Effect не запускается, и как это исправить.

Системные требования

Для начал сверьте конфигурацию вашего персонального компьютера с минимальными и рекомендуемыми требованиями, которые составлены разработчиками.

Итак, для запуска игры на минимальных настройках качества графики вам потребуется приблизительно следующая система: минимум 2-ядерный процессор «Интел» или АМД с частотой 2,4 ГГц или выше, 2 Гб оперативной памяти, видеокарта с 512 Мб памяти на борту и 12 Гб для установки на жесткий диск. Поскольку игра выходила давно, она поддерживает операционные системы «Виндовс ХР» и «Виста». Поэтому Mass Effect не запускается на Windows 7. Подробнее о решении этой проблемы читайте далее.

Для игры на максимальных настройках качества графики вы должны иметь конфигурацию персонального компьютера не ниже следующей: 2-яденый процессор «Интел» или АМД с частотой 2,5 ГГц на каждое ядро или больше, 3 Гб оперативной памяти и 12 Гб свободного места на жестком диске.

Если ваш компьютер не соответствует даже минимальным требованиям, то Mass Effect не запускается. Если ПК подходит под описание, а игра все равно не работает, то переходите к следующему пункту.

Драйвера

Первым делом обновите драйвер на видеокарту до актуальной на текущий момент версии. Возможно, в предыдущий раз обеспечение установилось некорректно. Все актуальные драйвера с необходимым набором программ можно найти на сайтах производителей видеокарт «Нвидиа» или АМД.

Перед установкой обязательно удалите старый драйвер, а потом начинайте все нового. Тогда вы сможете избежать конфликтов оборудования.

Дополнительное ПО

Далее вам необходимо установить пакет дополнительных программ, которые являются обязательными почти для всех компьютерных игр. Даже если утилиты уже установлены на ПК, их следует обновить до новых версий. В число таких программ входят: DirectX, Net.Framework, Microsoft C++. Также игра может потребовать дополнительные программы. Ищите их на официальном сайте разработчиков.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

В случае с софтом делаем все так же, как и с драйверами: удаляем старые версии и ставим новые. Если Mass Effect не запускается и после этого, то переходите к следующему способу решения проблемы.

Что еще можно сделать?

Если вы используете «Виндовс 7» или новее, то у вас могут возникнуть проблемы с совместимостью. Для их устранения зайдите в свойства ярлыка игры Mass Effect и перейдите во вкладку «Совместимость». Выберите ОС «Виндовс ХР» или «Виста» и попробуйте запустить игру заново. Также поставьте приложение в режим Это поможет избавиться от бесконечной загрузки в начале или черного экрана (у всех данная проблема отображается по-разному).

Лицензия или «пиратка»?

Если вы используете лицензионную версию игры из магазина Steam, то можете легко проверить целостность игровых файлов на повреждения. Для этого зайдите в свойства игры и нажмите кнопку «Проверить кэш». Программа автоматически проверит все файлы и скачает поврежденные или недостающие заново.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

С пиратской версией все сложнее. Во-первых, попробуйте поставить на игру другой кряк (crack). Если это не помогло, то скачайте репак от других сборщиков, поскольку пиратские версии не отличаются стабильной работой на всех персональных компьютерах.

Все вышеописанные причины и способы решения также могут подойти к последующим играм серии. Если Mass Effect 3 не запускается на вашем компьютере, то вы можете решить проблему любым способом, кроме (поскольку третья часть выпускалась под новые операционные системы).

Как и множество других игр, в жанре ролевого боевика, Mass Effect может не запустится по многим причинам.

В своей статье я попытаюсь помочь вам с решением различных проблем. Итак, первым делом смотрим на системные требования к игре и сравниваем их с данными вашего компьютера.

Если ваш ПК значительно уступает, то лучше всего не тратится на игру и сделать апгрейд компьютера.

После этого, внимательно просматриваем путь к игре, здесь не должны находить русские буквы и символы. Потом нужно обновить ваши драйвера на видеокарту до последней версии. С этим вам поможет справиться программа SlimDrivers.

Также пробуйте запустить игру от имени администратора.

При входе в игру не забываем отключать антивирус, он может заблокировать файлы игры.

И напоследок проверьте ваш компьютер на ошибки и сделайте дефрагментацию.

Что делать, если ничего не помогло?

Вам необходимо проделать определенную работу с вашей системой. Предлагаем сделать это с помощью двух полезных программ.

Возможно, вы думаете, что Windows всегда оповещает пользователей о наличии новых обновлений. Так и есть, он показывает оповещения, но только на наличие обновлений для Windows и видеокарты. Но, кроме этого, есть еще множество драйверов, которые необходимо регулярно обновлять.

Этот сайт не был одобрен Корпорацией Valve и не аффилирован с Корпорацией Valve и ее лицензиарами. Название и логотип Steam являются товарными знаками или зарегистрированными товарными знаками Корпорации Valve в США и/или других странах. Все права сохранены. Содержимое игр и игровые материалы (с) Корпорация Valve. Все названия продуктов, компаний и марок, логотипы и товарные знаки являются собственностью соответствующих владельцев.
Наш магазин лицензионных игр работает только с проверенными официальными дилерами, поэтому гарантирует качество всей, без исключения, продукции. Гарантия на ключи вечная.

К сожалению, в играх бывают изъяны: тормоза, низкий FPS, вылеты, зависания, баги и другие мелкие и не очень ошибки. Нередко проблемы начинаются еще до начала игры, когда она не устанавливается, не загружается или даже не скачивается. Да и сам компьютер иногда чудит, и тогда в Mass Effect 2 вместо картинки черный экран, не работает управление, не слышно звук или что-нибудь еще.

Что сделать в первую очередь

Второе, что стоит сделать при возникновении каких-либо проблем с Mass Effect 2, это свериться с системными требованиями. По-хорошему делать это нужно еще до покупки, чтобы не пожалеть о потраченных деньгах.

Минимальные системные требования Mass Effect 2:

Windows XP, Intel Core 2 Duo, 1 Gb ОЗУ, 15 Gb HDD, NVIDIA GeForce 6800 256 Mb

Каждому геймеру следует хотя бы немного разбираться в комплектующих, знать, зачем нужна видеокарта, процессор и другие штуки в системном блоке.

Файлы, драйверы и библиотеки

Практически каждое устройство в компьютере требует набор специального программного обеспечения. Это драйверы, библиотеки и прочие файлы, которые обеспечивают правильную работу компьютера.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

В Mass Effect 2 черный экран, белый экран, цветной экран. Решение

Проблемы с экранами разных цветов можно условно разделить на 2 категории.

Во-первых, они часто связаны с использованием сразу двух видеокарт. Например, если ваша материнская плата имеет встроенную видеокарту, но играете вы на дискретной, то Mass Effect 2 может в первый раз запускаться на встроенной, при этом самой игры вы не увидите, ведь монитор подключен к дискретной видеокарте.

Во-вторых, цветные экраны бывают при проблемах с выводом изображения на экран. Это может происходить по разным причинам. Например, Mass Effect 2 не может наладить работу через устаревший драйвер или не поддерживает видеокарту. Также черный/белый экран может выводиться при работе на разрешениях, которые не поддерживаются игрой.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Mass Effect 2 вылетает. В определенный или случайный момент. Решение

Если вылет происходит в случайный момент времени без какой-то закономерности, то с вероятностью в 99% можно сказать, что это ошибка самой игры. В таком случае исправить что-то очень трудно, и лучше всего просто отложить Mass Effect 2 в сторону и дождаться патча.

Однако если вы точно знаете, в какие моменты происходит вылет, то можно и продолжить игру, избегая ситуаций, которые провоцируют сбой.

Однако если вы точно знаете, в какие моменты происходит вылет, то можно и продолжить игру, избегая ситуаций, которые провоцируют сбой. Кроме того, можно скачать сохранение Mass Effect 2 и обойти место вылета.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Mass Effect 2 зависает. Картинка застывает. Решение

Ситуация примерно такая же, как и с вылетами: многие зависания напрямую связаны с самой игрой, а вернее с ошибкой разработчика при ее создании. Впрочем, нередко застывшая картинка может стать отправной точкой для расследования плачевного состояния видеокарты или процессора.

Так что если картинка в Mass Effect 2 застывает, то воспользуйтесь программами для вывода статистики по загрузке комплектующих. Быть может, ваша видеокарта уже давно исчерпала свой рабочий ресурс или процессор греется до опасных температур?

Если греется видеокарта, то стоит воспользоваться драйвером или официальной утилитой от производителя. Нужно увеличить количество оборотов кулеров и проверить, снизится ли рабочая температура.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Mass Effect 2 тормозит. Низкий FPS. Просадки частоты кадров. Решение

При тормозах и низкой частоте кадров в Mass Effect 2 первым делом стоит снизить настройки графики. Разумеется, их много, поэтому прежде чем снижать все подряд, стоит узнать, как именно те или иные настройки влияют на производительность.

Качество моделей (иногда просто детализация). Эта настройка определяет, какой набор 3D-моделей будет использоваться в игре. Чем выше качество, тем больше полигонов. Соответственно, высокополигональные модели требуют большей вычислительной мощности видекарты (не путать с объемом видеопамяти!), а значит снижать этот параметр следует на видеокартах с низкой частотой ядра или памяти.

Нередко разработчики добавляют дополнительные настройки, связанные с тенями:

Например, MSAA работает «в лоб», создавая сразу 2, 4 или 8 рендеров, поэтому частота кадров снижается соответственно в 2, 4 или 8 раз. Такие алгоритмы как FXAA и TAA действуют немного иначе, добиваясь сглаженной картинки путем высчитывания исключительно краев и с помощью некоторых других ухищрений. Благодаря этому они не так сильно снижают производительность.

Что снижать в первую очередь? Как правило, наибольшую нагрузку вызывают тени, сглаживание и эффекты освещения, так что лучше начать именно с них.

Часто геймерам самим приходится заниматься оптимизацией Mass Effect 2. Практически по всем крупным релизам есть различные соответствующие и форумы, где пользователи делятся своими способами повышения производительности.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Mass Effect 2 лагает. Большая задержка при игре. Решение

Многие путают «тормоза» с «лагами», но эти проблемы имеют совершенно разные причины. Mass Effect 2 тормозит, когда снижается частота кадров, с которой картинка выводится на монитор, и лагает, когда задержка при обращении к серверу или любому другому хосту слишком высокая.

Именно поэтому «лаги» могут быть только в сетевых играх. Причины разные: плохой сетевой код, физическая удаленность от серверов, загруженность сети, неправильно настроенный роутер, низкая скорость интернет-соединения.

Впрочем, последнее бывает реже всего. В онлайн-играх общение клиента и сервера происходит путем обмена относительно короткими сообщениями, поэтому даже 10 Мб в секунду должно хватить за глаза.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

В Mass Effect 2 нет звука. Ничего не слышно. Решение

Если же звука нет вообще, то дело однозначно в настройке компьютера. Возможно, неправильно установлены драйвера звуковой карты, а может быть звука нет из-за какой-то специфической ошибки нашей любимой ОС Windows.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

В Mass Effect 2 не работает управление. Mass Effect 2 не видит мышь, клавиатуру или геймпад. Решение

Таким образом, ошибки в самой игре практически исключены, почти всегда проблема на стороне пользователя. Решить ее можно по-разному, но, так или иначе, придется обращаться к драйверу. Обычно при подключении нового устройства операционная система сразу же пытается задействовать один из стандартных драйверов, но некоторые модели клавиатур, мышей и геймпадов несовместимы с ними.

Таким образом, нужно узнать точную модель устройства и постараться найти именно ее драйвер. Часто с устройствами от известных геймерских брендов идут собственные комплекты ПО, так как стандартный драйвер Windows банально не может обеспечить правильную работу всех функций того или иного устройства.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Mass Effect 2, скачанная с торрента не работает. Решение

Поэтому при возникновении каких-либо проблем с играми, скачанными с торрентов или же взломанных с помощью тех или иных средств, следует сразу же удалить «пиратку», почистить компьютер при помощи антивируса и лицензионную копию игры. Это не только убережет от сомнительного ПО, но и позволит скачивать обновления для игры и получать официальную поддержку от ее создателей.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Mass Effect 2 выдает ошибку об отсутствии DLL-файла. Решение

Как правило, проблемы, связанные с отсутствием DLL-библиотек, возникают при запуске Mass Effect 2, однако иногда игра может обращаться к определенным DLL в процессе и, не найдя их, вылетать самым наглым образом.

Если ваша проблема оказалась более специфической или же способ, изложенный в данной статье, не помог, то вы можете спросить у других пользователей в нашей рубрике « ». Они оперативно помогут вам!

Благодарим за внимание!

Если вы столкнулись с тем, что Mass Effect 2 тормозит, вылетает, Mass Effect 2 не запускается, Mass Effect 2 не устанавливается, в Mass Effect 2 не работает управление, нет звука, выскакивают ошибки, в Mass Effect 2 не работают сохранения – предлагаем вам самые распространенные способы решения данных проблем.

Первое – проверьте, соответствуют ли характеристики вашего ПК минимальным системным требованиям:

Обязательно обновите драйвера видеокарты и другое ПО

Перед тем, как вспоминать самые нехорошие слова и высказывать их в сторону разработчиков, не забудьте отправиться на официальный сайт производителя своей видеокарты и скачать самые свежие драйвера. Зачастую, к релизу игр готовятся специально оптимизированные для них драйвера. Также можно попробовать установить более позднюю версию драйверов, если проблема не решается установкой текущей версии.

Важно помнить, что следует загружать только окончательные версии видеокарт – старайтесь не использовать бета-версии, так как в них может быть большое количество не найденных и не исправленных ошибок.

Mass Effect 2 не запускается

Многие проблемы с запуском игр случаются по причине некорректной установки. Проверьте, не было ли ошибок во время установки, попробуйте удалить игру и запустить установщик снова, предварительно отключив антивирус – часто нужные для работы игры файлы по ошибке удаляются. Также важно помнить, что в пути до папки с установленной игрой не должно быть знаков кириллицы – используйте для названий каталогов только буквы латиницы и цифры.

Еще не помешает проверить, хватает ли места на HDD для установки. Можно попытаться запустить игру от имени Администратора в режиме совместимости с разными версиями Windows.

Mass Effect 2 тормозит. Низкий FPS. Лаги. Фризы. Зависает

Первое – установите свежие драйвера на видеокарту, от этого FPS в игре может значительно подняться. Также проверьте загруженность компьютера в диспетчере задач (открывается нажатием CTRL+SHIFT+ESCAPE). Если перед запуском игры вы видите, что какой-то процесс потребляет слишком много ресурсов – выключите его программу или просто завершите этот процесс из диспетчера задач.

Далее переходите к настройкам графики в игре. Первым делом отключите сглаживание и попробуйте понизить настройки, отвечающие за пост-обработку. Многие из них потребляют много ресурсов и их отключение значительно повысит производительность, не сильно повлияв на качество картинки.

Mass Effect 2 вылетает на рабочий стол

Если Mass Effect 2 у вас часто вылетает на рабочий слот, попробуйте начать решение проблемы со снижения качества графики. Вполне возможно, что вашему компьютеру просто не хватает производительности и игра не может работать корректно. Также стоит проверить обновления – большинство современных игр имеют систему автоматической установки новых патчей. Проверьте, не отключена ли эта опция в настройках.

Черный экран в Mass Effect 2

Чаще всего проблема с черным экраном заключается в проблеме с графическим процессором. Проверьте, удовлетворяет ли ваша видеокарта минимальным требованиям и поставьте свежую версию драйверов. Иногда черный экран является следствием недостаточной производительности CPU.

Если с железом все нормально, и оно удовлетворяет минимальным требованиям – попробуйте переключиться на другое окно (ALT+TAB), а потом вернуться к окну игры.

Mass Effect 2 не устанавливается. Зависла установка

Прежде всего проверьте, хватает ли у вас места на HDD для установки. Помните, что для корректной работы программы установки требуется заявленный объем места, плюс 1-2 гигабайта свободного пространства на системном диске. Вообще, запомните правило – на системном диске всегда должно быть хотя бы 2 гигабайта свободного места для временных файлов. Иначе как игры, так и программы, могут работать не корректно или вообще откажутся запуститься.

Проблемы с установкой также могут произойти из-за отсутствия подключения к интернету или его нестабильной работы. Также не забудьте приостановить работу антивируса на время установки игры – иногда он мешает корректному копированию файлов или удаляет их по ошибке, считая вирусами.

В Mass Effect 2 не работают сохранения

По аналогии с прошлым решением проверьте наличие свободного места на HDD – как на том, где установлена игра, так и на системном диске. Часто файлы сохранений хранятся в папке документов, которая расположена отдельно от самой игры.

В Mass Effect 2 не работает управление

Иногда управление в игре не работает из-за одновременного подключения нескольких устройств ввода. Попробуйте отключить геймпад или, если по какой-то причине у вас подключено две клавиатуры или мыши, оставьте только одну пару устройств. Если у вас не работает геймпад, то помните – официально игры поддерживают только контроллеры, определяющиеся как джойстики Xbox. Если ваш контроллер определяется иначе – попробуйте воспользоваться программами, эмулирующими джойстики Xbox (например, x360ce).

Не работает звук в Mass Effect 2

Проверьте, работает ли звук в других программах. После этого проверьте, не отключен ли звук в настройках самой игры и выбрано ли там устройство воспроизведения звука, к которому подключены ваши колонки или гарнитура. Далее следует во время работы игры открыть микшер и проверить, не отключен ли звук там.

Если используете внешнюю звуковую карту – проверьте наличие новых драйверов на сайте производителя.

Источник

Исправляем кривой запуск первого Mass Effect

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Часть 1

В последнее время я работал над собственным форком ME3Explorer [неофициальный редактор игр серии Mass Effect], содержащим множество важных улучшений и даже новые инструменты. Также я поработал над Mod Manager 5.1, который имеет удобные новые функции импорта сторонних модов, однако был отодвинут на второй план, пока я работал над новым фронтендом установщика ALOT.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Для его реализации я сотрудничал с CreeperLava и Aquadran; он должен упростить жизнь конечным пользователям, устанавливающим ALOT и его аддон (сторонние текстуры). Одна из моих проблем заключалась в том, что Origin не запускал игру после установки ALOT, если не запустить его с правами администратора. И поскольку запуск Origin при загрузке невозможно выполнить с правами админа, это очень раздражает. К тому же это влияет на мод MEUITM. Поэтому я начал разбираться, почему это происходит. Дело оказалось в идеальном сочетании реализации защиты, плохого кода и желания упростить жизнь других людей.

Сигнатуры файлов

И MEUITM, и ALOT модифицируют исполняемый файл MassEffect.exe, чтобы он мог использовать Large Address Aware. Это позволяет 32-битному процессу Mass Effect использовать до 4 ГБ ОЗУ вместо обычного 32-битного ограничения в 2 ГБ. При модификации флага LAA цифровая сигнатура MassEffect.exe оказывается поломанной — сигнатура используется для проверки того, что файл не модифицирован. После модификации файла сигнатура становится неверной.

Origin при выполнении процесса с повышенными правами проверяет, подписан ли EXE компанией EA и правилен ли он. Если он не подписан EA, то он не повышает права модуля обмена данными DRM. Mass Effect загружается, а затем немедленно закрывается, потому что разблокировка DRM не работает, ведь со стороны Origin ей не с чем общаться, поскольку отказано в повышении прав.

То есть при модификации EXE Origin будет отказываться запускать исполняемый файл игры с повышенными правами. Но нам нужен LAA, поэтому необходимо как-то обойти эту проблему. Наша единственная надежда заключается в том, чтобы помешать MassEffect.exe запускаться с правами администратора. Сначала нужно разобраться, как задан его запуск с правами администратора.

Изучив манифест EXE, я увидел, что он запускается как инициатор вызова — пользователь, запускающий EXE. Это означает, что этот исполняемый файл не должен требовать администраторских прав. Я проверил свои параметры совместимости, там тоже ничего не было. Каким-то образом права повышаются при запуске, но не через сам exe и не из-за моих настроек. В чём же хитрость? В Microsoft Windows Compatibility Database.

mirh (я встречался с ним в кругах любителей моддинга) провёл исследование того, почему Mass Effect вынужден запускаться с правами администратора. Он соответствует критериям базы данных — в ней есть запись для Mass Effect, в которой указано, что нужно всегда принудительно запускать параметры совместимости. Это логично — пользователь не должен конфигурировать параметры, если MS уже знает, какие из них работают (теоретически).

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Как видите, для этой игры есть две записи — MassEffect.exe (игра) и загрузчик (который, к сожалению, не включён в версию Origin). Для совместимости включается RunAsHighest (что означает права администратора). Критерии включения таковы:

Исправление

Итак, теперь у нас есть понимание, как это исправить, но почему в базе данных есть эта запись? Поскольку Demiurge/Bioware не поддерживают идею Least User Access (LUA), Mass Effect при самом первом запуске требует прав администратора для выполнения записи в ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432NODE\AGEIA Technologies. Если этот ключ не существует, он пытается создать его — без прав администратора у него нет для этого доступа, и игра просто вываливается. Похоже, в этом ключе содержится некая информация о том, что сейчас называется PhysX. Вероятно, запись в реестр мог внести и установщик игры, но разработчики реализовали это в самой игре.

Именно поэтому Microsoft вынуждает игру всегда запускаться с правами администратора, из-за этого единственного пункта. Это логично — если заставить её запускаться под администратором, но пользователю не нужно будет беспокоиться о параметрах совместимости. Однако из-за этой комбинации трёх проблем (LAA портит сигнатуру, MS принуждает запускаться игру с правами администратора, Origin отказывается работать с процессами с повышенными правами, имеющими сломанную сигнатуру EA) Mass Effect не запускается с Origin и LAA.

Как же нам это исправить? Просто изменим в EXE название продукта с Mass Effect на Mass_Effect. Серьёзно, это всё. Проверка критериев не срабатывает, игре больше не нужны права администратора и Origin доволен (если не считать постоянного ворчания из-за обновлений). В MEUITM и ALOT Installer мы добавили код, создающий ключ реестра с правами записи для текущего пользователя, поэтому если Mass Effect нужно создать эти ключи (допустим, если его никогда не запускали), то игра будет довольна.

Часть 2

Mass Effect на PC: что ожидать от порта с консолей середины 2000-х

Если вы не знали, Mass Effect вышла на PC в 2008 году, она была портирована с Xbox 360 студией под названием Demiurge, которая также разработала Pinnacle Station для Mass Effect. Это очень посредственный порт, не особо хорошо переживший смену времён. Он приемлем как игра, но имел множество проблем даже на момент выхода. LOD частиц работали неправильно, LOD текстур считывались в обратном порядке, параметры ini случайным образом сбрасывались на значения по умолчанию — проблем было довольно много. Но не было ничего, что бы полностью ломало игру.

Ну, или типа того. Была одна проблема, но вызванная не конкретно самой Mass Effect. Серьёзная проблема заключается в том, что Mass Effect требует для запуска прав администратора потому что Demiurge, похоже, считала, что все должны запускать игру как администратор — это вполне могло быть приемлемым, если бы игра разрабатывалась во время, когда была только Windows XP, однако на момент выпуска игры уже больше года существовала Windows Vista. Но даже Windows XP имела концепцию LUA (Least User Access) с разделёнными аккаунтами пользователей. Подробнее об этом можно прочитать в первой части статьи.

Ух ты, PhysX, моя любимая библиотека физики!

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Наверно, у меня небольшая неприязнь к этому SDK.

Mass Effect для PC работает на немного модифицированной версии Unreal Engine 3, который был выпущен примерно в конце 2006. По словам некоторых бывших разработчиков из BioWare, эта версия Unreal Engine тогда была немного сыроватой, если не сказать больше. Согласно рассказам этих разработчиков, было очень сложно работать с ней, потому что Epic Games сосредоточенно работала над Gears of War и не уделяла особо много времени своим партнёрам, тоже использующим движок.

Для расчёта физических взаимодействий Unreal Engine 3 использует PhysX, поэтому Epic Games создала dll, реализующую интерфейс между PhysX и форматами данных Unreal Engine через файл под названием PhysXLoader.dll, который загружает библиотеки PhysX с обеих сторон. PhysX — это библиотека симуляции физики, приобретённая компанией AGEIA Technologies в середине 2000-х перед тем, как саму AGEIA в начале 2008 года купила Nvidia. Возможно, вы помните карты Physics Processing Unit (PPU) — они использовали PhysX до того, как Nvidia похоронила эту идею.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

PhysXLoader.dll, PhysXCore.dll и NxCooking.dll составляют библиотеки PhysX для Mass Effect.

Все три части Mass Effect используют PhysX, однако Mass Effect 2 и Mass Effect 3 используют установленную в систему PhysX, а Mass Effect — локальную PhysX игры. Кроме того, в Mass Effect 2 и Mass Effect 3 применяется «современная» версия PhysX, а не устаревшая, которая была выпущена AGEIA. После приобретения Nvidia изменила некоторые пути внутри библиотеки, отделив устаревшие части от «современных» версий.

Но, похоже, это не мешает программе удаления старой PhysX удалять файлы/ключи реестра современной PhysX, поэтому в процессе тестирования моего исправления другие копии Mass Effect 2/3 не работали даже после установки «современного» дистрибутива PhysX. Очень бесит, что BioWare не смогла просто установить библиотеку на 8 МБ вместе с игрой — в комплекте с игрой всё равно поставляется установщик PhysX, то есть это даже не экономило место!

Проблема PhysXLoader.dll компании Epic Games в том, что она может загружать PhysXCore.dll локально или из установленной в систему версии

Что? Как это может быть проблемой? Разве нельзя просто загружать локальную dll, и если она не существует, загружать системную? Почему это вообще проблема?

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Вы не поверите, сколько фейспалмов я испытывал в процессе создания этого исправления.

При запуске Mass Effect записывает в реестр Windows HKEY_LOCAL_MACHINE два значения:

REG_BINARY HKLM\SOFTWARE\AGEIA Technologies enableLocalPhysXCore [mac-адрес, 6 байт]

REG_DWORD HKLM\SOFTWARE\AGEIA Technologies EpicLocalDllHack [1]

*Mass Effect — это 32-битная программа, поэтому на 64-битной системе она выполняет запись в HKLM\SOFTWARE\WOW6432Node\AGEIA Technologies (на случай, если вы захотите проверить сами).

Запомните эти значения реестра, они будут важны в дальнейшем!

Именно из-за этих значений реестра Mass Effect требует административных прав. В первой части мы говорили о том, почему этих операций было достаточно, чтобы Microsoft внесла Mass Effect в базу данных совместимостей, заставляющую игру запускаться под администратором при совпадении определённых критериев исполняемого файла. Мы обошли эту проблему, изменив критерии так, чтобы они больше не совпадали.

Нам нужно изменить исполняемый файл, чтобы включить Large Address Aware, благодаря чему игра сможет загружать текстуры повышенного разрешения без переполнения памяти, поэтому нет никакого способа избежать порчи сигнатуры. Это, в свою очередь, привело к тому, что Origin больше не мог запускать игру, потому что он не может повышать права игры без правильной сигнатуры EA. Но если игра не имеет возможности записывать эти ключи реестра при запуске, то она может вылететь…

Итак, это само по себе уже длинная цепь проблем, но мы обошли необходимость прав администратора в Mass Effect, просто дав аккаунту пользователя разрешение на этот конкретный ключ реестра AGEIA Technologies. Это позволит процессу игры записывать нужные ему значения. Я предполагал, что игра вылетает, потому что ей запрещался доступ для записи, а Demiurge не озаботилась написать try/catch вокруг кода записи в реестр.

Вероятно, не стоит называть значения реестра «hack»

Наше решение этой проблемы не изменило поведения Mass Effect — значения, которые игра хотела записать в реестр, тем или иным способом будут в него записаны, поэтому мы просто позволяем ей делать то, что она всегда делала, только без прав администратора. На самом деле, никаких изменений в поведении приложения не было.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Два значения реестра, записываемые Mass Effect.

Модератор PC Gaming Wiki под ником mirh долгие годы бил тревогу о том, что мы каким-то образом ломали другие игры в ALOT Installer, даже несмотря на то, что наше приложение никак не меняла способ записи Mass Effect этих значений, поэтом наше изменение никак не может сломать другие игры.

Спустя много месяцев он написал довольно подробное обоснование того, почему ALOT Installer (то есть на самом деле это была Mass Effect) ломает другие игры: находящийся в реестре enableLocalPhysXCore используется другими играми, работающими с PhysXLoader.dll. Когда я писал версию V4 установщика ALOT Installer, то сказал mirh, что серьёзнее рассмотрю его идею решения, не позволяющего ломать другие игры, хотя тогда я ещё не понимал, как ключ реестра с MAC-адресом системы может ломать другие игры и зачем вообще используется MAC-адрес.

Похоже, mirh был уверен, что эта enableLocalPhysXCore позволяет Mass Effect использовать PhysXCore.dll/NxCooking.dll в локальной папке, а не загружаться из установленного дистрибутива PhysX. Mass Effect не устанавливает дистрибутив PhysX, поэтому не может полагаться на её существование и вынуждена использовать локальные библиотеки.

Держитесь, теперь начинается нечто совершенно тупое:

MAC-адрес, сохраняемый в реестр файлом MassEffect.exe, считывается библиотекой PhysXLoader.dll и сравнивается с MAC-адресом вашей системы, чтобы определить, нужно ли загружать библиотеки PhysX из локальной папки или из системной.

Итак, Mass Effect работает следующим образом:

Оказалось, что другие игры, например, Mirror’s Edge, имеют PhysXLoader.dll, которая тоже считывает эти значения (так как они основаны на одинаковом коде), но в этих играх нет локальных библиотек PhysX. Поэтому эти игры загружаются, видят enableLocalPhysXCore и пытаются загрузить локальную библиотеку, терпят неудачу и игра не запускается. Эту информацию я получил от mirh — сам я не тестировал другие игры, поломанные этим значением реестра.

Обычно этого значения не существует, и игра должна использовать PhysX. Это поведение можно протестировать в Mass Effect, запретив доступ на запись к ключу реестра, удалив значения и установив старую версию PhysX — она будет использовать системные библиотеки. Если системная PhysX не установлена, приложение не загрузится — именно поэтому мы изначально разрешали записывать эти ключи Mass Effect, в противном случае бы казалось, что установщик портит Mass Effect, хотя на самом деле виновата ужасная реализация со стороны Epic Games.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Сложно представить сценарий, при котором это было бы хорошей идеей.

Если вы реализуете интерфейс с библиотекой, имеющей экспорт, который можно вызвать для инициализации/загрузки PhysX SDK, то разве нельзя просто передать ей булево значение, приказывающее ей загрузиться локально? Почему она вообще не начинает с локального поиска? И что за дела с MAC-адресом? Почему он находится в реестре, где ведёт себя как глобальный параметр.

Всё это выглядит как ужасные архитектурные решения, а после дизассемблирования PhysXLoader.dll кажется, что всё это и есть ужасные архитектурные решения. Давайте внимательнее присмотримся к Mass Effect и рассмотрим процесс её исправления от начала до конца.

Находим начальную точку

Предупреждение: я совершенный новичок в реверс-инжиниринге. Я создавал ассемблерные моды для игр Megaman Battle Network (и написал неплохое руководство по созданию хуков), проектировал моды на ActionScript2 P-Code и работал с байт-кодом UnrealScript, но никогда не углублялся в ассемблер x86. Я множество раз открывал IDA и могу находить нужные мне вещи, но никогда не понимал их. Уверен, что для более опытных реверс-инженеров этот процесс намного проще.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Сложно получать удовольствие от реверс-инжиниринга, если почти ничего не понимаешь в том, с чего начать. Это режим графа IDA, который очень помогает визуализировать ассемблер, но его всё равно очень сложно понять в большом двоичном файле на 20 МБ.

Недавно (пару лет назад), Агентство национальной безопасности США (АНБ) выпустило Ghidra — бесплатный тулкит для реверс-инжиниринга с открытыми исходниками, который может отреверсировать ассемблерный код в довольно читаемый код на C; его бесконечно проще читать, чем ассемблерные графы IDA. И IDA, и Ghidra имеют свои сильные стороны: в IDA есть отладчик, позволяющий пошагово пройти по ассемблеру и посмотреть, какие пути кода будут выполняться, а также она может находить Unicode-строки (которые используются в Mass Effect ). Ghidra может рекомпилировать ассемблерный код из его декомпилированного кода на C (иногда), имеет преобразователь из ассемблера в C (простите, не знаю его названия), обладает открытыми исходниками и работает на куче платформ и со множеством двоичных форматов.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Ghidra — это отличный инструмент для новичков в реверс-инжиниринге, поскольку она позволяет просматривать ассемблер как код на C, хоть и без имён переменных.

Итак, в начале я знал, что Mass Effect записывает enableLocalPhysXCore и EpicLocalDllHack. Давайте начнём с изучения MassEffect.exe, найдём эти строки и посмотрим, что на них ссылается. Открыв шестнадцатеричный редактор, я знал, что это unicode-строки, поэтому я буду искать их в IDA, потому что Ghidra, похоже, не поддерживает эту функцию.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Окно IDA Strings. Я наконец узнал, что эта полезная вкладка открывается по Shift + F12.

Поискав внутри окна IDA Strings строку enableLocalPhysXCore, я её нашёл. При двойном нажатии программа переносит нас к области данных исполняемого файла, в которой она задаётся:

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

На изображении вы видите, где задаются enableLocalPhysXCore, EpicLocalDLLHack и даже ключ реестра, все они находятся прямо рядом друг с другом.

Выше мы видим задание строк, которые, похоже, связаны с нашей целью. Над заданием текста мы видим DATA XREF, то есть что-то напрямую ссылается на эти данные — вероятно, записывает их. Давайте дважды щёлкнем на XREF и посмотрим, куда это нас отправит.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Режим IDA View, а не Graph View.

Изучив это, мы видим, что здесь записывается RegSetValueExW. Я очень слабый разработчик на C, поэтому после гугления я понял, что это подготовка стека для вызова на C метода из Windows API, что можно увидеть по отображаемому IDA названию параметра, например, lpData и dwType. Мы знаем, что значению enableLocalPhysXCore присваивается MAC-адрес системы. Давайте посмотрим, где выполняется это присваивание. Чтобы выглядело логичнее, переключимся на режим графа.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

В третьем блоке мы видим, что eax записывается в стек для lpData, а также записывается в стек для этого загадочного вызова «sub_10929393». В этой подпроцедуре нет других вызовов с заданными названиями, поэтому вероятно именно там получается MAC. Давайте перейдём к ней.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Похоже, это какая-то подпроцедура-обёртка, или так это трактовала IDA, но она просто указывает на другую подпроцедуру. Давайте перейдём к ней.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Эта подпроцедура содержит названия, взятые из Windows API, и они показывают нам, что это как-то связано с сетью. Нас не волнует MAC-адрес, но давайте зададим название этой подпроцедуре. Назовём её GetMacAddress. Вернёмся к исходной подпроцедуре, которую изучали, и тоже переименуем её — похоже, это что-то типа SetupPhysXSDKLoad, поэтому назовём её так.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Это относительно небольшая подпроцедура, всё, что она делает — это производит запись двух вышеупомянутых значений реестра. Кроме ранних этапов загрузки двоичного файла, на эту подпроцедуру больше нет других ссылок, поэтому на этом этапе я вполне уверен, что исполняемый файл Mass Effect никогда не считывает эти значения, и пока я не знаю, что же делает EpicLocalDllHack.

Вскрываем PhysXLoader.dll

Теперь мы знаем, что исполняемый файл Mass Effect никогда не считывает этот ключ; значит, это делает одна из dll. Здесь я этого не показал, но в ProcMon (отличном инструменте для моддинга и подобных вещей в целом) я вижу, что значение реестра считывается непосредственно перед загрузкой библиотеки в процессе MassEffect.exe и перед загрузкой локальной dll. Я увидел, что после того, как запретил Mass Effect доступ на запись в эту папку, он считывает системную библиотеку, и игра не загружается, если не установлена системная версия старой PhysX.

Первой из dll загружается PhysXLoader, после которой загружается PhysXCore.dll, поэтому логично будет анализировать её. Давайте откроем её в IDA и посмотрим, где там используется enableLocalPhysXCore. Также я открою эту dll в Ghidra, чтобы лучше понимать, что происходит. Проделав ту же последовательность действий по поиску мест использования строки enableLocalPhysXCore, мы находим подпроцедуру:

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Подпроцедуру читать не так уж сложно, особенно в режиме графа — мы видим, что есть цикл, идущий из левого блока в блок над ним. Тем не менее, всё это не так просто читать для новичка, поэтому давайте посмотрим, как это выглядит в Ghidra. Я использую адрес этой подпроцедуры, чтобы перейти к ней в Ghidra (0x10001640).

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Это даёт нам чуть больше понимания происходящего — вызовов подпроцедуры, цикла, возвращаемого подпроцедурой типа. Мы можем находить элементы в одном из инструментов и помечать их в обоих, чтобы разобраться в том, что происходит. Мы сразу же видим, что есть вызов подпроцедуры, передающий путь к ключу реестра, название значения, а также две переменные. В цикле видим сравнение 6 элементов под индексу для определения их равенства.

Чтобы немного сократить пост, скажу, что эта подпроцедура поиска в реестре и в самом деле является простой обёрткой для получения информации из реестра. После реверс-инжиниринга (который в основном заключался в сопоставлении входящих данных подпроцедуры с тем, чем они являются в вызовах windows api) выяснилось, что её параметры являются подключом, именем значения, возвращаемым указателем на данные и возвращаемым размером данных.

Мы видим, что в подпроцедуре есть цикл, выполняемый шесть итераций и проверяющий равенство каждых значений. Воспользовавшись полученной информацией, мы можем переименовать некоторые переменные, чтобы лучше представлять, что делает подпроцедура.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Мы знаем, что Mass Effect записала в реестр 6-байтный mac-адрес, и что PhysXLoader.dll просто считала это значение из реестра, и что подпроцедура сравнивает что-то побайтно 6 раз. Логически мы можем предположить, что local_14 с показанного выше изображения — это MAC-адрес. Зная это, мы также можем предположить, что FUN_10001580 получает MAC-адрес и задаёт его, поэтому мы переименуем ещё несколько элементов подпроцедуры.

Похоже, что вызов подпроцедуры не выполняет саму загрузку, он просто проверяет ключ и совпадение MAC-адреса. Зная название и информацию о действиях этого ключа, мы можем дать этой подпроцедуре обоснованное название ShouldUseLocalPhysX. Однако сравнение декомпиляции этой подпроцедуры в IDA и Ghidra приводит к немного различающимся результатам, и Ghidra, похоже, ошибается:

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

IDA показывает, что al присваивается 1 при нормальном выходе из цикла и 0 (xor al,al), если какие-то байты не совпадают. Ghidra этого не показывает, на самом деле она показывает, что возвращаемый тип равен void, что кажется ошибкой.

Немного погуглив информацию для этой части поста, я узнал, что EAX обычно используется как регистр возврата для x86, а регистр al — это нижние 8 бит EAX. Я не имею достаточно опыта в Ghidra, чтобы знать, как сменить тип сигнатуры для этого вида возвращаемых нижних 8 битов; возможно, Ghidra пока этого не поддерживает, или я упустил какую-то настройку, которую нужно использовать.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Дизассемблированная подпроцедура, вызывающая ту, которая ищет enableLocalPhysXCore.

Однако если мы взглянем на ссылки на эту подпроцедуру (их две — скорее всего, по одной на каждую библиотеку) в IDA и Ghidra, то увидим, что при вызове ShouldUseLocalPhysX она проверяет, не равен ли al нулю. Если он не равен нулю, то она загружает локальную PhysXCore.dll. Если равен, то она ищет библиотеку через системную установку PhysX, которая находится по ещё одному значению реестра в ключе AGEIA Technologies под названием PhysXCore Path. На самом деле это нам неинтересно, потому что мы хотим заставить PhysX всегда загружаться локально, вне зависимости от значения enableLocalPhysXCore.

Посмотрев на другую перекрёстную ссылку, можно и в самом деле увидеть, что она загружает библиотеку NxCooking, используя ShouldUseLocalPhysX таким же образом:

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Вооружённые этим знанием, мы можем решить эту проблему несколькими способами. Я много занимался моддингом функций в байт-коде UnrealScript, который очень долгое время нельзя было увеличивать и уменьшать в размере, поэтому нахождение способов успешного или неуспешного прохождения логических проверок без изменения размера скрипта оказалось интересной задачей.

Когда я писал таблицу символов для Megaman Battle Network 3, то научился всегда комментировать всё, что узнал об дизассемблированном коде. Я работал часами, совершенно забывая, что уже сделал, но мог вернуться к своим комментариям, и снова во всём разобраться.

Иногда мои символы/комментарии на отдельных строках, например, названия подпроцедур или таблицы указателей, встречались в других подпроцедурах, давая мне полезный контекст, которого бы я иначе не увидел. Ниже я прокомментировал и пометил несколько элементов, упрощающих чтение этой подпроцедуры.

Патчим худшую в мире проверку boolean

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Нам нужно убедиться, что выполнение всегда доходит до нижнего левого блока, при этом мы не должны касаться стека (который запросто может поломать всю программу). Строго говоря, мы можем переписать часть этой подпроцедуры, но мне хотелось бы вносить здесь минимальные изменения. По сути, нам нужно гарантировать, что переход в нижний правый блок никогда не происходит.

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

[ЗАБАВНАЯ ИСТОРИЯ] Увидев это однобайтное смещение, я вспомнил времена, когда я работал над моддингом Megaman Battle Network. Тогда от команд перехода/ветвления зависела возможность моддинга отдельных частей ROM. При написании хука (перенаправляющего счётчик программы к вашему собственному коду) вам нужно найти команду перехода или ветвления, относительное смещение которой можно модифицировать так, чтобы оно указывало на ваш код. Затем нужно записать регистры в стек, запустить код, а затем вернуть стек обратно, чтобы подпроцедура выполняла выход правильным образом.

ARM (а конкретнее THUMB) имеет ограниченные команды ветвления, использующие в качестве относительных смещений разные размеры, которые не всегда могли перейти в любую точку ROM из-за своего местоположения в ROM. Так как игра была написана на ассемблере, находить свободное место временами было сложновато — иногда приходилось соединять в цепочку несколько хуков, пока не удавалось переместить счётчик программы в свободную область, чтобы писать новый ассемблерный код. Этот jnz использует опкод 0x75, что даёт jnz rel8, то есть он может переходить только на расстояние до 128 байт (или, если переход возможен только вперёд, на 255?), что было бы настоящей проблемой, если бы я выполнял моддинг ассемблера так же, как мы работали раньше, когда не было мощных инструментов наподобие IDA и Ghidra. [КОНЕЦ ЗАБАВНОЙ ИСТОРИИ]

как установить масс эффект 2 на виндовс 10. Смотреть фото как установить масс эффект 2 на виндовс 10. Смотреть картинку как установить масс эффект 2 на виндовс 10. Картинка про как установить масс эффект 2 на виндовс 10. Фото как установить масс эффект 2 на виндовс 10

Недостатки

Файл PhysXLoader.dll подписан Epic Games, поэтому это очевидно разрушает сигнатуру, ведь мы модифицировали файл. Игра не проверяет сигнатуры при загрузке, поэтому это не проблема. Некоторые антивирусы могут жаловаться на сломанные сигнатуры, но со временем обычно перестают. Кроме написания патча внутри памяти (как мы делаем это в загрузчике мода asi), нам нужно будет модифицировать двоичный файл библиотеки.

Получившееся поведение

Благодаря пропатченной dll игра работает как со значением реестра, так и без него, то есть Mass Effect для запуска больше не требуются права администратора. Дизассемблирование этого кода сопровождалось сильной руганью, потому что я не мог смириться с тупостью реализации этой проверки — проверяется не только значение в реестре, но и MAC-адрес. В процессе отладки и пошагового выполнения команд я на самом деле сломал игру, потому что включил VPN и мой MAC-адрес сменился.

Этот процесс оказался хорошим опытом учёбы, я намного больше узнал о Ghidra и IDA, а также о других проблемах в PC-версии Mass Effect. Этот патч автоматически применяется в процессе установки ALOT Installer, поэтому пользователям не придётся беспокоиться о задании ключа enableLocalPhysXCore. Также мы модифицировали исполняемый файл Mass Effect для записи значения enableLocalPhysXCor_, чтобы наши пропатченные версии не записывали значение, портящее игры. Ванильные исполняемые файлы Mass Effect всё равно портят другие игры, но защита программ от криво написанных загрузчиков PhysX уже не входит в мои задачи.

О, а что насчёт EpicLocalDllHack? Ну, оно в буквальном смысле ничего не делает. Абсолютно бесполезное значение, оно никогда не считывается. Единственная возможная причина его существования, которую я могу придумать — сохранение ключа реестра на случай деинсталляции дистрибутива PhysX, потому что оно не находится в списке значений дистрибутива PhysX, но это всё только догадки.

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *