Jump to content
Sign in to follow this  
V3ct0r

Вы исчерпали число попыток, игра будет принудительно закрыта

Recommended Posts

"Вы исчерпали число попыток, игра будет принудительно закрыта"

 

Всем привет! :smile:

 

Как известно, если 4 раза подряд ввести неверный пароль от Вашего аккаунта (или аккаунта Вашего друга, который забыл Вам сообщить пароль), то игра закроется с сообщением "Вы исчерпали число попыток, игра будет принудительно закрыта". Иногда это бывает неудобно. В данной статье я расскажу как сделать так, чтобы игра больше не закрывалась. Работать будем с 1.3х ру. оф. клиентом. Сразу скажу, что в данный момент я сам не знаю как это можно сделать, поэтому будем разбираться вместе.

 

С чего начать? Давайте попробуем зацепиться за сообщение "Вы исчерпали число попыток, игра будет принудительно закрыта". Где оно может находиться? Либо в Game.exe, либо в StringSet.txt. Проверим StringSet.txt. Действительно, здесь есть такая строка:

[251]	"Вы исчерпали число попыток, игра будет принудительно закрыта"

Запомним ее номер 251. Он же 0xFB в шестнадцатеричной системе счисления.

 

Откроем Game.exe в отладчике OllyDBG и поищем это число.

o1.png

 

Нашлось всего 11 инструкций, это хорошая новость. Так же нас интересуют только инструкции PUSH, а их здесь всего 2.

o2.png

 

Проверим инструкцию push 0xFB по адресу 0x005076A5:

o3.png

 

Ниже видим вызов системной функции SendMessageA с параметром WM_DESTROY. Что делает функция SendMessageA()?  Она отправляет заданное сообщение окну. А заданное сообщение у нас WM_DESTROY, это сообщение посылается когда необходимо уничтожить окно. Таким образом, можно сделать вывод, что этот код закрывает игру, а по адресу 0x005076A5 начинает загружается строка с сообщением. Перестаем гадать и ставим точку останова по адресу 0x005076A5, идем в игру и 4 раза вводим неверный пароль.

o4.png

 

Точка останова сработала! Значит где-то выше код, который закрывает клиент, если мы 4 раза введем неверный пароль. Теперь нас интересуют инструкции условных переходов. По адресу 0x00507691 можно увидеть инструкцию cmp EAX, 3. А дальше идет условный переход на адрес 0x00507709, если значение в регистре EAX меньше и не равно 3. Можно предположить, что в EAX попадает количество попыток неудачного входа:

EAX = 0  (1 попытка);

EAX = 1  (2 попытки);

EAX = 2  (3 попытки);

EAX = 3  (4 попытки).

 

Давайте это проверим. Ставим точку останова по адресу 0x00507691. И вводим несколько раз неверный пароль.

o5.pngo6.pngo7.png

 

Действительно, если 3 раза ввести неверный пароль, то EAX = 2. Как заставить игру перестать закрываться? Очень просто: условный переход меняем на безусловный:

o8.png

 

Возвращаемся в игру и пробуем вводить неверный пароль. После 10 попытки становится понятно, что игра не закроется и мы достигли поставленной цели. Сохраняем наши изменения в Game.exe.

 

Так же можно изменять количество попыток, после которых игра закроется. 

cmp EAX, <число попыток - 1>
jmp 0x00507709

* число попыток должно быть в шестнадцатеричной системе счисления

 

Например, инструкция

cmp EAX,0A

Означает, что игра закроется после 11 попытки.

 

На этом все!

  • Like 3

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...