Search the Community
Showing results for tags '.exe'.
Found 1 result
-
"Вы исчерпали число попыток, игра будет принудительно закрыта" Всем привет! Как известно, если 4 раза подряд ввести неверный пароль от Вашего аккаунта (или аккаунта Вашего друга, который забыл Вам сообщить пароль), то игра закроется с сообщением "Вы исчерпали число попыток, игра будет принудительно закрыта". Иногда это бывает неудобно. В данной статье я расскажу как сделать так, чтобы игра больше не закрывалась. Работать будем с 1.3х ру. оф. клиентом. Сразу скажу, что в данный момент я сам не знаю как это можно сделать, поэтому будем разбираться вместе. С чего начать? Давайте попробуем зацепиться за сообщение "Вы исчерпали число попыток, игра будет принудительно закрыта". Где оно может находиться? Либо в Game.exe, либо в StringSet.txt. Проверим StringSet.txt. Действительно, здесь есть такая строка: [251] "Вы исчерпали число попыток, игра будет принудительно закрыта" Запомним ее номер 251. Он же 0xFB в шестнадцатеричной системе счисления. Откроем Game.exe в отладчике OllyDBG и поищем это число. Нашлось всего 11 инструкций, это хорошая новость. Так же нас интересуют только инструкции PUSH, а их здесь всего 2. Проверим инструкцию push 0xFB по адресу 0x005076A5: Ниже видим вызов системной функции SendMessageA с параметром WM_DESTROY. Что делает функция SendMessageA()? Она отправляет заданное сообщение окну. А заданное сообщение у нас WM_DESTROY, это сообщение посылается когда необходимо уничтожить окно. Таким образом, можно сделать вывод, что этот код закрывает игру, а по адресу 0x005076A5 начинает загружается строка с сообщением. Перестаем гадать и ставим точку останова по адресу 0x005076A5, идем в игру и 4 раза вводим неверный пароль. Точка останова сработала! Значит где-то выше код, который закрывает клиент, если мы 4 раза введем неверный пароль. Теперь нас интересуют инструкции условных переходов. По адресу 0x00507691 можно увидеть инструкцию cmp EAX, 3. А дальше идет условный переход на адрес 0x00507709, если значение в регистре EAX меньше и не равно 3. Можно предположить, что в EAX попадает количество попыток неудачного входа: EAX = 0 (1 попытка); EAX = 1 (2 попытки); EAX = 2 (3 попытки); EAX = 3 (4 попытки). Давайте это проверим. Ставим точку останова по адресу 0x00507691. И вводим несколько раз неверный пароль. Действительно, если 3 раза ввести неверный пароль, то EAX = 2. Как заставить игру перестать закрываться? Очень просто: условный переход меняем на безусловный: Возвращаемся в игру и пробуем вводить неверный пароль. После 10 попытки становится понятно, что игра не закроется и мы достигли поставленной цели. Сохраняем наши изменения в Game.exe. Так же можно изменять количество попыток, после которых игра закроется. cmp EAX, <число попыток - 1> jmp 0x00507709 * число попыток должно быть в шестнадцатеричной системе счисления Например, инструкция cmp EAX,0A Означает, что игра закроется после 11 попытки. На этом все!