Как взломать псп

Обновлено: 17.05.2024

Здравствуйте, меня зовут Александр. Немного о себе. Мне 16 лет, заканчиваю 11 класс, живу в городе, который очень далёк от столицы. Уже 2,5 года занимаюсь программированием по части игровых консолей Sony. Автор многих плагинов и программ, а также, с недавнего времени, прошивок.

Я думаю, многие помнят старушку PSP, которая радовала наш глаз с 2005 года. Многие, будучи детьми, очень завидовали сверстникам с состоятельными родителями, которые могли порадовать своё чадо таким подарком. Но время проходит, технологии совершенствуются, и PSP уже не та. Примерно год назад Sony запустила новый проект под названием PSVita, также известная как NGP (Next Generation Portable) и PSP2. Последним термином не брезгует и сама компания, применяя его в качестве кодового названия. Консоль получила хорошие технические характеристики и уникальные возможности. Многие из хакеров поприща PSP кинули свои силы на взлом защиты PSVita.

Имея массивный опыт в области PSP большинство взглядов сцены обратилось именно в сторону эмулятора PSP, устройство которого практически идентично внутреннему устройству самой PSP.

Шаг 1 — Usermode доступ в эмуляторе PSP

Первые и текущие usermode эксплоиты эмулятора PSP на PSVita, позволяющие запустить неподписанный код были построены на уязвимостях переполнения буфера. Начальный код и «вода», которая переливалась за буфер находились в теле сохранения игры, купленной за кровные деньги в PS Store. Де/криптовка сохранений и поиск уязвимостей на этом поприще стал возможен благодаря совместимости данных сохранений с PSP.

Расскажу подробнее. Что такое уязвимость переполнения буфера знает большинство, от специалистов по компьютерной безопасности до обычных людей, изучавших любой ассемблер. Но я постараюсь объяснить это со стороны своего взгляда.

Игра считывает сохранение, парсит его и записывает данные в структуру. Бывает, что данные копируются функцией strcpy или же выступают в качестве аргумента строки в функции sprintf. Эти функции не являются безопасными, т.к. они не контролируют размер выходного буфера, который выделяется из стека.

Допустим в игре есть код.

1. Регистр $ra (инструкция jr)

Если в последующем данные из стека будут восстановлены в регистр $ra (регистр возвращения адреса в MIPS), то мы сможем выполнить код с произвольного адреса. Нам сослужит службу инструкция «jr $ra», которая предназначена для возвращения кода на исходный участок из подфункции. Конечно же, мы положим свой код в свободное место в сохранении, осталось ещё 64 байта, которых предостаточно.

2. Аргумент инструкции jalr
3. Аргументы sw

Если мы возымеем контроль над аргументами инструкции sw (store word), то мы сможем подставить себе «под ножку» любую инструкцию, в том числе и перенаправление.

Все эти манипуляции проводятся на PSP с помощью дебаггера (psplink), далее сохранение криптуется и подаётся на завтрак PSVita с заведомо купленной уязвимой игрой.

image

В доказательство предоставлю скриншот Hello World, запущенного с помощью эксплоита в данных сохранения.

При наличии только usermode эксплоита возможно портирование загрузчика usermode софта (Vita Half-Byte Loader). У него куча ограничений и багов, но, тем не менее, это не мешает пользователям наслаждаться лишь эмуляторами первых консолей (Dendy, Atari, Sega, GameBoy Advance).

Шаг 2 — Kernel доступ в эмуляторе PSP

Следующий шаг — kernel доступ. При получении возможности вносить правки в kernel память, мы можем сделать с системой всё что угодно. Это и сделал известный хакер и разработчик Total_Noob, написав и выпустив CEF (Custom Emulator Firmware) на основе утекшего kernel эксплоита от человека, который пожелал остаться неизвестным. После прошивки 1.81 был длительный кризис в плане взлома. Новый эксплоит никто не торопился выпускать, тогда я решил выпустить свой. И вот вы можете использовать CEF на прошивках выше 1.81 вплоть до 2.02. Сейчас я постараюсь объяснить его концепцию. Я думаю, она многим знакома.

