Вторник, 16.04.2024, 07:49
Приветствую Вас Гость | RSS
//vkontakte.ru/id66890680
Главная
Регистрация
Вход
Меню сайта

Категории раздела
Новости и релизы [29]
Прошивки [2]
Инструкции [16]
Soft раздел [3]
Hard раздел [5]
PSP Кодинг [5]
Игры на PSP [10]

Мини-чат
500

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Главная » Файлы » Инструкции [ Добавить материал ]

Углубляемся в PSP – Часть 8: Поиск уязвимостей в сохранениях игр
28.01.2010, 13:25
Автор оригинального текста: wololo
Перевод: sk8-maN

Поскольку поддержка TIFF изображений была убрана из последних версий официальной прошивки Sony PSP, то наиболее реальным способом нахождения уязвимостей, способных в последствии перерасти в эксплоит и HEN, остается, как и прежде, нахождение ошибок в системе сохранения игр. Данная инструкция поможет вам на практике опробовать простейший, но, тем не менее, достаточно эффективный способ их выявления.

                         <script type="text/javascript" src="http://www.psp-faqs.at.ua/informer/4"></script>


Основная часть таких эксплоитов основана на ошибке переполнении буфера. Читаем статью «Углубляемся в PSP – Часть 4: Эксплоит и Крах. Отличия и нахождение».

Наиболее популярный способ поиска такой ошибки – записать очень длинную строку (например, This is spartaaaaaaaaaaaaaaaaaaaaa) в строку имени игрока внутри самого сохранения.

sparta.jpg (235.24 Kb)

Конечно, нельзя ввести такое длинное имя в самой игре, изменения нужно вносить в декриптованный SDDATA.bin, с помощью HEX-редактора. Читаем статью – «Savegame Deemer Ver 1.1 – возможность покопаться в сейвах».

В большинстве случаев игра просто сообщит, что сохранение игры повреждено. Но если игра зависнет, то ВОЗМОЖНО удастся найти что-нибудь полезное. Данное зависание означает, что в коде игры содержится ошибка. А с помощью программы PSPLink можно узнать, получится ли эту ошибку превратить в эксплоит или нет.

Запуск игры совместно с PSPLink

Потребуется PSP с модифицированной прошивкой и установленный PSPLink. В архиве PSPLink содержится несколько prx файлов, плагины usbhostfs.prx и psplink.prx нужно установить и активировать для игры. Читаем статью – «PSP Кодинг, Часть 2 – Повести дилетанта».

psplink.jpg (94.27 Kb)

Когда все установлено, запустите на компьютере usbhostfs_pc и psph, соедините PSP с компьютером через USB и запустите игру. Если все прошло удачно, то usbhostfs_pc выведет «connected to device», а pspsh выведет «all modules loaded» а затем выведет «/host0:>».

После загрузки сохранения, игра должна зависнуть, а дамп памяти должен отобразиться в окне psph.

Что нас интересует?

PSPLink показывает значения регистров памяти до краха игры. Регистры – это 32-битные целочисленные данные, которые могут быть как символами, так и адресами памяти, в зависимости от того, как их обрабатывает программа.

crash.jpg (68.86 Kb)

При написании эксплоита требуется найти возможность совершить переход на произвольный участок памяти. Наиболее известный вариант – это перезаписать содержимое регистра $ra (ra – return address, то есть адрес возврата). Это адрес, куда перейдет выполнение кода, после завершения подпрограммы по команде «j $ra» (переход на $ra). Значение регистра $ra обычно берется из регистра $sp. Если можно изменить значение $sp, то это тоже хорошо.

Другие регистры не являются бесполезными, они могут влиять на значение регистров $ra и $sp, но это слишком сложно.

Почему же уязвимость в игре GripShift – это эксплоит, а уязвимость в игре Phantasy Star – просто крах?

Сравним дампы памяти при возникновении ошибки (крах игры).

GripShift:

gripshift_crash.jpg (109.69 Kb)

Мы поместили много символов «a» в имя игрока. Смотрим в дамп и видим, что $ra равно 0×61616161, а символ «a» в шестнадцатеричном виде равен 61.

Ура! Мы нашли простой способ для перехода к произвольному участку памяти. Для этого символы «ааааа» надо заменить на адрес, по которому будет расположен исполняемый код.

Как вы должно быть знаете, под эту уязвимость действительно был написан работающий эксплоит и HEN, однако его публичный релиз так и не состоялся в виду конфликта, разгоревшегося между его авторами.

Phantasy Star:

phantasy_crash.jpg (102.81 Kb)

Мы видим несколько значений «61», но ничего интересного в $sp и $ra. Посмотрим, может $a1, $a2,$a3 принесут какую-либо пользу.

phantasy_disasm.jpg (183.23 Kb)

К сожалению, $a1, $a2,$a3 не связаны с $sp и потому пользы от них нет. Возможно, данную уязвимость все-таки можно превратить в эксплоит, но лучше заняться следующей игрой. Удачных вам поисков smile.

Главная
  По поводу материала обращайтесь FAQ (вопрос/ответ)
Категория: Инструкции | Добавил: sk8-man | Теги: Сохранёные игры!
Просмотров: 1236 | Загрузок: 0 | Рейтинг: 3.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск


Copyright MyCorp © 2024