Обратное проектирование и исправление игры DirectX? - PullRequest
4 голосов
/ 15 марта 2010

Фон

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

Цель

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

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

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

Вопрос

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

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

Любая информация будет принята с благодарностью.

1 Ответ

5 голосов
/ 15 марта 2010

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

...