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

[Minecraft Windows 10 Edition] Вопрос по взлому таймера


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

Всем добрый день!

Я новый на форуме, с программированием в ладах (знание Python, C++, C#), с ассемблером не очень, но код на нём более-менее понятен.

 

Забил на ММОРПГшки, решил ломануть триалку "Minecraft Win10 Edition", которая некоторое время назад вышла в релиз.

 

Выводится сообщение вверху "Осталось времени до окончания пробного периода: 23:25".

Все string'и как выше и как в виде времени "23:25" находятся, их очень много, до 15-ти штук. И каждую секунду создаются новые такие строки с новыми адресами. Пытался поставить брейкпоинты на запись, на некоторых строках это удавалось, листинг кодов приведу ниже.

7FFEA90AC250 - 0F11 48 F0  - movups [rax-10],xmm1
7FFEA90AC492 - 41 0F11 44 08 F0  - movups [r8+rcx-10],xmm0
7FFEB090F914 - 66 89 08  - mov [rax],cx
7FFEB08D7D2F - 44 88 19  - mov [rcx],r11l
7FFEA90AC254 - 0F11 41 F0  - movups [rcx-10],xmm0
7FF7ECA03590 - 48 89 02  - mov [rdx],rax
7FF7EC15C624 - 48 C7 47 18 0F000000 - mov [rdi+18],0000000F
7FF7EC15C872 - 48 C7 03 0F000000 - mov [rbx],0000000F

 

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

 

Копался в коде. Несколько раз ставил nop-ы в операциях инкрементирования в циклах типа

1 cmp [ebx],A
2 je 3
3 inc [ebx]
4 jmp 1

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

Что я делаю не так?

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

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

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

Что я делаю не так?

Наверно значит не тот адрес юзаешь! Нужно найти правельный, а не экранный.

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

12 минуты назад, krocki сказал:

Наверно значит не тот адрес юзаешь! Нужно найти правельный, а не экранный.

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

Заморозка этого десятка тоже не помогает. Я так понимаю, нужно со спидхаком на 0.0 найти указатель на переменную времени. Попробую.

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

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

Каждую секунду создается новая десятка таких значений.

Попробуй искать: 4 байта, диапазон, в миллисекундах.

Пример:

На экране 23:25

23*3600=82800

24*60=1440 и 26*60=1560

82800+1440=84240  и 82800+1560=84360     

диапазон: от 84240000 до 84360000.

Может получиться.

 

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

13 минуты назад, Garik66 сказал:

Попробуй искать: 4 байта, диапазон, в миллисекундах.

 

Спасибо! Попробую.

Плюсы тут пока не могу ставить, а жаль.

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

А как же правило на счет пиратства?

По теме:

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

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

Только что, partoftheworlD сказал:

А как же правило на счет пиратства?

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

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

6 минут назад, partoftheworlD сказал:

В идеале, если ломать триальный таймер, надо проверить не синхронизируется время с сервером.

Возможно. оно так, но я не авторизован в игре, хотя есть мысли по поводу того, что клиентская часть связывается с БД сервера и берет в качестве ключа что-то типа ID компьютера из магазина Windows Store.

 

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

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

5 минут назад, pavel3333 сказал:

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

 

Ну это можно проверить используя PCHunter или Process hacker

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

Покопался, поигрался, ничего не вышло.

Сам клиент на С++ написан, напишу приложение с таймером и попробую сломать. Не получится - ну и хрен с ним. Буду DirectX потом изучать.

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

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

Название темы не соответствует правилам форума.

Xipho, прошу великодушно простить, еле нашел правила форума. Прошу сменить заголовок темы на "[Minecraft Windows 10 Edition]: вопрос по взлому таймера".

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

×
×
  • Создать...

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

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