Jump to content

Search the Community

Showing results for tags 'ЖЗ'.



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. Видимость названий объектов и их жизней без нажатой клавиши Shift Всем привет! В данном гайде я расскажу как сделать отображение названий монстров, NPC и ников персонажей, а также их жизней без нажатой клавиши Shift или взятия в цель: Вам понадобится: 1) Game.exe из папки system Вашего клиента; 2) Отладчик OllyDbg. Я буду работать в версии 1.10. Чтобы сделать данную модификацию, необходимо пропатчить Game.exe. Примечание: В этой статье я показываю лишь принцип того, как произвести такую модификацию. Иными словами, инструкции и их адреса у Вас могут отличаться от тех, что я привожу в гайде. Я буду работать с Game.exe из 1.39 ру. оф. клиента. Итак, нам нужно найти в Game.exe код, который обрабатывает нажатие клавиши Shift. У данной клавиши есть код 16 (0x10 в шестнадцатеричной системе счисления). Также нам известно, что в WinAPI есть функция GetKeyState(int nVirtKey), с помощью которой можно узнать, нажата ли клавиша с кодом nVirtKey. Заходим в игру (на карту) и открываем Game.exe в OllyDBG и начинаем искать вызовы функции GetKeyState(). Функция находится в библиотеке USER32.DLL, ставим на нее Break Point (F2). Break Point сразу же срабатывает. Смотрим на стек и видим что функция была вызвана из библиотеки MindPower3D_D8R.dll. Это библиотека движка игры. Переходим по адресу 0x101290D4 (адрес возврата из функции GetKeyState) и видим следующий код: 101290C0 PUSH EBP 101290C1 MOV EBP,ESP 101290C3 SUB ESP,44 101290C6 PUSH EBX 101290C7 PUSH ESI 101290C8 PUSH EDI 101290C9 MOV DWORD PTR SS:[EBP-4],ECX 101290CC PUSH 10 101290CE CALL DWORD PTR DS:[<&USER32.GetKeyState>> 101290D4 MOVSX EAX,AX 101290D7 AND EAX,0FF00 101290DC POP EDI 101290DD POP ESI 101290DE POP EBX 101290DF MOV ESP,EBP 101290E1 POP EBP 101290E2 RETN Видим, что в качестве параметра GetKeyState() передается 0x10 - код клавиши Shift. Возможно, данная функция по адресу 0x101290C0 проверяет, нажата ли клавиша Shift. Назовем ее IsShiftPress(). Далее смотрим где эта функция вызывается: Ставим Break Point на каждый вызов и видим, что функция IsShiftPress() постоянно вызывается по адресам 0x004CC3E2, 0x004D7DE4 и 0x004D7E41. Начинаем с адреса 0x004CC3E2. Переходим на него и видим следующий код: 004CC3E2 CALL DWORD PTR DS:[IsShiftPress] 004CC3E8 TEST EAX,EAX 004CC3EA MOV EBP,2 004CC3EF JE SHORT 004CC45D 004CC3F1 MOV EAX,DWORD PTR DS:[ESI+124] 004CC3F7 XOR EDI,EDI 004CC3F9 TEST EAX,EAX 004CC3FB JLE 004CC62A 004CC401 MOV EAX,DWORD PTR DS:[6705C8] Если Shift не нажат, то происходит прыжок на адрес 0x004CC45D (TEST EAX,EAX - сравнение регистра EAX с 0). Затираем этот прыжок с помощью инструкций NOP, чтобы данный код выполнялся независимо от того, нажат Shift или нет: 004CC3E2 CALL DWORD PTR DS:[IsShiftPress] 004CC3E8 TEST EAX,EAX 004CC3EA MOV EBP,2 004CC3EF NOP 004CC3F0 NOP 004CC3F1 MOV EAX,DWORD PTR DS:[ESI+124] 004CC3F7 XOR EDI,EDI 004CC3F9 TEST EAX,EAX 004CC3FB JLE 004CC62A 004CC401 MOV EAX,DWORD PTR DS:[6705C8] Переходим в игру и видим, что название монстров/персонажей и их жизни отображаются без нажатого Shift'a, чего мы и хотели добиться. Теперь осталось сохранить изменения в Game.exe. Щелкаем правой кнопкой мыши по коду в отладчике, в контекстном меню выбираем Copy to executable -> All modifications и сохраняем Game.exe.
×
×
  • Create New...