Merlin Опубликовано 27 июня, 2017 Поделиться Опубликовано 27 июня, 2017 (изменено) Всем доброго времени! Пытаюсь обойти санкции на кол-во открытых окон в игре Path of Exile (PoE): Взять можно тут: Скрытый текст https://ru.pathofexile.com/account/create Посмотрев множество различных материалов команды GameHackLab, пытаюсь осваивать Assembler и С++. В качестве первого и основного инструмента реверсинга был(а) выбрана Odbg201. Информация об exe-файле: Скрытый текст Текст ошибки(санкции) при запуске 3-его окна: Скрытый текст Сам обход ограничений, не оказался проблемой, благодаря видео широкого сообщества с просторов интернет'а, достаточно было: 1. Найти текст из окна с ошибкой. Скрытый текст 2. Заменить условие: Скрытый текст Но, как показала практика, разработчики сделали в exe-шнике проверку на целостность файлов, в том числе библиотек, если изменённый файл сохранить, то в момент запуска он будет обратно заменен на оригинальный файл, соответственно, всё редактирование кода, -не зачёт! Подскажите, пожалуйста, какой адрес процедуры надо вызвать, что бы запустить exe минуя проверку целостности? Изменено 27 июня, 2017 пользователем Merlin Внесено уточнение: было "без проверки" , стало: "минуя проверку" Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 27 июня, 2017 Поделиться Опубликовано 27 июня, 2017 Ваще не профи в этом но возможно если файл заменяет то он откуда-то берется ( скачивается ) попробуй проверить через WireShark что приходит к тебе. Ну или поставь "только чтение" . Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 27 июня, 2017 Поделиться Опубликовано 27 июня, 2017 На точку входа ставь трассировку, до изменений и после, а после ищи расхождение в инструкциях. Установи бряк на функции которые используют сокет, тогда найдёшь откуда качается файл, и найдёшь проверку "целостности" Так же можешь просто подменять модуль на его копию, как это сделать есть на форуме. Ссылка на комментарий Поделиться на другие сайты Поделиться
Merlin Опубликовано 28 июня, 2017 Автор Поделиться Опубликовано 28 июня, 2017 10 часов назад, partoftheworlD сказал: Установи бряк на функции которые используют сокет, тогда найдёшь откуда качается файл, и найдёшь проверку "целостности" Хорошая идея, буду пробовать! 10 часов назад, partoftheworlD сказал: Так же можешь просто подменять модуль на его копию, как это сделать есть на форуме. Буду признателен, если кинете мне ссылку, через поиск найти не удалось Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 28 июня, 2017 Поделиться Опубликовано 28 июня, 2017 20 минут назад, Merlin сказал: ссылку 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
mrPTyshnik Опубликовано 28 июня, 2017 Поделиться Опубликовано 28 июня, 2017 (изменено) Ты был очень близок к разгадке. Уже тут всё стало понятно: Если посмотреть с другой стороны(без использования патча), то ответ на поверхности - как приложения учитывают кол-во копий? -Объекты ядра(Events, Mutex, Jobs). При запуске первого приложения, создаётся Mutex с именем "PoERunMutexA", где A - указывает, что это первая копия игры, а так же, проверяется создан ли мютекс PoERunMutexB. Если создан - значит показываем сообщение с огр. кол-ва запуска. При запуске второго, проверяется первый мютекс и создаётся второй После этого, если мы попытаемся запустить третью копию - вылезет ошибка. Лечение: Закрывать PoERunMutexB или PoERunMutexA , и тогда мы сможем запускать сколько угодно копий, без патча и прочих извров. Примерный код реализации в игре: function CreateMutexEx(name: PWideChar): LongBool; begin CreateMutex(nil, false, name); if GetLastError = ERROR_ALREADY_EXISTS then Result := False else Result := True; end; begin if (CreateMutexEx('PoERunMutexA') = false) //первая копия запущена then if (CreateMutexEx('PoERunMutexB') = false) //если вторая копия запущена then MessageBox(0, 'You may only run бла бла бла', 'Error', 1); end. Моего ПК хватило только на 5 копий: Изменено 28 июня, 2017 пользователем mrPTyshnik 3 Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 28 июня, 2017 Поделиться Опубликовано 28 июня, 2017 1 час назад, mrPTyshnik сказал: Закрывать PoERunMutexB или PoERunMutexA , и тогда мы сможем запускать сколько угодно копий, без патча и прочих извров. Насчет закрытие handle'oв ( или как они называются ) этот способ применим во многих клиентах где есть запрет на несколько окон. Тот же L2 ( ru-off ) так же закрываешь пару хендлев и все ок Ссылка на комментарий Поделиться на другие сайты Поделиться
Merlin Опубликовано 28 июня, 2017 Автор Поделиться Опубликовано 28 июня, 2017 3 часа назад, mrPTyshnik сказал: Ты был очень близок к разгадке. Благодарю! То, что нужно было, доступно, понятно, по существу! Тему я думаю можно закрывать. Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 28 июня, 2017 Поделиться Опубликовано 28 июня, 2017 Закрываю. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения