Перейти в начало страницы

Здравствуйте, гость ( Авторизация | Регистрация )

Gameru.net останавливает работу в связи с вторжением армии РФ в Украину. Следите за дальнейшими анонсами.
Support Gameru!
 
Тема закрытаНачать новую тему
> Уроки по геймхакингу, NB: из разных источников
Baron Gede
сообщение 10.05.2003, 12:21
Сообщение #1


Продвинутый геймер
********

Репутация:   35  
Группа: Только зарегистрировался
Сообщений: 415
Регистрация: 14.02.2003




Вставить ник Цитировать выделенное в форуму быстрого ответа


Редактирование игр с использованием 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
сообщение 10.05.2003, 12:21
Сообщение #2


Продвинутый геймер
********

Репутация:   35  
Группа: Только зарегистрировался
Сообщений: 415
Регистрация: 14.02.2003




Вставить ник Цитировать выделенное в форуму быстрого ответа


Хорошенько посмотрите на этот код. Как думаете, что мы будем изменять?

Видите команды 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
сообщение 11.05.2003, 13:19
Сообщение #3


Serious Sam
****************

Репутация:   1222  
Группа: Только зарегистрировался
Сообщений: 2711
Регистрация: 05.02.2003




Вставить ник Цитировать выделенное в форуму быстрого ответа


Спасибо огромное! Действительно стоящий материал!
Перейти в начало страницы
 

Тема закрытаНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 26.04.2024, 04:22