-
Постов
8 -
Зарегистрирован
-
Посещение
Репутация
1 Навыки не прокаченыИнформация о Adouken
- День рождения 31.07.1988
Информация
-
Пол
Мужчина
-
Город
Тула
-
Adouken изменил фотографию своего профиля
-
Итоговые скрипты вышли такими, задача полностью решена: [ENABLE]aobscanmodule(INJECT_1,game.exe,89 42 08 E8 66 AB 00 00)alloc(code,$1000)label(return)label(flag)registersymbol(INJECT_1)registersymbol(flag)code: cmp dword ptr [flag],#1 jne @F mov [edx+08],eax // Оригинальная инструкция. Копирует новое кол-во ходов в адрес текущего кол-ва ходов@@:mov eax,[edx+08] // Моя инструкция, обратная оригинальной. Тем самым мы отключаем трату очков хода, т.к. пишется текущее значение в новое. call game.exe+F26B0 jmp returnflag: dd 0INJECT_1: jmp code nop nop nopreturn:[DISABLE]dealloc(code)INJECT_1:db 89 42 08 E8 66 AB 00 00unregistersymbol(INJECT_1)
-
Аналогично, у меня в голове полное и четкое представление идеи, а вот знаний языка не хватает, чтобы довести до ума как надо. Мучаю Xipho в личке, он помогает, может что-то и получится. Идея уже реализована на половину: после нажатия клавиши и "отлова" той инструкции, я уже прицепил к ней свой код, который просто пишет в адрес очков хода нужное мне значение ходов. Т.е. для одного персонажа я уже получил, что хотел. Но мне нужно прицепить туда не запись в адрес, а замену инструкции, которая вычитает очки хода. Чтобы это сделать, надо на нее как-то сослаться...указателем или сигнатуркой, я не знаю как с ними работать в ассемблере. Более чем уверен, что в Lua СЕ Эту задачу можно решить за 5 минут, т.к. там можно писать полноценные функции, обрабатывать указатели и смещения, а вот как провернуть на уровне ассемблера... Я уже писал, что игра жестко хукает все клавиши, работают только альтаб и альтконтдел. Если бы можно было назначить хоткеи в СЕ, не родилось бы всей этой заморочки и я уже готовый код, активировал хоткеями)) UPD. Всем спасибо кто участвовал, благодаря приложенному усердию поставленную задачу решил. ОГРОМНОЕ спасибо Xipho за помощь, без него ни за что бы не вышло.
-
Вы все верно поняли. Кнопка отвечает за изменение стойки персонажа бег/шаг. При нажатии кнопки меняется "дальность хода" персонажа при одинаковых очках хода. Поиском неизвестного значения, переключая кнопкой стойки я отсеивал пока не нашел нужный адрес, далее на этот адрес ставлю бряк на запись и снова нажимаю кнопку - выскакивает инструкция. Вот появление этой инструкции в моем плане и должно служить активацией написанному коду.
-
Можно, это да, но тут вся задумка строилась исходя из сложных обстоятельств: игрушка Код доступа: РАЙ. Штука очень атмосферная, пошаговая стратежка в стиле киберпанк. Но есть одно существенное НО: разрабы упоролись и сделали ее ПОЛНОСТЬЮ пошаговой. Игровой мир представлен несколькими локациями, довольно обширными и ходить по ним приходится тоже пошагово, даже вне боя. А вот бои проводить хочется по-честному, т.е. пошагово. Вот и получается, что мне нужно будет часто включать и отключать чит на ходы, чтобы так сказать соблюдать честность прохождения. Альтабом я это делать замучаюсь.
-
Keng привет! Твои уроки на ютубе хороши, мои заморочки в геймхакинге начались совсем недавно именно с них. Потом уже на канал Xipho наткнулся. Учусь у Вас обоих потихоньку. Что касается задачи, я уже не знаю как объяснить понятнее: в игровом интерфейсе есть кнопка, нарисованная, при нажатии на нее совершается определенное действие. Как известно любое действие это инструкция. Я хочу грубо говоря сделать хук инструкции, чтобы как только она (инструкция) всплывает активировался мой, уже написанный скрипт на другое действие, в данном случае отмена трат очков хода. Иначе говоря мы свои "читы" привыкли активировать или в CE поставив крестик напротив скрипта, либо хоткеем, заданным в том же СЕ, а тут стоит задача, привязаться к игровому событию, которое происходит после взаимодействия с игровым интерфейсом.
-
Всех приветствую и прошу посодействовать в реализации вот такой штуки: Есть старая игрушка, которая цепко перехватывает любые нажатия клавиш, в том числе и не относящиеся к игре (доп. клавиши отвечающие за громкость звука например и т.д.), работает только alt+ctrl+del. Поэтому стало необходимо прикрутить активацию чита к "нарисованной" в игровом интерфейсе кнопке. 1. В игровом интерфейсе имеется клавиша, нажимая на которую происходит переключение стойки персонажа. Методом поиска неизвестного значения я нашел адрес, значение в котором отвечает за текущую стойку. 2. Я ставлю бряк на запись в этот адрес и нажимаю клавишу смены стойки, выскакивает инструкция. Вот за эту инструкцию и будем цепляться. 3. Есть код, который заменяет оригинальную инструкцию, отвечающую за уменьшение значения очков хода при перемещении персонажа. Данная инструкция является общей для всех персонажей в отряде, что очень удобно. Вот этот код и хочется прикрутить грубо говоря "после" той инструкции, о который написано в п.2 [ENABLE]aobscanmodule(INJECT,game.exe,83 79 68 01 0F 94 C0)alloc(newmem,$1000)label(code)label(return)newmem://Тут должен быть код, отключающий уменьшение очков хода у персонажейjmp returncode:// Тут без изменений оригинальная инструкция, которая всплывает при нажатии той самой "нарисованной" клавиши. cmp dword ptr [ecx+68],01 sete al jmp newmemINJECT: jmp code nop nopreturn:registersymbol(INJECT)[DISABLE]INJECT: db 83 79 68 01 0F 94 C0unregistersymbol(INJECT)dealloc(newmem)[ENABLE]aobscanmodule(INJECT,game.exe,89 42 08 E8 66 AB 00 00)alloc(code,$1000)label(return)registersymbol(INJECT)code: mov eax,[edx+08]// Инструкция срабатывает при перемещении персонажа // В оригинале было [edx+08],eax //Таким образом мы пишем не новое значение в текущее, а текущее в новое // и очки хода у нас стоят на месте call game.exe+F26B0 jmp returnINJECT: jmp code nop nop nopreturn:[DISABLE]dealloc(code)INJECT:db 89 42 08 E8 66 AB 00 00unregistersymbol(INJECT)