Докажи баг! [Хакер] (pdf) читать постранично

-  Докажи баг!  5.86 Мб, 5с. скачать: (pdf) - (pdf+fbd)  читать: (полностью) - (постранично) - Хакер

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

РЕКОМЕНДОВАННАЯ ЦЕНА 360

06 (185) 2014
4 607157 100063
14006

W W W . X A K E P. R U

Докажи баг!
Как правильно представлять вендорам нестандартные
уязвимости и делать интернет безопаснее

036

084

126

Жизнь после Sublime

Мобильный банкинг

SmartOS

Изучаем новое поколение
текстовых редакторов

Устоят ли популярные
приложения перед MITM?

Как Solaris обрела новую
жизнь в мире highload

PC ZONE

40

ХАКЕР 06 /185/ 2014

ВВЕДЕНИЕ
В РОМХАКИНГ

DaraKero
Dara
Kero_F
_F @ Fli
Flickr.
ckr.com
com

Антон Дементьев
r456tg@gmail.com

ХАКЕР 06 /185/ 2014

41

Меняем правила игры

До появления лазерных дисков и облаков консольные игры выходили на картриджах. Те, кто застал девяностые, наверняка помнят самые популярные в нашей стране игровые приставки Dendy (российский клон японской
Famicom) и Sega Mega Drive. Если очень хочется «вернуться к истокам» —
всегда можно запустить эмулятор. Но можно пойти и чуть дальше — а что,
если покопаться в самой игре? Добро пожаловать в эму-сцену.

Э

му-сценой называют сообщество энтузиастов,
формирующееся вокруг той или иной приставки.
Эти люди ковыряются в своей любимой платформе вдоль и поперек: выкладывают полные дампы
картриджей (ROM’ы), придумывают способы для их модификации и добиваются порой самых необычных результатов. Самый распространенный пример — локализация игр. Но можно
пойти и дальше. Как тебе история про чувака, который хакал
ROM’ы игр для NES, заменяя мужских персонажей на женских
(j.mp/1nJg5p9)? А что еще прикажешь делать, если его дочке
хочется играть за девочек, а в Donkey Kong такой возможности
не предусмотрено?

КРАТКИЙ ЭКСКУРС
Самым главным толчком, послужившим появлению ромхакинга, стала история с игрой Final Fantasy V в 1992 году. Японская
компания Squaresoft решила не издавать игру в США, посчитав ее слишком сложной для западных игроков. С появлением
эмуляции западные энтузиасты не согласились с японцами
и не только сыграли в нее, но и выпустили первый любительский перевод образа картриджа. Официального же перевода на английский не было вплоть до переиздания FFV в конце
1999-го на PlayStation. Именно с перевода Final Fantasy V и появилась русская ромхакинг-сцена, это был дебютный проект
группы «Шедевр» в 2001 году.
В 1994 году история отчасти повторилась и с Final Fantasy
VI. На этот раз игра вышла в США (под названием Final Fantasy
III), через несколько месяцев после релиза в Японии (1994
год). Однако локализация оказалась крайне неудачной: перевод всей игры был выполнен всего одним человеком (Тедом
Вулси) в крайне сжатые сроки. Например, в этом переводе были выкинуты скрытые отсылки к дальнейшему развитию сюжета, а смысл одного из предложений был заменен
на противоположный из-за неправильно понятого японского
крылатого выражения (фраза, близкая по значению к «бизнес испарился», была воспринята Тедом как «бизнес пошел
вверх»). Сам Тед оправдывает низкое качество его перевода
тем, что ему приходилось делать текст максимально коротким, так как он не влезал в картридж, в то время как японский
текст заведомо более компактный. Тем не менее недовольные официальным переводом фанаты с задачей помещения

в ром близкого к оригиналу английского текста справились
вполне успешно.

ФОРМУЛИРУЕМ УСЛОВИЯ ЗАДАЧИ
Есть одно обстоятельство, которое делает ромхакинг одновременно сложнее и интереснее более популярного моддинга PC-игр. Разработчики современных игр для ПК часто
поддерживают моддеров, создавая для них официальные
инструменты и выпуская всю необходимую документацию.
В случае с консольными играми очевидно, что разработчики
никак не предусматривали последующую модификацию своих
тайтлов. Поэтому при ромхакинге мы имеем бинарный файл
и даже не знаем, по каким адресам и в каком формате хранятся нужные данные, а значит, изначально требуется действовать вслепую, на ощупь.
Ромхакинг может быть как с модификацией машинного
кода — языка ассемблера, который у каждой платформы свой
(в этом случае если изменения кардинальные, то модифицированный ром или образ диска называют хаком), так и без нее.
Во втором случае трогать машинный код не нужно и работа
происходит только с данными: графикой, шрифтами, текстом,
пойнтерами (разделители текста) или даже музыкой. Но даже
в этом случае расположение и формат этих данных изначально неизвестен.
Рассмотрим самую распространенную цель ромхакинга — любительский перевод. Изменение шрифтов необходимо, если алфавиты исходного и конечного языка отличаются,
например если нужно заменить латиницу на кириллицу. То же
самое касается и перевода с японского на английский или русский.
Кроме адреса, по которому начинается текст, нужно определить его кодировку, которая может быть абсолютно произвольной. Практически всегда разработчики старых консольных игр использовали поинтеры, благодаря которым также
упрощается и деятельность ромхакера: изменяя их, он может
не сохранять длины оригинальных