Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Уроки по геймхакингу
GAMEINATOR forums > Общие разделы > Создание и модификация игр. Геймдев.
Baron Gede
Редактирование игр с использованием SoftIce (Айс) и W32Dasm (дизассемблер).

Введение.

В этом руководстве, я покажу как использовать айс для нахождения кода, который и меняет заданную величину. Этим Вы можете обойти динамическую адресацию. Динамическая адресация – тот случай, когда величина, которую Вы пытаетесь отредактировать меняет своё местонахождение в памяти, каждый раз когда Вы запускаете игру снова. Для примера возьмем игру Старкрафт 1.08b. Я покажу, как найти, где программа убавляет ваши материалы и как это отредактировать (изменить).

Используем Айс.

Мы уже знаем смещение, где хранится информация о минералах (см. руководство по поиску) – 508728. (лучше запишите его где-нибудь). Теперь запустите старкрафт и загрузите ваш Save. Дайте роботам команду остановить добычу минералов. Во время игры нажмите [Ctrl+D], чтобы попасть в Айс. Теперь мы должны поставить брикпойнт (точку останова) на смещение, по которому хранится информация о количестве минералов. Когда мы ставим брикпоинт, то Айс будет всплывать, если по этому смещению (offset) будет что-либо записываться (изменяться). Наберите в Айсе:

BPM 508728 w

BPM ставит брикпойнт для памяти 0x508728 – ваш оффсет, w – ключ, который ставит ОСТАНОВ, только если в адрес что-либо пишется. (для лучшего понимания смотрите руководство по Айсу).

Теперь снова нажмите [F5], чтобы вернуться в Старкрафт. Измените количество минералов, например построив что-нибудь. Всплывет Айс и Вы увидете что-то вроде этого:

4020DD SUB EDX, ECX ; EDX:=EDX-ECX

4020DF MOV [EAX+00508718], EDX ; Addr {EAX+508718} <- EDX
4020E5 MOV EDX, [EAX+0051FE88] ; EDX <- Addr {EAX+51FE88}
4020EB SUB [EAX+00508748], EDX ; Addr {EAX+508748} <- EDX
4020F1 POP ECX ; ECX:=EAX
4020F2 RET ; выход из подпрограммы
Baron Gede
Хорошенько посмотрите на этот код. Как думаете, что мы будем изменять?

Видите команды SUB: они означают вычитание. Теперь мы знаем, что один из них уменьшает, но какой? Если Вы не провидец, то лучше попробовать оба. Начнем с первого. То есть мы собираемся изменять 4020DD. Заметьте, что следующий оффсет 4020DF. Если знаете шестнадцатиричную систему счисления, тогда вы должны знать, что разница здесь составляет два байта. Таким образом, команды SUB EDX, ECX имеют длину в два байта. Теперь поменяем их используя команду NOP. NOP – значит нет операции (no operations) в языке ассемблера. А hex значение для NOP – 90.

Таким образом, вы уже можете сделать тренер, используя команду: POKE 4020DD 90 90 или сделать это вручную в Айсе, введите :

a 4020dd

nop
[Esc]

или так:

E 4020DD

Это приведет вас к коду с оффсетом 4020DD. Теперь просто введите 90 90 и нажмите [F5] для возвращения в Старкрафт. Постройте что-нибудь. Ваши минералы не уменьшились. Но роботы все еще их собирают. Данный код лишь предотвратил уменьшение, но не увеличил их количество

Используем Дизассемблер.

Айс конечно хорош, но смотреть c помощью него на Asm-код трудновато. Поэтому откроем дизассемблер. Кликнете на дизассемблере и откройте файл starcraft.exe. Обычно требуется несколько минут для дисассемблирования файла. Можете создать проект, чтобы постоянно не дисассемблировать. Когда файл загрузится, нажмите Goto и выберете локализацию кода, введите Goto 4020DD. Как видите вид намного лучше. Главная разница, в том, что Вы можете видеть хекс-коды, которые собираетесь изменять. Заметьте 2B D1 в оффсете 4020DD. Это хекс коды, в которых находятся SUB EDX, ECX. Это два байта, которые мы меняли на 90 90 (NOP NOP). Теперь попробуем что-нибудь другое. Попробуем сказать ADD EDX, ECX взамен SUB EDX, ECX. Главная проблема, найти что ввести взамен 90 90. В дизассемблере вызовете поиск, найти текст. Введите ADD EDX, ECX. Нажмите поиск. Посмотрите на хекс коды для ADD EDX, ECX. Это 03 D1. Поэтому если мы поменяем в 4020DD на 03 D1, будет команда ADD EDX, ECX. Так как D1 уже есть его менять не будем. Теперь можем сделать трейнер или попробавть в Айсе. Старкрафт лучше перезагрузить, поскольку в первый раз мы ставили 90 90

В ТМК

POKE 4020DD 03

Или в Айсе:

E 4020DD 03

Теперь если Вы что-нибудь построите, это добавит количество материалов, вместо того чтобы отнять.

Заключение

Этот метод не только поможет Вам справиться с DMA, но также поможет создать действительно крутые читы. Айс – лучший инструмент для геймхакинга.

Теперь попробуйте сделать что-нибудь сами

Перевод: © Dark Yukon
Написал туториал (Written by) Drakken
MAN2
Спасибо огромное! Действительно стоящий материал!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.