1. Read-only kernel эксплоит

Насколько вам известно, имея только user права, записать или даже прочитать kernel память нельзя. Попытки этого ограничиваются эксепшном «ломящегося» модуля и последующим крешем всей системы. Создаётся впечатление, будто и нет её, этой kernel памяти. Но мы то знаем, что она есть и даже знаем её адрес — 0x88000000.

Но с чего же нам начать? У нас нет модулей прошивки, а прочитать kernel память чтобы получить их мы не можем!
Для этого нам нужно найти read-only kernel эксплоит. Его принцип прост. Мы должны использовать функцию в kernel модуле, которая может записать в указатель или вернуть из функции значение участка кода, адрес которого можно задать аргументом самой функции. Для исследований можно использовать модули прошивки PSP (рекомендую 6.60). Ведь прошивка эмулятора PSP во многих местах просто идентична прошивке PSP, как я уже говорил выше. Соответственно, дыры остались.

Пример «дырявой» функции (пример без мусора и служебных инструкций).

Регистр $a0 является первым аргументом функции, значение которого потом перемещается в регистр $s0. Регистр $s0 в свою очередь есть второй аргумент для инструкции lw, он задаёт адрес. Первым аргументом lw является регистр $v0, который возвращает значение операции return (в Си). Инструкция lw это load word — загрузка четырёхбайтного слова (его адрес это значение второго аргумента) в регистр (первый аргумент).
Осмыслив абзац выше, мы можем сделать заключение, что данная функция вернёт значение четырёхбайтного слова по адресу, заданному в первом аргументе.

Эксплоит для данной функции будет выглядеть так.

В результате по адресу 0x08A00000 в памяти будет записано содержимое kernel памяти размером в 0x00400000 байт. Сохранить его в виде файла не составит трудностей, также как и поиск идентичных уязвимостей.

Вытащив необходимые модули, их можно исследовать. Дизассемблирование производится программой prxtool.

2. Kernel эксплоит с правами записи

Итак, найти подходящую функцию можно только исследуя kernel функции на наличие контроля второго аргумента store инструкций (sw, sh, sb) с помощью входных аргументов самой функции ($a0-$a3, $t0-$t7) и наличие ошибок в структурах. Будьте внимательны, особенно к структурам.

Ввиду того, что о последнем написано абстрактно, подробнее об этом вы можете почитать здесь, в моей же давней статье.
Хороший справочник по архитектуре MIPS есть на википедии.
Просто отличный учебник по ассемблеру с нуля на примере MIPS (за который отдельная благодарность Bradley Kjell) вы можете найти здесь.
Описание kernel эксплоита на консоли PSP в прошивках 6.20 и 6.60.

Хочу выразить благодарность: SilverSpring, Malloxis, Dark Alex и some1.

В заключение хочу сказать, что я не поддерживаю пиратство и статья написана только в ознакомительных целях. Если у вас возникли вопросы всегда буду рад ответить в твиттере (frostegater). Спасибо за внимание.

Установка CFW

Этап 1: Подготовка

На данном этапе первым делом следует выяснить, какой модели ваша приставка и какого типа материнская плата в ней установлена. Алгоритм следующий:

    Первое, на что нужно обратить внимание – форм-фактор корпуса приставки. Модели серий 1000, 2000, 3000 и E1000 выполнены в виде моноблока.

Форм-фактор PSP для определения варианта прошивки

Версия PSP GO для определения варианта прошивки

Сравнение PSP 1000 и 2000 для определения варианта прошивки

Панель моделей PSP Slim и Brite для определения варианта прошивки

Внешний вид панели PSP Street для определения варианта прошивки

После определения серии укажем, какие варианты прошивок на какую можно установить:

  • 1000 Fat – поддерживаются как постоянные, так и виртуальные CFW;
  • 2000 Slim – аналогично предыдущей, но зависит от версии установленной материнской платы;
  • 3000 Brite (в том числе и вариант для РФ PSP 3008), Go, Street – поддерживаются только виртуальные варианты.

