Библиотека knigago >> Компьютеры и Интернет >> Хакерство >> Ромхакинг для начинающих. Sega Mega Drive.


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 2539, книга: Не знаю
автор: Руслан Ряфатевич Агишев

Ребят, читал "Не знаю" Агишева и залип просто. Представь себе, что ты попадаешь в мир, похожий на средневековую Европу, но с примесью восточного колорита. Вот только вместо мечей и луков здесь магия и сверхспособности. И ты становишься одним из таких сверхлюдей. Главный герой, обычный пацан с Земли, крушит врагов направо и налево, становясь сильнее с каждым боем. А вокруг него кипят интриги, плетутся заговоры и решаются судьбы народов. Ну не кайф ли? Больше всего порадовало, что...

СЛУЧАЙНАЯ КНИГА

Жестокая красотка. Владимир Григорьевич Колычев
- Жестокая красотка

Жанр: Остросюжетные любовные романы

Год издания: 2018

Серия: Колычев. Любовь зла и коварна

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

Ромхакинг для начинающих. Sega Mega Drive.
Книга - Ромхакинг для начинающих. Sega Mega Drive..   Автор неизвестен  - прочитать полностью в библиотеке КнигаГо
Название:
Ромхакинг для начинающих. Sega Mega Drive.
Автор неизвестен

Жанр:

Хакерство, Программирование игр

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Ромхакинг для начинающих. Sega Mega Drive."

Аннотация к этой книге отсутствует.
К этой книге применимы такие ключевые слова (теги) как: Sega Mega Drive

Читаем онлайн "Ромхакинг для начинающих. Sega Mega Drive.". [Страница - 5]

char_id
Теперь если нажать правой кнопкой и выбрать Jump to Xref's, мы увидим переходы к участкам кода игры, связанные с данным параметром. Эти 'куски' кода и будут нас интересовать больше всего.

Если же ничего не нашлось (пусто по обоим адресам) - значит:
1) участок в котором запрашивается этот адрес не был дизасмнут.
2) этот адрес запрашивается относительно другого адреса. (относительная адресация)
3) вся игра использует относительный метод адресации к RAM.
(пример - Rock n' Roll Racing, все значения берутся от-но адреса FF8000,который записан в регистре A4 процессора)
4) 1+3 варианты сразу.
В этом случае на помощь приходит дебаг.

Эмулятор который мы будем использовать для дебага GENSVKNTrace.
Запускаем, открываем РОМ файл , потом переходим в опции Дебаг-Main 68k Debugger, откроется окно.
Находим брейкпоинты на ОЗУ. В первое или любое поле вписываем наш адрес FFxxxx. Ставим галочки 'чтение' или 'запись', или обе сразу и галочку 'установить брейкпоинт'. Нажимаем ОК.
Игра продолжается. теперь просто надо 'прокрутить' игру или поиграть до того момента , пока не срабатоет брейкпоинт (само откроется окно дебага с надписью 'сработал брейкопоинт на чтение (запись)!'
После того как окно откроется мы увидим код, по которому этот адрес запросился. (например чтение номера(ID) игрока), команда по которой он запросился находится в самой первой строчке. Запомним этот адрес и теперь перейдем к этому участку в базе IDA, и поставим там метку (rename_ read_char_id) или (write_char_id). Хоткей ренейма - 'N'.
Стоит отметить что таких участков может быть достаточно много. (т.е. нужно ждать другого брейкпоинта, при других игровых условиях, пробовать ставить на запись отдельно, на чтение отдельно и ждать.

Брейкпоинт для PC (program counter) - т.н. программный счетчик, необоходим для определения чтения исполняемого кода.
Несмотря на то, что в эмуляторе написано 'брейкпоинты на озу', можно спокойно использовать дебаг и на ROM (т.е. область кода и данных). Теперь если написать любой адрес ROM в поле дебага и поставить галочку 'PC', то если в этом находится программа, то сработает брекпоинт на PC (в случае если эта часть программы будет выполняться) - ну например код выполнения выстрела или спецприема. Если же поставить ROM-адресс на 'чтение' и сработает брейкпоинт значит в этом месте не код, а данные. На 'запись' для rom ставить не нужно, т.к. ни о какой запись в (read-only-memory) картидж не может идти и речи, это используется толко для RAM(ОЗУ), а 'pc', т.е код, практически не встречается в области RAM.
PC (program counter) - счетчик который определяет адресс текущего расположения выполняемой процессором команды. Очень часто применяется для относительной адресации. (от текущего места +$xxxx = итоговый адрес).

Примеры адресации:

move.w ($FFCECE).l,d0 - абсолютная полная (32битная запись, но сега 'держит' только 24)


move.w ($CECE).w,d0 или при этом два байта move.w ($FFFFCECE).w,d0 (но в hex 'FFFF' не будет) - абсолютный адрес но задается 2 байтами. трюк состоит в том что первые считаются $FFFF и мы попадаем тоже в RAM, но это соблюдается только для адресов >$8000, при меньших мы попадем в ROM. (это особенность 16-битной адресации)


move.w $4ECE(a4),d0 - адрес равняется $4ECE + число, в регистре a4 процессора. в данном случае a4=$FF8000+$4ECE=$FFCECE. В других случаях в a4 может быть что угодно, регистры могут быть от a0 до a6 и в них может быть записано что угодно, и может постоянно менятся в зависимости от программы. Что точно находиться в регистре в данный момент времени можно посмотреть в дебаггере.


Во всех трех случаях значение из памяти (RAM) читается и записывается в регистр d0 процессора.
Запись же выглядит 'наоборот': move.w d0,($FFCECE).l
Команда может быть не обязательно move, а другой (add, sub, и т.д.)

move.w unkn_00(pc,d1.w),d0 - чтение данных от текущего места + PC + d1. (IDA автоматически определяет расположение unkn_00 при условии что d1=0)
Подробнее о командах и регистрах будет рассмотрено позже.

Hot trick:
Используете GG-коды и GGConv.exe (game genie converter), чтобы найти уже найденные другими адреса в ROM и RAM, и допишите их в базу переименовав и поставив метки.
GG-коды можно найти в книге кодов codebook.exe, и на сайтах.
Запустим конвертер и выберем вкладку GEN (sega GENesis).
Вбиваем GG-code и получаем HEX-code.
Многие адреса уже представлены в виде HEX-code и их конвертировать не нужно.
HEX-code выглядит в формате adress:data.

пример FF1234:0005 (интересуемый адрес FF1234, значение вприцнипе нас не интересует), так если в описании чита указано что это жизни, следует переименовать, или начать с 5-ого (4-ого) уровня - значить это уровень, а --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.