Перейти к содержанию

PoE, обход ограничений на запуск кол-ва окон


Рекомендуемые сообщения

Всем доброго времени!

Пытаюсь обойти санкции на кол-во открытых окон в игре Path of Exile (PoE):

Взять можно тут:

Скрытый текст

 

Посмотрев множество различных материалов команды GameHackLab, пытаюсь осваивать Assembler и С++.

В качестве первого и основного инструмента реверсинга был(а) выбрана Odbg201.

 

Информация об exe-файле:

Скрытый текст

9e97878aeb2d.png

 

Текст ошибки(санкции) при запуске 3-его окна:

Скрытый текст

1b434eadcca2.png

 

Сам обход ограничений, не оказался проблемой, благодаря видео широкого сообщества с просторов интернет'а, достаточно было:

 

1. Найти текст из окна с ошибкой.

Скрытый текст

28c1c5015a26.png

 

2. Заменить условие:

Скрытый текст

d09e9cc7379f.png

 

Но, как показала практика, разработчики сделали в exe-шнике проверку на целостность файлов, в том числе библиотек, если изменённый файл сохранить, то в момент запуска он будет обратно заменен на оригинальный файл, соответственно, всё редактирование кода, -не зачёт!

Подскажите, пожалуйста, какой адрес процедуры надо вызвать, что бы запустить exe минуя проверку целостности?

 

Изменено пользователем Merlin
Внесено уточнение: было "без проверки" , стало: "минуя проверку"
Ссылка на комментарий
Поделиться на другие сайты

Ваще не профи в этом но возможно если файл заменяет то он откуда-то берется ( скачивается ) попробуй проверить через WireShark что приходит к тебе. Ну или поставь "только чтение" :D.

Ссылка на комментарий
Поделиться на другие сайты

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

Установи бряк на функции которые используют сокет, тогда найдёшь откуда качается файл, и найдёшь проверку "целостности"

Так же можешь просто подменять модуль на его копию, как это сделать есть на форуме.

Ссылка на комментарий
Поделиться на другие сайты

10 часов назад, partoftheworlD сказал:

Установи бряк на функции которые используют сокет, тогда найдёшь откуда качается файл, и найдёшь проверку "целостности"

Хорошая идея, буду пробовать!

 

10 часов назад, partoftheworlD сказал:

Так же можешь просто подменять модуль на его копию, как это сделать есть на форуме.

Буду признателен, если кинете мне ссылку, через поиск найти не удалось :rolleyes:

Ссылка на комментарий
Поделиться на другие сайты

Ты был очень близок к разгадке.
Уже тут всё стало понятно:

 n2YnN0buodll6A.png

Если посмотреть с другой стороны(без использования патча), то ответ на поверхности - как приложения учитывают кол-во копий?
-Объекты ядра(Events, Mutex, Jobs).

При запуске первого приложения, создаётся Mutex с именем "PoERunMutexA", где A - указывает, что это первая копия игры, а так же, проверяется создан ли мютекс PoERunMutexB. Если создан - значит показываем сообщение с огр. кол-ва запуска.
nAyBP6kFYv6RXr.png

При запуске второго, проверяется первый мютекс и создаётся второй
zANyRBJIB5Gn52.png

После этого, если мы попытаемся запустить третью копию - вылезет ошибка.

Лечение:
Закрывать PoERunMutexB или PoERunMutexA , и тогда мы сможем запускать сколько угодно копий, без патча и прочих извров.
vAW47ebI1XNe6r.png

 

52a8jebu4dJ5zm.png


Примерный код реализации в игре:

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 копий:
v294MyaI3kMMNm.png

Изменено пользователем mrPTyshnik
  • Плюс 3
Ссылка на комментарий
Поделиться на другие сайты

1 час назад, mrPTyshnik сказал:

Закрывать PoERunMutexB или PoERunMutexA , и тогда мы сможем запускать сколько угодно копий, без патча и прочих извров.

Насчет закрытие handle'oв ( или как они называются ) этот способ применим во многих клиентах где есть запрет на несколько окон. Тот же L2 ( ru-off ) так же закрываешь пару хендлев и все ок :)

Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, mrPTyshnik сказал:

Ты был очень близок к разгадке.

Благодарю! То, что нужно было, доступно, понятно, по существу!

Тему я думаю можно закрывать.

Ссылка на комментарий
Поделиться на другие сайты

  • keng закрыл тема
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...

Важная информация

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