Jump to content

Search the Community

Showing results for tags 'ASM PATCH'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Russian Section
    • Новости и объявления
    • Пиратия: Документация
    • Пиратия: Релизы
    • Пиратия: Разработка
    • Пиратия: Web
    • Пиратия: Помощь
    • Совместные проекты / набор команды
    • Доска объявлений
    • Программирование
    • Оффтопик
    • Корзина
  • English Section
    • News & Announcements
    • Guides
    • Releases
    • Development
    • Web
    • Questions & Help
    • Shared Projects / Team search
    • Paid services & Requests
    • Programming
    • Offtopic
    • Recycle bin
  • Portuguese Section
    • Dúvidas & Ajuda
  • Spanish Section
    • Preguntas y Ayuda
  • Servers
    • Russian servers
    • English servers

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Found 1 result

  1. За помощь в реализации спасибо @V3ct0r Подтолкнула меня мыслишка - а почему бы не сделать подобное и у себя на сервере, заодно и облегчу жизнь хилам и дамагерам, но использовать такое на постоянке, на мой взгляд, не удобно. И вот пришла идея - а что, если сделать такую фичу, но с возможностью включать и выключать этот режим одной кнопкой? Поехали разбираться. Из реализации @V3ct0r нам необходимо выпилить проверку нажатия клавиши в Game.exe, это нам не подходит, поэтому остановимся на функции GetKeyState, обработка которой находится в моем любимом (нет) MindPowerD8R.dll Для начала просто посмотрим что из себя эта функция представляет: Начиная с выделенной строчки (в моем случае написано PUSH -70, не обращайте внимания, распишу как написано по факту): PUSH 10 //Установка кода клавиши (Shift) для функции GetKeyState() Call DWORD ... //Собственно сам вызов функции MOVSX EAX,AX //Функция GetKeyState() возвращает 4-байта, и чтобы не было проблем с дальнейшей работой - переводим формат в 8 байт AND EAX,0FF00 //Побитовое умножение, проще не объясню Этот кусок кода явно дает понять, что ни про какую память речи не идет, постоянно обновляется статус кнопки, а теперь внимание вопрос - какие 3 клавиши есть на клавиатуре с ТРЕМЯ состояниями в системе? Правильно, это Caps, Scroll и Num-lock Теперь обратимся к их кодам: CAPS VK_CAPITAL 0x14 NUM VK_NUMLOCK 0x90 SCROLL VK_SCROLL 0x91 Теперь прикинем какие кнопки мы можем использовать. Капс идея плохая, дабы постоянно писать в чат таким образом не очень хорошо. Num на мой взгляд тоже такая себе идея, т.к не всем по душе такой режим, а цифрами люди пользуются на num-pad'е, поэтому работать я буду с самой бесполезной на мой взгляд клавишей - SCROLL LOCK А теперь проблема первая - PUSH 14 (Caps) занимает 2 байта, а PUSH на коды кнопок 80+ занимает не 2 байта а 5 байт (PUSH 91 00 00 00), поэтому просто так прохексить не получится, но благо рядом есть инструкции INT3 (прерывания), их мы и можем немного загадить нашим говнокодом: В них всего надо написать 2 коротких строчки: PUSH VK_SCROLL JMP 0x101290CE От кода прерываний мы отжали всего 7 байт, не столь много. Теперь вместо первого PUSH надо вставить джампер на наш говнокод: Ну а теперь осталось дело за малым - объяснить этой функции, что смотреть мы теперь будем не на статус зажатой кнопки (0xFFFFFF80) а на статус включенной кнопки (0x00000001): AND EAX,0FF00 Меняем на: TEST EAX,1 Сохраняем изменения в файл и вуаля А теперь информация для тех, кто вообще не дружит с этим всем
×
×
  • Create New...