Следовательно, теперь нужно определить конкретную модель устройства. Делается это просто:

    Выключите приставку, затем откройте её батарейный отсек и извлеките аккумулятор.

Вытащить аккумулятор проверки модели и даты PSP перед прошивкой CFW

Стикер с указанием модели и даты PSP перед прошивкой CFW

Чуть ниже расположена строка «Date Code», которая нужна пользователям PSP 2000 Slim. Значения следующие:

  • «8a» и «8b» – получится установить постоянную прошивку;
  • «8c» и «8d» – доступны исключительно виртуальные прошивки, установка постоянной приведёт к «окирпичиванию» консоли, так как в этом варианте установлена материнская плата TA-088v3, которая защищена от установки CFW.

Запустить настройки для проверки версии ПО PSP перед прошивкой CFW

Далее воспользуйтесь вариантом «Сведения о системе».

Сведения о системе для проверки версии ПО PSP перед прошивкой CFW

Появится окошко с версией установленного ПО, сетевым псевдонимом и MAC-адресом приставки.

Версия установленного официального ПО PSP перед прошивкой CFW

Внимание! Не пытайтесь установить стороннюю прошивку версией ниже установленной официальной, иначе рискуете получить «кирпич»!

Этап 2: Загрузка нужных файлов

На этом этапе следует определиться, какой именно вариант сторонней прошивки вы хотите получить для своей консоли, скачать его и переместить на карту памяти.

  1. На сегодняшний день существуют такие CFW:
    • L(ME) – старейший из существующих вариантов от японского разработчика neur0n. Поддерживает как запуск ISO-версий игр, так и сторонних Homebrew-приложений и разнообразных плагинов;
    • PRO – альтернативный вариант предыдущей, сосредоточенный на большем функционале (включает в себя все возможные драйверы виртуального UMD-привода и своего рода эмулятор для мультиплеера по Wi-Fi, скачиваемый и устанавливаемый отдельно), но менее стабилен, нежели версия L(ME).

Существовали также более старые версии прошивок от других разработчиков, но сейчас они неактуальны. Таким образом, вам остаётся выбрать одну из предложенных выше CFW и скачать по ссылкам далее.

Внимание! Версии ниже рассчитаны на версию OFW 6.60!

    Для установки 6.60 LME – каталоги installer и launcher из соответствующей директории;

Переместить файлы L(ME) CFW для прошивки PSP на стороннее ПО

Внимание! Папку CIPL_Flasher нужно копировать только владельцам PSP 1000 и PSP 2000 с возможностью установки постоянной прошивки!

Копирование дополнительных плагинов PRO CFW для прошивки PSP на стороннее ПО

Этап 3: Установка CFW

Инсталляция стороннего варианта системного ПО для PSP сама по себе простая. Процедура для обоих актуальных вариантов во многом схожа, поэтому приведём общий алгоритм, отмечая лишь различия.

Важно! Все дальнейшие действия вы производите на свой страх и риск!

Запуск установки CFW для прошивки PSP на стороннее ПО

Начало установки CFW для прошивки PSP на стороннее ПО

Проверка установки CFW для прошивки PSP на стороннее ПО

Повторный запуск виртуальной прошивки после установки CFW на PSP

Внимание! Попытка сделать виртуальную прошивку постоянной на неподдерживаемых моделях приведёт к выходу консоли из строя!

Старт установки постоянного CFW для прошивки PSP на стороннее ПО

Заключение

На этом заканчиваем нашу инструкцию по прошивке PlayStation Portable для официального и стороннего вариантов ПО. Как видим, сама процедура очень простая, тогда как главную роль играет подготовительный этап.

Закрыть

Мы рады, что смогли помочь Вам в решении проблемы.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Закрыть

Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

Как взломать псп

Степан Образцов

(Примечание: язык - т.е., RUS или ENG, относится только к VSH-меню и Recovery-меню кастомной прошивки, а не к языку самой системы. Основная оболочка системы будет продолжать работать на том языке, на котором она у вас стоит.)

I. Подготовка
Скачиваем любую игру в формате ISO или CSO, дожидаемся окончания загрузки.

