Электронная библиотека

Хакер


Хакер

Xakep, номер #005, стр. 005-072-1


GameHack

Конец секретным кодам?

Самый действенный и безотказный способ дурить игры - редактировать данные, которые запущенная игра хранит в оперативной памяти компьютера. Делается это с помощью специальных программ, для того и предназначенных. В этой статье ты познакомишься с одной из таких программок - GameHack v1.0. Весит она жалкие 30 кило, которые ты можешь скачать по адресу sbis.komi.ru/dans/files/gh10.zip. Или, если захочешь, можешь взять GameHack v2.0 с родного сайта www.gamehack.com, учти только, что от 1.0 новая версия отличается лишь тремя вещами: подурневшим интерфейсом, распухшими до 1.5 мег габаритами и необходимостью регистрации по истечении 15 дней trial-периода (приходится еще и утаскивать адд-он с cracks.pp.ru/g/ghack20.zip). Тебе это нужно?.. Тогда качай v.1.0.

GameHack - прога аскетичная и этим простая в использовании. Ничего лишнего, только самые наинужнейшие функции, представленные аккуратненькими кнопочками на экране. Когда научишься ею пользоваться, станешь свободен от необходимости рыскать по просторам И-нета в поисках кодов и трейнеров. К тому же, в отличие от топорно меняющих что попало кодов (хотел сотню золотых, чтоб фортик достроить и дальше в честную, а тебе 65 кусков с копейками... называется, удружили!), GameHack позволяет вносить изменения именно в нужных тебе объемах.

Для наглядности представим, что дурим Half-Life, и из боеприпасов у нас с тобой остался единственный патрон в пистолете. Сразу скажу, что самое трудное в нашем методе хака - догадаться, каким образом игра хранит количество патронов. Загвоздка в том, что нужные нам числа могут храниться в памяти в различных формах, т.е. занимать разное число байт памяти. Чаще всего, если число всегда изменяется в промежутке от 0 до 255, то в памяти оно занимает только один байт.

Примером здесь могут служить патроны и жизнь в Half-Life, Quake, Duke Nukem 3D (там они менялись от 0 до 250). Вообще, в природе существует шесть основных способов хранения чисел (GameHack оперирует с ними со всеми):

1 байт - целые числа от 0 до 255;

2 байта - от 0 до 65.000;

4 байта - от 0 до 4 миллиардов;

8 байт - около 10^20;

float - для чисел, имеющих дробную часть (однако в Quake многие целые числа хранились в этом виде);

double - float с "удвоенной" точностью, почти не встречается.

Всякий раз, начиная работать с игрой, ты должен указать GameHack'y, с каким типом данных и с каким процессом он будет иметь дело. Касаемо типов данных мы только что разобрались, теперь относительно процессов. Запускаем нашу жертву, потом запускаем GameHack. Для выбора процесса жмем на Process, в появившемся списке запущенных в данное время процессов выбираем жертву, недолго ей осталось глумиться над геймером... В списке часто можно увидеть процесс "WINOLDAP" - это какая-то программа DOS (если у тебя запущено несколько таких программ, то в списке они располагаются по времени запуска).

Прикинув, сколько байт требуется для хранения нашего числа, переключаемся из игры в GameHack (если игра чует подвох и не хочет переключаться, есть еще надежда на горячую клавишу). Жмем на кнопку First. В нашем случае, соответственно, вводим "1", выбираем тип данных "1 byte" и запускаем первый поиск - самый долгий. Дождавшись окончания поиска, переключаемся в игру и выстреливаем последний патрон. Переключаемся обратно, жмем кнопку Next и в появившемся окошке вводим "0". Если все хорошо, то в результате поиска отсеются ненужные данные и останется несколько адресов, которые появятся в списке. Если же подозрительных адресов остается слишком много, то нужно еще раз поменять число патронов (например, поднять обойму), снова нажать Next и т.д. до победного конца.

Содержание  Вперед на стр. 005-072-2