РуЛиб - онлайн библиотека > Автор неизвестен > Хакерство > Ромхакинг для начинающих. Sega Mega Drive.

Читаем онлайн «Ромхакинг для начинающих. Sega Mega Drive.»

Ромхакинг для начинающих. Sega Mega Drive.
Гайд по взлому игр Sega. Автор Ti.
В этом гайде будут рассмотрены методики взлома игр с приставки Sega Mega Drive. Взлом игр с других платформ может значительно отличаться, поэтому не рекомендуется использовать тут написанное, как шаблон, если только вы не понимаете что делаете. Гайд ориентирован на новичков, к тому же автор не является професcиональным программистои и программистом вообще, поэтому все определения и названия могут и будут отличаться. Под взломом понимается изучение и изменение самой игры, а не замена графики или звуков, это будет затронуто лишь вкратце.
Также автор не отвечает за причиненный вред психологическому состоянию, в случае неудачных попыток хакинга.
Важно:
Что необходимо знать:
16-ричная и двоичная система счисления и их отличия от десятичной.
Что такое ROM.
Что такое RAM.
Что такое байт(byte),бит.
Иметь общее представление о работе компьютера.
Если вы не знаете что это такое или не уверены лучше не читайте этот гайд!
Для взлома понадобятся следующие программы:
IDAPro v5.2 с sega loader'ом. (Альтернативы нет!)
WinHex или любой другой HEX-редактор. (В примерах будет рассмотрен WinHEX, но принцип работы у всех одинаков)
GENSVKNTrace - модификицая эмулятора GENS c расширенным дебаггером.
Gens-mk2 (с сайта шедевра) - эмулятор с безглючным поиском читов(значений в памяти).
Gens11/GensKMOD - также можно запастись и этими.
FixCheckSum.exe - программа исправления контрольной суммы рома, требуется для игр с защитой.
GGConv.exe - конвертер гейм гени кодов(читов) в формат Адресс:значение.
Goldwave - редактор звуков если вдруг решили заменить звук.(имеется ввиду речь).
Тайловый редактор - Он будет нужен чтобы узнать где именно в роме лежит графика. Примеры редакторов - YY-CHR V.098, djinn Tile mapper, tile molester, tile layer pro и т.д.
Если вы не смогли скачать("где это скачать", "у меня не работает ссылка" и т.д.) данные программы не переходите к
дальнейшим пунктам! Научитесь скачивать потом ломать ромы!
Многие ссылки можно найти тут:
romhacking
Введение.

Форматы представления данных.
В сеге все значения можно поделить на 3-типа =
byte = значение в 1байт. (.b)
word = значение 2байта. (.w)
longword = значение из 4байтов. (.l)
Именно такими значениями оперирует процессор.
байт это число от 0 до $FF (0-255) (в бол-ве случаев от -128 до +127) \ это важно учитывать!.
ворд это число от 0 до $FFFF (0-65535) (в бол-ве случаев от -32768 до +32767) /
символ $ перед числом говорит о его 16-ричном представление.
Железо сеги.
ROM (read-only-memory)-память только чтения - пзу картиржа (картирдж) - то что на нем записано - ром-файл.
RAM (random access memory) -оперативная память (временная) - работает только при включение питания.
Процессор сеги (Motorola 68000) - выполняет операции между ram, rom и собственными регистрами и другими системными устройствами.
VDP (видеопроцессор),
Z80 (доп.процессор), используемый для звуковых программ.
Порты джойстиков.
YM2612 - звуковой чип.
PSG-еще один звуковой чип (шумогенератор).
Прежде чем вскрыть ром.
Распакуйте его если он в архиве, также ром должен быть формата .BIN (или .GEN)
Что содержится в роме? В роме нет файлов. Все данные, расположенные в роме - графика, музыки, звуки, код (программа), могут быть расположены как угодно, а их точное располжение (адрес) определяется программой.
Вскрытие рома.
Для начала откроем РОМ с помощью WINHEX. (File-Open).
Откроется окно, где слева отображается некоторая информация о файле, чуть правее Offset - адрес текущего расположения, посередине большое окно с кучей цифр - 16ричное представление, и справа ASCII-представление. Обычно вначале картирджа располагается информация(заголовок) об игре, который можно прочитать в текстовом (ascii)-виде.
Можно прокрутить ползунок по всему рому, чтобы поискать нет ли еще где такого текста. Если есть его как правило можно безболезненно поменять. Не пытайтесь менять другие цифры в надежде получить хороший результат.
Важно:
Если нажать на колонку offset мышкой колонка адресов преставиться в 10-чной системе, это очень частая ошибка когда случайно так нажимают, мы будем использоваться только 16-ричную систему, если нажали надо нажать еще раз чтобы вернуть обратно, это станет заметно по наличию букв в адресах.
Итак, как же работает игра? Начальный адрес программы задается по адресу 4.
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00000000 00 FF FF 00 00 00 02 10

$00000210 - тип longword (полный адрес) в вашем случае адрес может отличаться (как правило $200)
Теперь если перейти к этому адресу (Position-go to offset-210-ok), мы окажемся вначале программы
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00000210 4A B9 00 A1 00 08 66 06 4A 79 00 A1 00 0C 66 7C
00000220 4B FA 00 7C 4C 9D 00 E0 4C DD 1F 00 10 29 EF 01
Эти цифры представляют собой машинные коды, которые читает и выполняет процессор, отображенные в 'удобном' 16-ричном виде.
К счастью любой такой код можно перевести в код языка Ассемблера, однако следует помнить что ром не состоит из одних кодов, цифры могут означать и что угодно (графика, данные и т.д.).
например данный код: 4A B9 00 A1 00 08
до компиляции