Для начала скачиваем с интернета
pSX v1.13,
ArtMoney и
WinHex.
(Не забудьте активировать программу
WinHex, иначе она не будет нормально сохранять образы после редактирования, а лучше качайте portable версию, ну и
ArtMoney если он у вас требует ключ).
Сразу скажу эмулятор старый, не стоит на него ругатся, по этому чисто для взлома он пойдёт.
Взламывать будем игру на вечные оружия:
Resident Evil 3: Nemesis[
NTSC-U] [
SLUS_009.23]
Формат
bin, размер образа 722 165 136 байт... (Режим сложности игры
HARD MODE, но это не так важно).
1: Запускаем эмулятор
pSX v1.13, выбераем русский язык открываем образ с игрой и начинаем играть, заходим в инвентарь и видим что у пистолета 15 патронов в обойме.
2: Запускаем
ArtMoney, выбираем в процессе эмулятор с игрой и при поиске адреса то же выбираем в списке свой эмулятор
pSX v1.13. Вводим значение
15 - Тип 1_2 байта и жмём искать.
Далее переходим в игру и тратим 1 патрон, обратно переходим в ArtMoney и жмём отсеять значение 14.
И так проделываем пока не будит один адрес, (Если же будут 2-3 или более, добавляем их всех в список, морозим по очереди и проверяем в игре уменьшаются ли патроны, таким образом мы найдём среди нах одни правельный который нам нужен). У меня адрес получился
04F72155 - Это адрес эмулятора, если по нему нажать дважды, то будет отображатся адрес игры
800D2135 который нам и нужен.
3: Переходим обратно в игру, в эмуляторе жмём "Отладка -> Мониторинг -> R3000"
Появится меню отладчик где мы и будет искать патч код. Для удобной работы выбираем нормальный шрифт "
File ->
Configuration" и оставляем в меню только два окна
Disassembly и
Breakpoints, а остальные закрываем и жмём на "
Window ->
Tile horizontal"
4: В менюшке
Breakpoints жмём правой кнопкой мышки и выбираем
Add, в окошке вводим вот так
0x800D2135 - выбираем
Memory -> и убираем галочку с
Read, а но
Write остовляем галочку и жмём на кнопку
ОК.
Переходим в игру и видим что игра тормозит, это говорит о том что отладчик пытается обнаружить смещение и код инструкции, ладно в общем тратим один патрон и игра после этого должна зависнуть, (Что бы возобновить игру нажмите в отладчике "
F9") переходим обратно в отладчик и видим вот такое:
В общем здесь сработал бряк на запись вычитания патронов:
Смещение: Инструкция: Код(Значение):
0006d0c8: sb r2,0x0001(r5) a0a200015: Переходим обратно в
ArtMoney и вводим в лист новый адрес
8006d0a два байта и записываем в него своё значение
9216 (DEC), в НЕХ это
2400.
Пояснение!Что сделали...мы добавили к адресу восьмёрку и добавили два байта, в место
8 стало
А, изменили значение с
41122 (В НЕХ это
a0a2), на
9216 (В НЕХ это
2400).
Вот скриншот:
Проверяем в игре, тратим патроны, вуаля! патроны не уменьшаются.
Вот мы и сделали свой
GameShark чит код на вечные оружия
8006D0A:2400 (Правда кроме огнемёта, там другой код нужно затирать). Но суть та-же...находим адрес огнемёта и проделываем ту-же рутину, что и с патронами.
И так продолжаем...6: Запускаем программу
WinHex, ставим русский язык, для тех кто не знает "
Help ->
Setup ->
Russian, please!.
Для удобства в работе в меню программы жмём "
Вид ->
Показать" и убираем там галочки с "
Данные дела", "
Интерпретатор данных" и "
Инфо панель".
7: В общем кидаем в программу наш образ игры (Например:
Resident Evil 3 Nemesis.bin). Возвращяемся в эмулятор с игрой к отладчику и видим там наш адрес смещения где сработал бряк на уменьшение патронов.
и снизу под ней выделенное серым смещение типа
0006d0cc: lbu r2,0x0001(r5) 90a20001Далее переходим обратно в программу
WinHex и жмём в меню "
Поиск ->
Найти хекс значение..." и вводим туда код в такой последовательности те оба кода
0100a2a00100a290 и жмём на кнопку
ОК. (Зачем так мы это сделали - просто бывают иногда в играх совпадают НЕХ-Коды), и должен пойти процесс поиска НЕХ-кода. И находим вот такое:
Заменяем A2 A0 на 00 24 и жмём сохранить:
Делаем далее сброс в эмуляторе грузимся и начинаем играть, тратим патроны и Ураааааа! Патроны не тратятся.
Так-же по аналоги можно сделать вечные жизни ну и т.д.
Ну на этом курс по взлому для начинающих закончен.