20110912

И сразу, чтобы не расслабляться, четвёртый урок!

Что-то продуктивность, как я погляжу, идёт в гору. :)
В этом уроке я продемонстрирую простейшую технику взлома под названием "Code Injection" - "Инъекция кода". Само собой, всё уже серьёзно, мы уже опытные, так что практиковаться будем на самой настоящей игре (которую я указывал в предыдущих постах :). Предлагаю сначала посмотреть урок, ибо он короткий - около пяти минут - а потом почитать немного теории и позадавать вопросы, если вдруг что-то осталось неясным. Итак!

[Четвёртый урок]


А теперь - немного теории. Совсем немного, правда. Но это очень сильно облегчит дальнейшее обучение. :)

Начнём с некоторых понятий, с которыми мы уже сталкивались:

Отладчик - [заумное объяснение] - специальная программа, которая позволяет нам подсмотреть код игры, меняющий значения по определённым адресам. Например, посмотреть (и изменить!) участок кода, отвечающий за приченение игроку урона (монстр укусил, в пропасть упал, захлебнулся и тому подобное), изменение количества патронов (постреляли - патронов стало меньше. Нехорошо!) и много чего угодно ещё - всё зависит от фантазии и знания вот этого языка:

Ассемблер - [заумное объяснение] - один из первых языков программирования, на котором нам предоставляет код тот самый отладчик из предыдущего абзаца. Прелесть в том, что язык нужен только этот (для любой игры), да и знать его вдоль и поперёк для умения ломать игры совсем не требуется - нужно знать только азы и понимать, что за код нам отладчик выплюнул. :)

Остановимся на окне отладчика Cheat Engine чуть подробнее. Вот скриншот (смотрим на красные цифры):
1. Количество вызовов инструкции игрой. Один раз выстрелили - один раз вызвалась инструкция, которая забирает патроны. И так далее.
2. Адрес в коде игры, по которому находится инструкция. Важно: адреса кода никогда не меняются!
3. Представление этой инструкции в шестнадцатеричной системе счисления, или опкод этой инструкции. Например, код инструкции nop - 90. [заумное объяснение]
4. Сама инструкция в виде команд ассемблера. В данном случае - sub - subtract- вычитание.
5. Пояснение той самой команды, если вы не знаете полного значения.




С особо любопытными делюсь набором статей по введению в ассемблер - [ссылка], второй абзац, "Дневники чайника", Чтивы 0-1-2-3. Так же - архив рассылки Калашникова, на данный момент уже не очень актуален, но материал там даётся просто отлично: [ссылка], крутим вниз до абзаца "Приятного вам изучения!", качаем "Полный архив рассылки" и "Необходимое ПО".
Ещё одна неплохая статья от Криса Касперски - [ссылка].

Пока всё, вникайте, задавайте вопросы. В следующих уроках сделаем ещё что-нибудь интересное. :)

PS: В качестве небольшого домашнего задания попробуйте найти указатель для адреса здоровья и\или для патронов (для того оружия, что в руках, или для любого).




Комментариев нет:

Отправить комментарий

Не люблю мат и низкий уровень грамотности. Чем конкретнее поставите свой вопрос и чем лучше он будет выглядеть - тем большая вероятность на мой ответ. :)