Реверс-инжиниринг и исправление игры DirectX?


Фон

Я играю в "нетленную ночь", одну из игр серии Тохо. Кнопка съемки - "z", медленное перемещение - "shift", а клавиши со стрелками перемещаются. К сожалению для меня, используя shift-z призраки моя правая клавиша со стрелкой, так что я не могу двигаться вправо во время съемки. Это привидение происходит во всех приложениях, и переключение клавиатуры исправляет его.

Цель

Я хочу найти в разобранном коде функцию directx, которая получает ввод с клавиатуры и сравнивает его против ключа " z "и измените этот ключ на "a". Я рассматриваю это как интересный проект. Предполагая, что размер кодов сканирования одинаковый, это должно быть довольно просто. И поскольку исполняемый файл только 400k, возможно, это предоставит мне уникальную возможность исследовать темную сторону вычислительного преступного мира (шутка).

Соответствующий опыт

У меня есть некоторый опыт кодирования в сборке, но не в разборке такого рода. У меня нет опыта работы с API DirectX.

Вопрос

Мне нужно некоторое руководство. Я нашел список кодов сканирования клавиатуры directx и программу под названием PEExplorer, которая, похоже, сделает то, что мне нужно.

Есть ли средство, с помощью которого я могу повернуть некоторые сборки с вызовами функций C, чтобы их было легче читать? Мне нужно будет найти, где игра извлекает нажатые в данный момент клавиши, сравнивает их со списком, и именно этот список мне нужно изменить.

Любой ввод будет значительно оцененный.

1 4

1 ответ:

Вас может заинтересовать библиотекаDetours от Microsoft Research, она позволяет перехватывать вызовы функций и изменять их аргументы. При этом ваш код может изменить коды сканирования ключей, которые не являются призраками, на те, которые ожидает игра.