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

Adouken

Стажёры
  • Постов

    8
  • Зарегистрирован

  • Посещение

Репутация

1 Навыки не прокачены

Информация о Adouken

  • День рождения 31.07.1988

Информация

  • Пол
    Мужчина
  • Город
    Тула
  1. Итоговые скрипты вышли такими, задача полностью решена: [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)
  2. Аналогично, у меня в голове полное и четкое представление идеи, а вот знаний языка не хватает, чтобы довести до ума как надо. Мучаю Xipho в личке, он помогает, может что-то и получится. Идея уже реализована на половину: после нажатия клавиши и "отлова" той инструкции, я уже прицепил к ней свой код, который просто пишет в адрес очков хода нужное мне значение ходов. Т.е. для одного персонажа я уже получил, что хотел. Но мне нужно прицепить туда не запись в адрес, а замену инструкции, которая вычитает очки хода. Чтобы это сделать, надо на нее как-то сослаться...указателем или сигнатуркой, я не знаю как с ними работать в ассемблере. Более чем уверен, что в Lua СЕ Эту задачу можно решить за 5 минут, т.к. там можно писать полноценные функции, обрабатывать указатели и смещения, а вот как провернуть на уровне ассемблера... Я уже писал, что игра жестко хукает все клавиши, работают только альтаб и альтконтдел. Если бы можно было назначить хоткеи в СЕ, не родилось бы всей этой заморочки и я уже готовый код, активировал хоткеями)) UPD. Всем спасибо кто участвовал, благодаря приложенному усердию поставленную задачу решил. ОГРОМНОЕ спасибо Xipho за помощь, без него ни за что бы не вышло.
  3. Вы все верно поняли. Кнопка отвечает за изменение стойки персонажа бег/шаг. При нажатии кнопки меняется "дальность хода" персонажа при одинаковых очках хода. Поиском неизвестного значения, переключая кнопкой стойки я отсеивал пока не нашел нужный адрес, далее на этот адрес ставлю бряк на запись и снова нажимаю кнопку - выскакивает инструкция. Вот появление этой инструкции в моем плане и должно служить активацией написанному коду.
  4. Можно, это да, но тут вся задумка строилась исходя из сложных обстоятельств: игрушка Код доступа: РАЙ. Штука очень атмосферная, пошаговая стратежка в стиле киберпанк. Но есть одно существенное НО: разрабы упоролись и сделали ее ПОЛНОСТЬЮ пошаговой. Игровой мир представлен несколькими локациями, довольно обширными и ходить по ним приходится тоже пошагово, даже вне боя. А вот бои проводить хочется по-честному, т.е. пошагово. Вот и получается, что мне нужно будет часто включать и отключать чит на ходы, чтобы так сказать соблюдать честность прохождения. Альтабом я это делать замучаюсь.
  5. Про рисование речи не было. Просто чтобы люди понимали, что кнопка часть графического интерфейса игры, а не хоткей, я использовал слово нарисованная.
  6. Keng привет! Твои уроки на ютубе хороши, мои заморочки в геймхакинге начались совсем недавно именно с них. Потом уже на канал Xipho наткнулся. Учусь у Вас обоих потихоньку. Что касается задачи, я уже не знаю как объяснить понятнее: в игровом интерфейсе есть кнопка, нарисованная, при нажатии на нее совершается определенное действие. Как известно любое действие это инструкция. Я хочу грубо говоря сделать хук инструкции, чтобы как только она (инструкция) всплывает активировался мой, уже написанный скрипт на другое действие, в данном случае отмена трат очков хода. Иначе говоря мы свои "читы" привыкли активировать или в CE поставив крестик напротив скрипта, либо хоткеем, заданным в том же СЕ, а тут стоит задача, привязаться к игровому событию, которое происходит после взаимодействия с игровым интерфейсом.
  7. Всех приветствую и прошу посодействовать в реализации вот такой штуки: Есть старая игрушка, которая цепко перехватывает любые нажатия клавиш, в том числе и не относящиеся к игре (доп. клавиши отвечающие за громкость звука например и т.д.), работает только 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)
×
×
  • Создать...

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

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