* Все игры PSP, PSX-PSP (сконвертированные PS1), а также Homebrew (игры, программы, эмуляторы)

Прошивка консоли Sony PlayStation Portable

как прошить psp

Для начала стоит отметить, что прошивок существует два вида: официальные, распространяемые производителем (известны под аббревиатурой OFW) и сторонние, написанные энтузиастами для расширения возможностей приставки (CFW). Рассмотрим процедуру установки каждого из вариантов.

Как взломать псп

CWCheat 0.2.2 REV.D / CWCheat 0.2.3
by weltall

Отличный читерский плагин, позволяющий находить коды и использовать читы
в любых ISO играх, PSX играх, а также многочисленных homebrew игрушках.

Скачайте и разархивируйте одну из версий, которая вам больше подходит:

Из папки "INSTALL" скопируйте папку SEPLUGINS в корень карты памяти или в корень памяти системы PSPgo.


Для использования в играх PSP, в папке SEPLUGINS в файл GAME.TXT добавьте новую строчку:ms0:/SEPLUGINS/cwcheat/cwcheat.prx 1

Для использования в играх PS1, в папке SEPLUGINS в файл POPS.TXT добавьте новую строчку:ms0:/SEPLUGINS/cwcheat/cwcheatpops.prx 1

Запустите любую игру или программу и затем выйдите из неё.
Всё! Плагин уже будет активирован.


Запустите игру, дождитесь игрового процесса, нажмите и удерживайте кнопку :select: 3 секунды.


Вы увидите меню плагина CWCheat.


Структура в базе читов cheat.db или cheatpops.db:

Сначала для чита пишется идентификатор игры GAME-ID (_S) и название игры (_G):

_S - записывается GAME-ID по которому CWCheat определяет читы.
_G - название игры, можно написать любое, как нравится.

Далее, под GAME-ID и названием игры, пишется название чита (_C0), а под ним сам чит (_L).
Эти данные далее повторяются столько раз, сколько в игре найдено читов. То есть, каждый раз пишем название чита (_C0) и под ним сам чит (_L).

_C0 - название чита, вписывается краткое описание, чтобы самому было понятно, что за чит.
_L - сам чит, смещение на адрес, где он в памяти располагается и на что нужно сменить.

Можно применять сразу целую группу читов одновременно, например: пишем название чита "_C0 Все деньги, всё оружие, всё при всё", а под ним сразу группу читов (_L), каждый с новой строки. Пример:

_C0 Все деньги, всё оружие, всё при всё
_L 0x40689DA4 0x002F0001
_L 0x00304E20 0x00000001
_L 0x40689D38 0x001B0001
_L 0x00302710 0x00000001
_L 0x40689D2C 0x00030001

Select Cheats - здесь вы выбираете читы, которые хотите использовать
[Y/N] Enable cheats если стоит Y, то читы будут работать, если стоит N, то не будут работать
[Y/N] Enable dump function - включить функцию дампа памяти
[Y/N] Enable usb - включает USB
[Y/N] Enable remaPSP - включает RemaPSP

[0] CPU frequence - меняет частоту процессора
[0] BUS frequence - меняет частоту шины

Manual cheat apply - ручное применение читов
RemaPSP by danzel

Text Reader - позволяет читать txt файлы. Txt кидайте в папку ms0:/seplugins/cwcheat/text/. Но чтобы книги читались они должны быть названы по ID игры, в которой вы хотите читать эту игру. ID игры написано в главном меню плагина, в конце второй строки сверху.
[0] Reload Cheat Database - Перезагрузить базу данных
Settings - настройки
Cheat searcher - поиск читов в игре

Return to game! - возврат в игру

Здесь мы будем учиться делать читы самому. Читы делаются путем поиска значений, которые мы хотим поменять. Как правило таких значений на одно число очень много. Например у нас сейчас 201 пуля. Если мы введем 201 в поиск, то он нам выведет несколько тысяч результатов. Далее расскажу как нам найти то, что нам надо. Все показываю на примере игры Resistance Retribution:

