Привет Гость!
Ты можешь:
Войти или зарегистрироваться

Забыл пароль
Регистрация
Меню сайта
Главная страница
Моды ПК игр Форум Flash игры/журналы Помощь сайту WAP/PDA версия сайта Мы вКонтакте
Категории
Уроки по модификации java [175]
Уроки по переводу java игр [15]
Программы для компьютера [102]
Программы для телефона [85]
Модификация смартфонных игр [15]
Symbian, Android, iPhone и т.д.
Прочее [35]
Уроки по модификации ПК игр [9]
Мини-чат
Главная » Статьи » Уроки по модификации java

06.03.2013, 22:17

FAQ'и по ClassEditor'у

ИЗМЕНЯЕМ КНОПКИ
Так сложилось, что вам понадобилось изменить в программе или игре код клавиши. Может вы скачали приложение,которое предусмотрено для другой платформы, и естественно софты и джойстик не работают. Или может у вас сломался джойстик и вы решили переделать управление на клавиши.
Сначала нужно найти класс в котором происходит опрос клавиш. В нём обязательно должны быть функции:
keyPressed - (срабатывает при простом нажатии) или
keyRelease - (срабатывает при отпускании клавиши) или
keyRepeated - (срабатывает при долгом нажатии клавиши)короче названия говорят сами за себя.
Самая распространённая это первая функция, поэтому лучше с неё и начинать поиск. Эти функции ничего не делают пока не нажмёшь кнопку. При нажатии они возвращают код клавиши в виде обыкновенного байта, который в дальнейшем обрабатывается как заблагорассудится программисту. Поэтому вариантов много. Возьмём для начала самый распространённый вариант, у меня такой в самом ClassEditor'e в f.class! Сравниваю я в нём так к примеру if(key == -3 | key == 52 ) {Здесь исполняем некие процессы если нажато джой влево или клавиша 4}.
Теперь самое сложное,найти этот байт, ведь могут встречаться совпадения. Поэтому нам нужно искать не один байт, а комбинацию.
Не будем мудрить с key а будем искать == -3 ,это будет в hex 10 FD ,в dec 16 253
А == 52 в hex 10 34 ,в dec 16 52. Вот и ищем такую комбинацию, она должна быть внизу класса в области исполняемого кода.

Попробуем стать программистом на асме!
Изменения будем делать в классе start. Всё что делает этот класс, это рисует на экране текст "text".
Прорисовывается этот текст командой drawString в теле метода paint.
Впереди метода идёт информация о его размере и сколько потребуется памяти для стека.
Нас интересует размер. Значит найдём в хекс "00 00 00 45"-это общий размер метода.
Затем идёт четыре байта "00 05 00 02"- это для стека,нам это трогать не надо.
Затем четыре "00 00 00 0D"- размер байт-команд в методе т.е. 13.
Действительно ли так, давай пройдёмся по байтам от "00 00 00 0D" и посчитаем. Тринадцатый будет "B1", а это команда выхода из метода,всё правильно. Теперь увеличим метод, что-бы в него можно было добавлять команды.
Пред выходом из метода т.е. перед "B1",добавим 200 байт.Постараемся их вставить точно между
"03" и "B1". Так добавили, но теперь обязательно нужно изменить информацию о размере метода.
Возвращаемся к "00 00 00 45", в DEC это будет 69.
А нам значит надо изменить на 269, это будет в хекс "00 00 01 0D".
Затем "00 00 00 0D" изменяем на "00 00 00 D5" в DEC это будет 213.
Ну я думаю всё понятно. Лучше сразу теперь проверить, запакуем запустим, если не вылезла ошибка значит можно продолжить.
Значит так, вот эти 12 байт-команд "2B 12 02 10 28 10 28 10 14 B6 00 03" и задействуют команду drawString!
Скопируем их в буфер и вставим за ними-же, т.е. за "... 03". Только вставляем с заменой нулевых байтов т.е. что-бы метод не вырос на эти 12 байт. Или стерём эти 12 нулевых байт а потом просто вставим (я думаю понятно что нельзя увеличить метод, а то не совпадёт его размер с инфой о размере).
Получается, что мы создали ещё одну прорисовку текста, но координаты-то одинаковы, поэтому первый текст нарисуется поверх другого и мы увидим только одну надпись. Поэтому во второй записи изменим координаты текста "10 28 10 28" к примеру на "10 38 10 38". Ну вот теперь можно снова запаковать и запустить.
Если вы теперь увидели два текста на дисплее ПОЗДРАВЛЯЮ!
Можете дальше расклонировать этих текстов сколько душе угодно.

