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

Забыл пароль
Регистрация
Меню сайта
Главная страница
Моды ПК игр Форум Flash игры/журналы Помощь сайту WAP/PDA версия сайта Мы вКонтакте
Категории
Уроки по модификации java [176]
Уроки по переводу java игр [15]
Программы для компьютера [102]
Программы для телефона [85]
Модификация смартфонных игр [15]
Symbian, Android, iPhone и т.д.
Прочее [35]
Уроки по модификации ПК игр [10]
Мини-чат
Главная » Статьи » Уроки по модификации 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
Просмотров: 2301 | Комментарии: 3 | Рейтинг: 5.0/1

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

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

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

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

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

Rise Of Antares
Комментов: 1 | Загрузок: 42
РЕЗНЯ 3D: Not city of sins
Комментов: 0 | Загрузок: 97
Vice Multi-Player 0.1 beta RC 8-4-9-5
Комментов: 0 | Загрузок: 17
GTA San Andreas Beta 1
Комментов: 1 | Загрузок: 170
Galaxy Force 2 FINAL
Комментов: 42 | Загрузок: 1
Haunting abandoned mansion (color mod)
Комментов: 0 | Загрузок: 148
Deadly game Resident Evil 7 DLC
Комментов: 0 | Загрузок: 225
GTA SA FLY
Комментов: 0 | Загрузок: 278
GTA SA Mobile: Definitive Edition
Комментов: 1 | Загрузок: 491
QUAKE
Комментов: 51 | Загрузок: 431

ODN Remake - скриншоты
Комментов: 0 | Просмотров: 46
O. D. N Remake
Комментов: 0 | Просмотров: 117
Новый сайт с мобильными загрузками - Oldfag
Комментов: 7 | Просмотров: 1479
Здорово и вечно 2 свободное человечество анонс номер два
Комментов: 9 | Просмотров: 1408
Дневник разработки "Шизофрения 3D" #2 - Концепция
Комментов: 2 | Просмотров: 1423
Дневник разработки "Шизофрения 3D" #1 - Общая инфа
Комментов: 0 | Просмотров: 1372
Maximum Carnage: No Way Home
Комментов: 0 | Просмотров: 1284
Случайный мод
6472 1 78 4.8
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Пользователи
Гости сайта

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