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

Лидеры


Популярный контент

Показан контент с высокой репутацией 03.02.2020 во всех областях

  1. 1 балл
    Основными методами нахождения обработчика нажатий являются поиск(и заморозка потоков для проверки, просто потому, что всегда у обработчика свой поток) и поиск изменяющегося значения при нажатии на клавишу. Так или иначе, оба этих способа приведут нас к тому, что игра использует DirectInput или XInput, выбор метода зависит от специфики игры и личного опыта. Из инструментов для этого лучше всего подойдет x64dbg. Приступим к поиску с вкладки Threads и что мы видим, один из потоков был создан из dinput8. И раз мы нашли поток, то можем обратиться к базовому адресу потока, таким образом попадаем в тело метода CEm_LL_ThreadProc. Теперь поставим на этот метод брейкпоинт и перезапустим игру. Посмотрим, откуда происходит создание потока. После перезапуска игры и срабатывания бряка, в стеке вызовов получаем все, что необходимо для продолжения поиска: Пробежав быстро по стеку вызовов, находим интересную апишку MapVirtualKeyA выйдя из метода, которая переводит скан-код в код виртуальной клавиши. Ну что ж, теперь мы знаем где работает обработчик нажатий Directinput, где он переводится, остался последний шаг - узнать, где нажатая нами клавиша используется, это как раз и будет сам обработчик нажатий. На этом этапе уже будет удобней исследовать код в IDA/GHIDRA, поэтому перейдем к ним, оставив отладчик подключенным к процессу. Немного восстановлю код для наглядности:
×

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

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