Навигация
Наши каталоги
PSP Обои
Реклама
Декоративные экраны
Иллюстрированный каталог. Возможность онлайн-заказа.
petroarka.ru
Облако тегов

Блок использует технологию Flash.
Для полноценного просмотра
требуется более новая версия
Adobe Flash Player.


Топ новостей
 

Углубляемся в PSP – Часть 8: Поиск уязвимостей в сохранениях игр

автор: SeeD | 17-07-2009, 17:39 | Просмотров: 20627
Автор оригинального текста: wololo
Перевод: westD

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




Основная часть таких эксплоитов основана на ошибке переполнении буфера. Читаем статью «Углубляемся в 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.

Данный материал для PSPFAQS.ru написал westD, за что ему огромное спасибо!


Ключевые теги: psp, эксплоит, сэйвы
 
  • Вы не вошли или уже голосовали
  • Рейтинг: 21 (Голосов: 29)
 
Новинки
Комментарии