Jump to content
Sign in to follow this  
Knight

[Доработка] Видимость названий объектов и их жизней без нажатой клавиши Shift

Recommended Posts

За помощь в реализации спасибо @V3ct0r

 

Подтолкнула меня мыслишка - а почему бы не сделать подобное и у себя на сервере, заодно и облегчу жизнь хилам и дамагерам, но использовать такое на постоянке, на мой взгляд, не удобно.

 

И вот пришла идея - а что, если сделать такую фичу, но с возможностью включать и выключать этот режим одной кнопкой?

Поехали разбираться.

 

Из реализации @V3ct0r нам необходимо выпилить проверку нажатия клавиши в Game.exe, это нам не подходит, поэтому остановимся на функции GetKeyState, обработка которой находится в моем любимом (нет) MindPowerD8R.dll

 

Для начала просто посмотрим что из себя эта функция представляет:

 

1.png.8e600920038bdfed2a7ac69e72c785c9.png

 

Начиная с выделенной строчки (в моем случае написано 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.png.e020ce79ac6055e3930a66f1b2a54444.png

В них всего надо написать 2 коротких строчки:

PUSH VK_SCROLL
JMP 0x101290CE

3.png.10a15d0df2e37c2220449f9b08d8cb00.png

От кода прерываний мы отжали всего 7 байт, не столь много. Теперь вместо первого PUSH надо вставить джампер на наш говнокод:

4.png.49e5e8924833beee63e8ffa972a2ac2f.png

Ну а теперь осталось дело за малым - объяснить этой функции, что смотреть мы теперь будем не на статус зажатой кнопки (0xFFFFFF80) а на статус включенной кнопки (0x00000001):

AND EAX,0FF00

Меняем на:

TEST EAX,1

5.png.d2d3bcbec31fb26f1ee3ea2d87d83d77.png

Сохраняем изменения в файл и вуаля 😎

 

А теперь информация для тех, кто вообще не дружит с этим всем

Спойлер

 

В Hex-редакторе открываем MindPowerD8R.dll, ищем вот это:


55 8B EC 83 EC 44 53 56 57 89 4D FC 6A 10 FF 15 80 6B 7F 10 0F BF C0 25 00 FF 00 00 5F 5E 5B 8B E5 5D C3 CC CC CC CC CC CC CC CC CC CC CC CC CC

и меняем на это:


55 8B EC 83 EC 44 53 56 57 89 4D FC EB 15 FF 15 80 6B 7F 10 0F BF C0 A9 01 00 00 00 5F 5E 5B 8B E5 5D C3 68 91 00 00 00 EB E4 CC CC CC CC CC CC

сохраняем и профит, по скролл локу включается и выключается данный режим 😀

 

 

Edited by Knight
  • Like 4

Share this post


Link to post
Share on other sites

Стоит отметить, что после применения данной модификации, все функции клавиши Shift переносятся на Scroll Lock, т.е. Shift перестает работать (даже в сочетаниях клавиш)


Share this post


Link to post
Share on other sites
В 09.04.2019 в 22:42, EviLGoku сказал:

Как можно сделать чтоб авто-каст не срабатывал на Scroll Lock? 

 

Так сказать доработка, доработки 😄 (сразу говорю, все что написано выше - вам не понадобиться),

это независимая модификация просто позволит сделать то, что хотел @Knight - без затрагивания другого функционала!

 

Открываем OllyDBG наш Game.exe

 

image.png.277d3c504e9a74cd874bc7707ea5f912.png

 

Сочетание клавиш CTRL + G, пишем 6009f0.

Далее нажимаем и вбиваем следующее: 

 

DD      1030CEA0

 

В итоге выходит следующее:

 

image.png.4186af0b45c963505e074d00a21ae637.png

 

Сочетание клавиш CTRL + G, пишем 4cc342.

Далее нажимаем и заменяем на строку: 

 

CALL    DWORD PTR DS:[6009F0]

 

Не забудьте сохранить изменения!

 

Ну и на последок добавляем патченый MindPower

 

В итоге получаем то, что хотел сделать автор темы, не затрагивая ничего лишнего, на здоровье!

 

Edited by gmedannik

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...