Но ничего не станется если мы изменим "00 05 00 02" на "00 FF 00 FF" просто лишней памяти сожрёт.
Автор - dzanis, 21.01.2008

Прорисовка текста на экране это метод drawString("text",X,Y ,20 ); Координаты на дисплее:X по ширине, а Y по высоте, последняя цифра 20 это положение текста от координаты, т.е. текст рисуется слева от координаты, 20 это стандартно.
Что-бы найти код работающий с методом drawString нужно узнать его порядковый индекс записи. Но это очень сложно, таблица в константном пуле в разбросанном состоянии. И нужно начинать с самого первого индекса, что-бы понять всю систему. Попробовать можно найти его с низу класса, но только если он стандартно отображается. Это будет комбинация (HEX 10 14 B6), если не стандартно второе число может быть другим (у меня в f.class стандартно).

Саму прогу брать здесь.
Категория: Уроки по модификации java | Добавил: Tommy_M
Просмотров: 1928 | Комментарии: 3 | Рейтинг: 5.0/1

Всего комментариев: 3
Спам
Honda7   (06.06.2014 10:42) [Материал]
прога супер

Спам
GameMod   (08.03.2013 03:56) [Материал]
Один ис самых полезных уроков

Спам
gears   (07.03.2013 10:55) [Материал]
спс за урок, кто писал?

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

о, привет
Новинки
  • Файлы
  • Статьи
  • Новости

Нагибатор 3D (Repressor) Prefinal
Комментов: 27 | Загрузок: 2611
Parkour 3d from quantum
Комментов: 0 | Загрузок: 20
Micro Team fortress pre-alpha
Комментов: 2 | Загрузок: 803
Evil House - По мотивам Resident Evil Village
Комментов: 1 | Загрузок: 811
ZOA 3D Билд 7621
Комментов: 10 | Загрузок: 1042
Большой Шлепа
Комментов: 3 | Загрузок: 629
Хроники Хаоса
Комментов: 1 | Загрузок: 1178
Deep 3D Submarine Odyssey sound MOD
Комментов: 0 | Загрузок: 83
Crazy Chicken: DeluXe
Комментов: 0 | Загрузок: 530
The long dark mobile
Комментов: 7 | Загрузок: 177

Здорово и вечно свободное человечество
Комментов: 3 | Просмотров: 80
Silent evill quantum
Комментов: 5 | Просмотров: 124
PES 5 RPL
Комментов: 20 | Просмотров: 417
Evil House - По мотивам Resident Evil Village
Комментов: 5 | Просмотров: 473
S.T.A.L.K.E.R. Mobile part_2
Комментов: 23 | Просмотров: 1184
Lost in taiga 3d: Winter survival
Комментов: 6 | Просмотров: 1041
Comcraft Remastered Version
Комментов: 1 | Просмотров: 1079
Случайный мод
Мой собственный мод) ВЫ - РУССКИЙ спецназовец, которому дали задание уничтожить наркобарона....ЧИТАЕМ ПОЛНОЕ ОПИСАНИЕ)))
4190 788 15 3.6
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Пользователи
Гости сайта

[ Нас сегодня посетили ]
При копировании материалов, желательно оставлять ссылку на этот сайт!
© Tommy_M 2009-2021 | Хостинг от uCoz