1. Вот я запустил игру. Стою и у меня очень мало пуль, чтобы пройти уровень. Хочу побольше. Зажимаю на 3 секунды кнопку :select: - попадаю в главное меню плагина CWCheat. Но перед этим запоминаю сколько у меня было пуль (у меня было 201).

2. Далее захожу в пункт Cheat searcher и выбираю пункт Start a new search for a fixed value. Там по умолчанию будет выбран пункт DEC. Вот он то нам и нужен. В нем стрелкой вверх набираем 201. У нас получится вот такая строка: 0000000201.

3. Далее нажимаем :cross: - идет поиcк. В итоге мне CWCheat вывел, что нашел около 10000 результатов. Далее выходим из CWCheat в игру и начинаем стрелять. Когда я пострелял в стену у меня стало 168 пуль. Снова делаю поиск 168, но уже не в пункте Start a new search for a fixed value, а в пункте Continue a search for a fixed value там снова набираем 168 и нажимаем крест. CWCheat вывел 10 результатов. Уже лучше, но все равно не то.

4. Снова стреляем и тратим пули. И повторяем пункт 3 уже с новым количеством пуль. Вот у меня и осталось 2 пункта. Далее не выходя из последнего поиска нажимаем :triangle: и нажимаем :cross: на одном из значений. Потом меняем его, например на 500. Нажмите :cross: и выходите из меню в игру. Вот у вас и стало 500 пуль. У меня они даже перестали уменьшаться и всегда оставались в значении 500)
Вот таков принцип ручного поиска читов. Слов получилось много, но это не сложно))
Может быть в иногда подумывали о том, чтобы какую нибудь комбинацию кнопок назначить на одну кнопку, которая не задействуется в игре, или чтобы поменять кнопки местами, чтобы удобней было.

Сейчас я расскажу как это все воплотить в реальность:

1. Для начала научимся переназначать кнопки:
Может быть вы заглядывали в папку cwcheat? Так вот там лежит папка remaps, которая нам и нужна. Зайдите в эту папку и создайте там текстовый файл. Пусть он будет называться newrema (это в принципе не важно). Заходим в этот текстовый файл (для удобства хорошо бы иметь текстовый редактор AkelPad, потому что в нем пронумерованы строки, но если у вас стандартный редактор, то это не страшно). В первой строке вписываем название remap'а, но название - необязательно(если неохото - можете не писать)

Начиная со второй строчки вставьте это:

Использование:
Запускайте программу и открывайте с ее помощью базу читов, которую вы скачали (File -> Open Database), или же скачайте свежую версию базы, зайдя во вкладку Tools и выбрав там пункт Download Official Database. и конечно же сохранив ее)).

cheat.db для ISO
cheatpops.db для PSX

Спасибо ErikPshat за проявленную находчивость.

Когда вы открыли базу данных вы увидите множество названий игр, которые можно развернуть и увидеть там читы для той или иной игры..
Нажав на том, что хотите изменить, сбоку будет высвечивать название игры в графе Game name и название чита в графе Code name. Их можно менять и вписывать название русскими буквами. Например чит названый $99999 вы можете назвать так: получить 99999 баксов.
Так же вы можете добавлять читы, но мне кажется их гораздо удобнее добавлять на самой PSP во время игры, поэтому я не буду писать как их добавлять через эту программу
Чтобы активировать встроенную читалку, нужно положить текстовый файл в папку ms0:/SEPLUGINS/cwheat/text/ и назвать его как GAME ID, в которой он вам понадобится. Например, если вы запускаете игру GTA:LCS с ID: ULUS-10041 (CWCheat покажет в правом верхнем углу ID игры), то подходящий текстовой файл должен называться ms0:/SEPLUGINS/cwcheat/text/ULUS-10041.txt (прилагается в данной папке архива)


Запускаем CWCheat в любой игре, удерживая 3 секунды кнопку :select: и попадаем в такое меню CWCheat:

Спускаемся ниже к меню настроек "Settings" и нажимаем :cross:, как мы видим на подсказке в самой нижней строчке экрана.

В меню настроек проверяем, чтобы на 3-ей строчке стояло [Y] напротив "Screenshoot compatability mode":

