Автор неизвестен - Ромхакинг для начинающих. Sega Mega Drive.
Название: | Ромхакинг для начинающих. Sega Mega Drive. | |
Автор: | Автор неизвестен | |
Жанр: | Хакерство, Программирование игр | |
Изадано в серии: | неизвестно | |
Издательство: | неизвестно | |
Год издания: | 2010 | |
ISBN: | неизвестно | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Ромхакинг для начинающих. Sega Mega Drive."
Аннотация к этой книге отсутствует.
К этой книге применимы такие ключевые слова (теги) как: Sega Mega Drive
Читаем онлайн "Ромхакинг для начинающих. Sega Mega Drive.". [Страница - 3]
- 1
- 2
- 3
- 4
- 5
- . . .
- последняя (19) »
комбинации кнопок, ascii текст, архивы, цены игровых предметов и т.д.)
Однако можно 'насильно' попробовать их представить как код (нажав C).
ROM:0000029E loc_0_29E: ; DATA XREF: RESET+10o
ROM:0000029E or.b d0,d0
ROM:0000029E; ---------------------------------------------------------------------------
ROM:000002A0 dc.b $3F; ?
ROM:000002A1 dc.b $FF
ROM:000002A2; ---------------------------------------------------------------------------
ROM:000002A2 btst d0,d0
ROM:000002A4 ori.l #$A1,-(a0); '?'
ROM:000002AA move.b d0,-(a0)
ROM:000002AC ori.l #$120000C0,-(a1)
ROM:000002B2 ori.b #(dword_0_0+$C0),d0
ROM:000002B6 ori.b #$14,d4
ROM:000002BA move.w #$76C,d0
ROM:000002BE ori.b #0,d0
ROM:000002BE; -------------------------------------------------------------------
Данные представились как код, но это неправильно, т.к. это просто совпадение. Поэтому надо сделать Undefine обратно.
Как точно определить данные это или же код, будет рассмотрено немного позже.
Однако скажу что любой код заканчивается на команды:
jmp (прыжок)
bra (прыжок)
rts (возврат)
rte (возврат из исключения)
Если же у вас участок кода закончился на любую другую, а далее идет 'разрыв' и 'C' не срабатывает, то это не КОД.
ROM:0000029E or.b d0,d0
ROM:0000029E; ---------------------------------------------------------------------------
ROM:000002A0 dc.b $3F; ?
ROM:000002A1 dc.b $FF
or.b d0,d0 - не код. жмем 'U'. следующий кусок тоже не код, т.к. заканчивается на ori.b #0,d0
Почему так? если бы процессор выполнял команду or.b d0, d0; следующая за ней шла бы 3FFF, а она не является командой процессор и игра бы просто повисла или перезапустилась. Именно поэтому нельзя в РОМ-файле менять цифры от 'балды', т.к. задевая программную часть мы портим последовательность действий.
Важно знать!, что хоть data и не является кодом, однако может представлять т.н. ссылки на код или ресурсы (offsets) - то есть адреса.(отделение адресов будет рассмотрено позже)
Так что же нам это всё дает? Наверное вы уже слышали понятия ASM-hacking и Data-hacking.
Так вот асм-хакинг это изменение(хакинг) кода, требует знания программирования (на самом деле можно хакать и не зная, достаточно запомнить парочку команд, а как я расскажу позже).
Дата-хакинг это изменение игровых данных, простой способ определить за что отвечали те или иные данные, заполнить эту область нулями (не задевая код), и посмотреть что изменилось.
Рекомендуется искать такие области начиная с адреса $1500 (но всё зависит от конкретной игры!), обычно вначале идут системные данные (связанные с информацией о регионах), которые менять ненужно или нельзя.
Чтож если вы поняли и вам уже захотелось попробовать, ищем в IDA-участки 'Data', переходим по этим же адресам в WinHex'e, выделяем область , жмем Edit-Fill block-Fill with hex values - 00, OK. Сохраняем и открываем ром в эмуляторе. Если РОМ не запускается, зайдите в опции эмулятора и поставьте галочку Auto Fix Chechsum / Править CRC Рома. Если РОМ все равно не запускается, отмените в WinHEx изменения (CTRL+Z) и пересохраните файл. Если игра теперь запускается значит, область была важной и просто так её изменять нельзя, попрбуйте найти другую область данных. Если игра от Electronic Arts**, то стоит
дополнительная защита, которую нужно предварительно снять, также доп. защита может быть и в других играх. Определить есть защита или нет просто - если игра не запускается при любом изменении - значит есть.
В случае удачных изменений, т.е. что-то изменилось и вы поняли что, следует изучать данный участок.(попробовать залить не 'нулями', редактировать цифры по одной и выявлять закономерности):
Пример области 'data':
ROM:00007328 add.b d1,(a1,a0.w)
ROM:0000732C rts
ROM:0000732C; ---------------------------------------------------------------------------
ROM:0000732E unk_0_732E: dc.b 1
ROM:0000732F dc.b 0
ROM:00007330 dc.b 1
ROM:00007331 dc.b 0
ROM:00007332 dc.b 0
ROM:00007333 dc.b 1
ROM:00007334 dc.b 1
ROM:00007335 unk_0_7335: dc.b $10
ROM:00007336 dc.b $10
ROM:00007337 dc.b 0
ROM:00007338 dc.b 0
ROM:00007339 dc.b $10
И её отображение в HEX. (т.е. пробуем менять цифры с адреса 732E до 7369)
00007320 43 EC 51 9A 12 3B 00 1D D3 31 80 00 4E 75 01 00
00007330 01 00 00 01 01 10 10 00 00 10 00 10 00 08 08 08
00007340 00 00 08 00 00 00 01 01 01 01 00 03 00 02 00 03
00007350 00 04 00 00 00 04 00 03 01 00 08 00 01 00 08 00
00007360 02 00 04 00 02 00 04 00 08 00 FF FF E5 40 41 EC
Примечание: в IDA значения менять нельзя, это только просмотрщик. Меняем через WinHEx.
Если вы не поняли, или хотите --">
Однако можно 'насильно' попробовать их представить как код (нажав C).
ROM:0000029E loc_0_29E: ; DATA XREF: RESET+10o
ROM:0000029E or.b d0,d0
ROM:0000029E; ---------------------------------------------------------------------------
ROM:000002A0 dc.b $3F; ?
ROM:000002A1 dc.b $FF
ROM:000002A2; ---------------------------------------------------------------------------
ROM:000002A2 btst d0,d0
ROM:000002A4 ori.l #$A1,-(a0); '?'
ROM:000002AA move.b d0,-(a0)
ROM:000002AC ori.l #$120000C0,-(a1)
ROM:000002B2 ori.b #(dword_0_0+$C0),d0
ROM:000002B6 ori.b #$14,d4
ROM:000002BA move.w #$76C,d0
ROM:000002BE ori.b #0,d0
ROM:000002BE; -------------------------------------------------------------------
Данные представились как код, но это неправильно, т.к. это просто совпадение. Поэтому надо сделать Undefine обратно.
Как точно определить данные это или же код, будет рассмотрено немного позже.
Однако скажу что любой код заканчивается на команды:
jmp (прыжок)
bra (прыжок)
rts (возврат)
rte (возврат из исключения)
Если же у вас участок кода закончился на любую другую, а далее идет 'разрыв' и 'C' не срабатывает, то это не КОД.
ROM:0000029E or.b d0,d0
ROM:0000029E; ---------------------------------------------------------------------------
ROM:000002A0 dc.b $3F; ?
ROM:000002A1 dc.b $FF
or.b d0,d0 - не код. жмем 'U'. следующий кусок тоже не код, т.к. заканчивается на ori.b #0,d0
Почему так? если бы процессор выполнял команду or.b d0, d0; следующая за ней шла бы 3FFF, а она не является командой процессор и игра бы просто повисла или перезапустилась. Именно поэтому нельзя в РОМ-файле менять цифры от 'балды', т.к. задевая программную часть мы портим последовательность действий.
Важно знать!, что хоть data и не является кодом, однако может представлять т.н. ссылки на код или ресурсы (offsets) - то есть адреса.(отделение адресов будет рассмотрено позже)
Так что же нам это всё дает? Наверное вы уже слышали понятия ASM-hacking и Data-hacking.
Так вот асм-хакинг это изменение(хакинг) кода, требует знания программирования (на самом деле можно хакать и не зная, достаточно запомнить парочку команд, а как я расскажу позже).
Дата-хакинг это изменение игровых данных, простой способ определить за что отвечали те или иные данные, заполнить эту область нулями (не задевая код), и посмотреть что изменилось.
Рекомендуется искать такие области начиная с адреса $1500 (но всё зависит от конкретной игры!), обычно вначале идут системные данные (связанные с информацией о регионах), которые менять ненужно или нельзя.
Чтож если вы поняли и вам уже захотелось попробовать, ищем в IDA-участки 'Data', переходим по этим же адресам в WinHex'e, выделяем область , жмем Edit-Fill block-Fill with hex values - 00, OK. Сохраняем и открываем ром в эмуляторе. Если РОМ не запускается, зайдите в опции эмулятора и поставьте галочку Auto Fix Chechsum / Править CRC Рома. Если РОМ все равно не запускается, отмените в WinHEx изменения (CTRL+Z) и пересохраните файл. Если игра теперь запускается значит, область была важной и просто так её изменять нельзя, попрбуйте найти другую область данных. Если игра от Electronic Arts**, то стоит
дополнительная защита, которую нужно предварительно снять, также доп. защита может быть и в других играх. Определить есть защита или нет просто - если игра не запускается при любом изменении - значит есть.
В случае удачных изменений, т.е. что-то изменилось и вы поняли что, следует изучать данный участок.(попробовать залить не 'нулями', редактировать цифры по одной и выявлять закономерности):
Пример области 'data':
ROM:00007328 add.b d1,(a1,a0.w)
ROM:0000732C rts
ROM:0000732C; ---------------------------------------------------------------------------
ROM:0000732E unk_0_732E: dc.b 1
ROM:0000732F dc.b 0
ROM:00007330 dc.b 1
ROM:00007331 dc.b 0
ROM:00007332 dc.b 0
ROM:00007333 dc.b 1
ROM:00007334 dc.b 1
ROM:00007335 unk_0_7335: dc.b $10
ROM:00007336 dc.b $10
ROM:00007337 dc.b 0
ROM:00007338 dc.b 0
ROM:00007339 dc.b $10
И её отображение в HEX. (т.е. пробуем менять цифры с адреса 732E до 7369)
00007320 43 EC 51 9A 12 3B 00 1D D3 31 80 00 4E 75 01 00
00007330 01 00 00 01 01 10 10 00 00 10 00 10 00 08 08 08
00007340 00 00 08 00 00 00 01 01 01 01 00 03 00 02 00 03
00007350 00 04 00 00 00 04 00 03 01 00 08 00 01 00 08 00
00007360 02 00 04 00 02 00 04 00 08 00 FF FF E5 40 41 EC
Примечание: в IDA значения менять нельзя, это только просмотрщик. Меняем через WinHEx.
Если вы не поняли, или хотите --">
- 1
- 2
- 3
- 4
- 5
- . . .
- последняя (19) »
Книги схожие с «Ромхакинг для начинающих. Sega Mega Drive.» по жанру, серии, автору или названию:
Александр Николаевич Ковтик - Бокс. Уроки профессионала для начинающих Жанр: Физкультура и спорт Год издания: 2008 |
Автор неизвестен - Тайна башни (сборник) Жанр: Классический детектив Год издания: 2014 |
Автор неизвестен - Кровь, за кровь. Жизнь, за жизнь (СИ) Жанр: Фэнтези: прочее Год издания: 2003 |
Другие книги автора « Автор неизвестен»:
Автор неизвестен - Волк и овца Жанр: Сказки для детей Серия: Эстонская сказка |
Автор неизвестен - Веер Тэнгу Жанр: Сказки для детей Серия: Японская сказка |
Автор неизвестен - Гэвхэту Жанр: Сказки для детей Серия: Орокская сказка |