Ломаем наяву EGOiST/TSRh (icq: 8507375) Хакер, номер #088, стр. 088-074-2 проверка на 45 секунд if(m_this$0g.m_uZ && System.currentTimeMillis() - g._access$000gJ(m_this$0g) > 44981L) { g._access$100gV(m_this$0g); m_this$0g.m_elseZ = m_this$0g.m_gotoZ = m_this$0g.m_fZ = true; new d("Trial Version", "This trial version has a time limit of 45 seconds. If you think this game is worth a few dollars, search for 'TMines' on the http://www.handango.com site to get the full version.\n The developer appreciates your support.", m_this$0g.m_hTMines.m_charg); return; } Как видно, идет сравнение с числом 44981L. "L" - число, означающее Long. Функция System.currentTimeMillis() возвращает текущее время в миллисекундах. Если присмотреться к числу, то становится понятно, откуда оно. 45 секунд в миллисекундах будет 45000, то есть 44981 - это и есть 45 секунд минус погрешность. Функция g._access$000gJ(), по всей видимости, возвращает время старта тоже в миллисекундах. Еще видно, что это условие может выполниться после 45 секунд, только если переменная m_uZ будет установлена в true, то есть, если ее установить в false, никакой подсчет миллисекунд не поможет. Поиском натыкаемся на единственно возможное место, где эта переменная устанавливается в true: установка m_uZ в true m_uZ = m_hTMines.m_eS != 8 || m_hTMines.m_aS != 8 || m_hTMines.m_longS != 10; Здесь заметно сравнение параметров поля с эталоном: 8х8 и 10 минут. Похоже, что именно этот код и надо пропатчить, что ты и проделаешь с помощью JavaBite. Но, так как до этого мы воспользовались функцией деобфускации, просто пропатчить g.class и заменить им оригинал, мы не можем, ведь функции и переменные уже переименовались. Нужно либо патчить оригинал, либо заменять все классы их деобфусцированными копиями. Что выбрать - решай сам. Я же возьму деобфусцированный вариант. Загружаем g.class в JavaBite: Classes->Add Java Class, открываем список методов (функций). Нужный код находится в _newvV, то есть в ее конце. Там надо найти упоминание об m_uZ. На строке 250 видно, что "putfield #0017 <..>", а это равнозначно "m_uZ ="; чуть выше загрузка значения iconst_0 (оно же и false) и goto 0250 (оно же и прыжок). Перед прыжком загружается значение true. Из этого ясно, что нужно пропатчить iconst_1 (перед goto) на iconst_0. Двойной клик на строке 024B и выбор из списка iconst_0 - все что нужно. Сохраняем класс: Classes->Save class. И заменяем все классы в архиве их деобфусцированными копиями. Если ты все сделал правильно, то устанавливай поле 30х20 и можешь начинать плавить свой мозг. |