Спускаемся ниже на "Change buttons" и нажимаем на нём :cross:

В новом открывшемся меню мы можем назначить кнопку или сочетания кнопок (до 3-ёх) на закреплённые там справа действия.
Спускаемся на предпоследний пункт напротив "Screenshoot" и нажимаем :cross:

Буквально на пару секунд появится такое окно с инструкцией и вы должны за это время удержать необходимую вам кнопку или сочетание 2-ух, либо 3-ёх кнопок, с помощью которых вам удобно будет делать скриншоты в играх:

На этом примере я удержал 3 кнопки - :start: + :l_trigger: + :r_trigger: и как видите они там назначились:

Теперь возвращаемся в предыдущее окно, нажав :circle:, спускаемся вниз и нажимаем "Save settings as default", чтобы наши изменения сохранились. Во время сохранения проследите за индикатором карты памяти, он должен проморгаться, тем самым вы убедитесь, что сохранение сработало.

Теперь, после выхода из меню CWCheat, вы можете делать скриншоты в играх, назначенным вами сочетанием кнопок. Без этой первичной настройки скриншотер работать не будет. И, к сожалению, он не снимает снимки в самом меню CWCheat.
Удачи!


Внимание, если у вас PSPgo!

Внимание! Обычная база данных читов cheat.db для PSP игр не подходит для PSPgo, потому что читы в базе записаны по их реальному GAME-ID, например ULUS-00001, который так и отображается в psp FAT/SLIM/BRITE, а вот PSPgo видит их как что-то типа закодированный ID, например HB62BB398B, HB4AC5DC20, HB3CF37643 и т.п.
Насколько известно, CWCheat подключает читы из базы по номеру GAME-ID запущенной игры и ищет читы в файле cheat.db, однако не может найти те красные номера определившейся игры, поэтому ничего не находит.

Но выход есть!
Чтобы читы заработали, необходимо:

Тогда CWCheat будет находить читы по этим ID, по котоым он определяет игру.
Для примера небольшой список игр, в которых нужно подменить идентификатор игры на идентификатор, определяемый через CWCheat:

UCES-00356 на HB62BB398B для "Tekken dark resurrection",
ULUS-10466 на HB4AC5DC20 для "Tekken 6",
UCUS-98653 на HB3CF37643 для "God of War Chains of Olympus",
ULUS-10036 на HB18EA6E24 для "Need for Speed Most Wanted 5-1-0".

Как взломать псп

как взломать psp 3008 с прошивкой 6.30 помогите други


Репутация: 109  
(скоро придёт к известности)

все делаю по инструкции но когда с псп захожу игры мемори ничего не видит, помоги





omib, начнём с вопроса, а туда ли ты его кинул? Напиши путь к файлу. Ну и не в архиве ли ты его кидаешь?

psp . game там распаковал на карте памяти, потом захожу и пишет нет данных((((



Ну прямо таки там точка стоит?
Возьми и открой в файловом менеджере ту папку, куда ты кинул файлы(открывай ту папку, где лежит PBP файл) и скопируй нормальный путь(в зависимости от менеджера, может быть сверху или снизу))), а не вот это недразумение, что ты написал.

запустил написало sorry this program doesnt support (fw0x06030010)



omib, уж не на 6.30 ли ты пытаешься установить данную прошивку?

на 6.30 я ж в оглавлении написал как взломать 6.30


Последний раз редактировалось omib; 11.08.2011 в 12:52 . Причина: добавил, подумав

Инсталляция OFW

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

  1. Первым делом потребуется получить данные обновления. Изначально подразумевалось получение апдейта «по воздуху», через Wi-Fi, но после окончания выпуска приставки сервера были отключены и процедуру нужно проводить вручную. Для этого откройте ссылку выше, затем кликните по кнопке «Agree and Download Now».

Загрузить последнюю прошивку для её установки на PSP

Переместить файл официальной прошивки на PSP

Открыть установщик официальной прошивки на PSP

Начать установку официальной прошивки на PSP

Принять лицензионное соглашение для установки официальной прошивки на PSP

Закончить установку официальной прошивки на PSP

Читайте также: