PSP хакинг и девелопмент Взгляд изнутри
25.09.2009, 00:47
Сообщение: #1 (824351)
Модель консоли: PSP-1004
Прошивка: 6.60 PROMOD
Другие консоли: iPad 3 WiFi
Регистрация: 18.12.2006
Адрес: Москва
Возраст: 57
Сообщений: 46,296
Вы сказали Спасибо: 27,022
Поблагодарили 42,579 раз(а) в 12,176 сообщениях
Сила репутации:
10 Репутация: 41774  
(репутация неоспорима)
Полезные ссылки
Сюда я хочу добавлять полезные ссылки на документацию к PSP, исходные коды и т.п.
Просто уже не помню, где, что записывал и делал заметки на будущее )).
Программирование для PSP
Необходимы всего две программы, портированные под Windows (их родная среда обитания - Linux) :
Dev-C++ - полнофункциональная IDE (интегрированная среда разработки) для C/C++ языков программирования. Работает в среде Windows 32x. Удобна для просмотра, редактирования, написания программ на С++. Имеет подсветку синтаксиса, разбиение и логический автоотступ кода.
Minimalist PSPSDK for Windows - порт под Win32 от BSD PSPSDK (ps2dev.org), со свободно распространяемыми библиотеками и файлами заголовков (DevPaks) для компиляции Homebrew приложений для Sony PSP. Устанавливать строго по умолчанию, путь C:\pspsdk ни на что не менять. Иначе потом во всех исходниках придётся править пути к pspsdk, а это лишние головные боли.
Литература для начинающих:
===========================================
yet another PlayStationPortable Documentation
IPL Decrypt Sample (direct HW access)
Decrypting IPL
pspsdk-1.0+beta2
Psp Browser API Project 2.0
PSP Button codes
SPIM - A MIPS32 Simulator
PSP PRX Libraries Documentation Project
PSP Primal Tools I - NIDattack
PSP Primal Tools II - PSARdumper
PSP Primal Tools III - PRXdecrypter & PSPident
PSP Primal Tools IV - PRXtool
Документация PSX
PSP Репозиторий
Заголовок ~PSP
Prx Decryption NID’s
PSP Code Clips I - Makefiles
PSP Code Clips II - IdStorage
PSP Code Clips III - IdStorage II
PSP Code Clips IV - Hello, World!
PSP Code Clips V - IPL Facts
PSP Code Clips VI - PRX Sample
Free PSP Downloads
Ubuntu 9.04 VMWare Image with PSPSDK
Номер | |
регистра | мнемоника | описание
r0 zr zero. Значение этого регистра всегда равно нулю
r1 at asm temp. Темповый регистр. Часто используется в указателях.
r2-r3 v0-v1 result values. Используются, как выходные значения функций.
r4-r7 a0-a3 argument values. Используются, как входные значения функций.
r8-r15 t0-t7 temp. Темповые регистры (для "мусора" промежуточных операций)
r16-r23 s0-s7 save. Сохраняются функциями в стеке, при их (функций) вызове.
r24-r25 t8-t9 temp. Еще одни темповые регистры, в дополнение к t0-t7.
r26-r27 k0-k1 kernel. Регистры, предназначенные для внутреннего использования ядром PSX-OS.
r28 gp global pointer. Глобальный указатель. Используется ядром.
r29 sp stack pointer. Указатель стека. Используется при сохранении регистров в стеке.
r30 fp frame pointer. Еще один указатель. Используется очень редко.
r31 ra return address. Содержит адрес возврата, после вызова функции.
По другому:
Название Номер Применение нужно ли резервировать?
$zero $0 всегда хранит 0 N/A
$at $1 временный регистр для языка ассемблера НЕТ
$v0—$v1 $2-$3 значения функций и выражений НЕТ
$a0—$a3 $4-$7 аргументы функций НЕТ
$t0—$t7 $8-$15 временные НЕТ
$s0—$s7 $16-$23 сохраненные временные значения ДА
$t8—$t9 $24-$25 временные НЕТ
$k0—$k1 $26-$27 зарезервирована для ядра ОС НЕТ
$gp $28 глобальный указатель ДА
$sp $29 указатель стека ДА
$fp $30 указатель фрейма ДА
$ra $31 возвращает адрес N/A
Интересный сайт про программирование
HexRays – декомпилятор нового поколения: превращаем любой бинарник в C-код
Повелители PlayStation Portable
Домашняя страничка FreePlay с интересными утилитами
PSP Secrets
Последний раз редактировалось ErikPshat; 28.05.2012 в 01:12 .
Эти 15 пользователя(ей) сказали Спасибо ErikPshat за это полезное сообщение:
Alex VoorheeS (27.09.2009),
AoD67 (29.10.2009),
DIIGMO (09.02.2010),
Dovovoy (25.09.2009),
Dr.House (25.09.2009),
flash_zero (17.10.2011),
frostegater (22.04.2011),
funfish (19.03.2010),
intelfx (09.11.2009),
KingSD (25.09.2009),
OgichI (25.02.2010),
Pancake (08.02.2011),
picnic (24.06.2010),
riktus (25.09.2009),
vampiree (15.02.2010)
25.09.2009, 07:53
Сообщение: #2 (824372)
Старый ник: skaut331
Прошивка: 5.50GEN-D3(FULL)
Другие консоли: PSP Fat,PSPSlim&Lite, PS3,Wii,XBOX360
Регистрация: 30.12.2006
Адрес: деревня скрытого листа
Возраст: 33
Сообщений: 1,349
Вы сказали Спасибо: 610
Поблагодарили 733 раз(а) в 358 сообщениях
Сила репутации:
1 Репутация: 738  
(луч света в тёмном царстве)
ErikPshat , спасибо))) очень полезная тема))
Жду взлома PSVita!!!
25.09.2009, 16:52
Сообщение: #3 (824489)
Модель консоли: psp, PS3
Прошивка: 5,50 GEND2
Регистрация: 16.09.2009
Адрес: Пытер
Сообщений: 878
Вы сказали Спасибо: 170
Поблагодарили 294 раз(а) в 196 сообщениях
Сила репутации:
1 Репутация: 294  
(как роза среди колючек)
Сообщение от
ErikPshat
...
спасибо.
---------------
Real vikings never die - they just go to Hell for regroup
Этот пользователь сказал Спасибо Dovovoy за это полезное сообщение:
09.02.2010, 10:44
Сообщение: #4 (866081)
Модель консоли: PSP-1004
Прошивка: 6.60 PROMOD
Другие консоли: iPad 3 WiFi
Регистрация: 18.12.2006
Адрес: Москва
Возраст: 57
Сообщений: 46,296
Вы сказали Спасибо: 27,022
Поблагодарили 42,579 раз(а) в 12,176 сообщениях
Сила репутации:
10 Репутация: 41774  
(репутация неоспорима)
Очень похоже на исходники CFW Enabler v1
Source
Le code source du CFE publiй par Davee sur M4mature
/*
ohai nubcakes
*/
#include
#include
#include "rebootex.h"
PSP_MODULE_INFO("HENControl_module", 0x1000, 0, 1);
#define MAKE_CALL(a, f) _sw(0x0C000000 | (((u32)(f) >> 2) & 0x03ffffff), a)
int (* DecompressReboot)(u32 addr, u32 size, void *unk, void *unk2, void *unk3) = NULL;
void ClearCaches()
{
sceKernelIcacheInvalidateAll();
sceKernelDcacheWritebackInvalidateAll();
}
int DecompressRebootPatched(u32 addr, u32 size, void *unk, void *unk2, void *unk3)
{
sceKernelGzipDecompress((void *)0x88FC0000, size_rebootex, rebootex, NULL);
return DecompressReboot(addr, size, unk, unk2, unk3);
}
int PatchLoadExec()
{
SceModule *mod = sceKernelFindModuleByName("sceLoadExec");
u32 text_addr = mod->text_addr;
MAKE_CALL(text_addr + 0x27DC, DecompressRebootPatched);
_sw(0x3C0188FC, text_addr + 0x2820);
DecompressReboot = (void *)text_addr;
ClearCaches();
}
int module_start(SceSize args, void *argp)
{
PatchLoadExec();
return 0;
}
***************************************************************************************
/*
Eboot.pbp
Relative pseudo C
*/
int Exit(char *message)
{
printf("%s", message); //genius work, really
sceKernelDelayThread(0x3D0900);
sceKernelExitGame();
}
int WriteFile(const char *file, void *buffer, SceSize size) //Awesome error handling ;)
{
SceUID fd = sceIoOpen(file, PSP_O_CREAT | PSP_O_TRUNC | PSP_O_WRONLY, 511);
int ret = sceIoWrite(fd, buffer, size);
sceIoClose(fd);
return ret;
}
void FlashFiles() //bet you had fun writing this ;)
{
if (WriteFile("flash0:/kd/vshctrl.prx", vshctrl, size_vshctrl) != size_vshctrl)
{
Exit("Error writting vshctrl.");
}
if (WriteFile("flash0:/kd/galaxy.prx", galaxy, size_galaxy) != size_galaxy)
{
Exit("Error writting galaxy.");
}
if (WriteFile("flash0:/kd/march33.prx", march33, size_march33) != size_march33)
{
Exit("Error writting march33.");
}
if (WriteFile("flash0:/kd/popcorn.prx", popcorn, size_popcorn) != size_popcorn)
{
Exit("Error writting popcorn.");
}
if (WriteFile("flash0:/kd/idcanager.prx", idcanager, size_idcanager) != size_idcanager)
{
Exit("Error writting idcanager.");
}
if (WriteFile("flash0:/kd/usbdevice.prx", usbdevice, size_usbdevice) != size_usbdevice)
{
Exit("Error writting usbdevice.");
}
if (WriteFile("flash0:/vsh/module/satelite.prx", satelite, size_satelite) != size_satelite)
{
Exit("Error writting satelite.");
}
if (WriteFile("flash0:/kd/systemctrl_02g.prx", systemctrl_02g, size_systemctrl_02g) != size_systemctrl_02g)
{
Exit("Error writting systemctrl.");
}
if (WriteFile("flash0:/kd/pspbtlnf_02g.bin", pspbtlnf_02g, size_pspbtlnf_02g) != size_pspbtlnf_02g)
{
Exit("Error writting pspbtlnf.");
}
if (WriteFile("flash0:/kd/pspbtlnf_02g.bin", pspbtdnf_02g, size_pspbtdnf_02g) != size_pspbtdnf_02g)
{
Exit("Error writting pspbtdnf.");
}
if (WriteFile("flash0:/kd/pspbtjnf_02g.bin", pspbtjnf_02g, size_pspbtjnf_02g) != size_pspbtjnf_02g)
{
Exit("Error writting pspbtjnf.");
}
if (WriteFile("flash0:/kd/pspbtknf_02g.bin", pspbtknf_02g, size_pspbtknf_02g) != size_pspbtknf_02g)
{
Exit("Error writting pspbtknf.");
}
}
int main() //why store strings in vars?
{
SceIoStat stat;
SceCtrlData pad;
int model; //initalize?
pspDebugScreenInit();
printf("Hen de los huevos, como falla el cabron. Custom Firmware Enabler 1.0\nBy Xenogears and Becus25\n\n");
printf("Press O to flash M33 custom firmware files into the flash.\nPress X to run the custom firmware.\nPress R to exit.\n");
while (1)
{
sceCtrlReadBufferPositive(&pad, 1);
if (pad.Buttons & PSP_CTRL_CROSS)
{
pspDebugScreenClear();
printf("\nLoading henctrl.prx...");
SceUID modid = sceKernelLoadModule("henctrl.prx", 0, NULL);
if (modid < 0)
{
Exit(" Error loading henctrl.prx");
}
printf("\nStarting henctrl.prx...");
sceKernelStartModule(modid, strlen("henctrl.prx") + 1, "henctrl.prx", NULL, NULL, NULL);
printf("Wait 5 seconds...")'
sceKernelDelayThread(0x4C4B40);
sceKernelExitGame();
}
else if (pad.Buttons & PSP_CTRL_CIRCLE)
{
if (sceIoUnassign("flash0:") < 0)
{
Exit("Error unassigning flash0:");
}
if (sceIoAssign("flash0:", "lflash0:0,0", "flashfat0:", IOASSIGN_RDWR, NULL, 0) < 0)
{
Exit("Error assigning flash0:");
}
if (!sceIoGetstat("flash0:/kd/loadexec_01g.prx", &stat)) //hello? sceKernelGetModel? >.>
model = 0;
if ((ret = sceIoGetstat("flash0:/kd/loadexec_02g.prx", &stat)) < 0 && model != ret) //model isn't even predefined...
{
Exit("Your PSP is not 2000. Exiting...");
}
else
model = 1;
printf("\nFlashing...");
FlashFiles();
printf("Done.\n\nPress X to run the custom firmware.");
}
else if (pad.Buttons & PSP_CTRL_RTRIGGER)
{
Exit("Exiting...");
}
}
return 0; //nice program flow control
Источник
Последний раз редактировалось ErikPshat; 09.02.2010 в 10:46 .
Эти 4 пользователя(ей) сказали Спасибо ErikPshat за это полезное сообщение:
19.02.2010, 07:44
Сообщение: #5 (868038)
Модель консоли: PSP-1004
Прошивка: 6.60 PROMOD
Другие консоли: iPad 3 WiFi
Регистрация: 18.12.2006
Адрес: Москва
Возраст: 57
Сообщений: 46,296
Вы сказали Спасибо: 27,022
Поблагодарили 42,579 раз(а) в 12,176 сообщениях
Сила репутации:
10 Репутация: 41774  
(репутация неоспорима)
Сообщение от SchmilK
well to start there are 22 colors in 13-27!
so you can do
copy /b 01-12_3g.bmp+13-27.bmp 01-12.bmp
now you have 34 images in your 01-12.bmp
now edit vshmain.prx (not the .bin file) and go to offset 273AC and change 12 to 34 and also 273B4 change 12 to 34.
DO NOT change the files on flash0,you will need to do this in a ctf.
Источник
Эти 2 пользователя(ей) сказали Спасибо ErikPshat за это полезное сообщение:
02.04.2010, 00:52
Сообщение: #6 (878053)
Модель консоли: PSP-1004
Прошивка: 6.60 PROMOD
Другие консоли: iPad 3 WiFi
Регистрация: 18.12.2006
Адрес: Москва
Возраст: 57
Сообщений: 46,296
Вы сказали Спасибо: 27,022
Поблагодарили 42,579 раз(а) в 12,176 сообщениях
Сила репутации:
10 Репутация: 41774  
(репутация неоспорима)
Последний раз редактировалось ErikPshat; 17.04.2010 в 10:24 .
Этот пользователь сказал Спасибо ErikPshat за это полезное сообщение:
27.05.2012, 16:07
Сообщение: #7 (1032970)
Модель консоли: Все PSP
Прошивка: 5.00 m33-6
Регистрация: 20.01.2010
Сообщений: 3,422
Вы сказали Спасибо: 2,375
Поблагодарили 1,618 раз(а) в 874 сообщениях
Сила репутации:
1 Репутация: 1618  
(обеспечено прекрасное будущее)
Сообщение от
ErikPshat
С++ на PSP уныл, учите Си. Рекомендую для начала
http://lib.ru/CTOTOR/starterkit.txt , а потом К.Поляков - Программирование на языке Си. А тот учебник по плюсам, что за 21 день - фигня, замануха для нубов. На 3-4 параграфе они сыплются. Вон я начинал с Богатырёва и ничего постыдного в названии учебника,
правда есть правда .
Этот пользователь сказал Спасибо frostegater за это полезное сообщение:
27.05.2012, 17:48
Сообщение: #8 (1033005)
Модель консоли: PSP-1004
Прошивка: 6.61 PROMOD-C2p
Другие консоли: Все PSP, все PSV, SCPH-1002, SCPH-102, SCPH-77008, CECH-4208C, SCPH-1000R
Регистрация: 19.03.2008
Адрес: Россия
Сообщений: 5,737
Вы сказали Спасибо: 819
Поблагодарили 3,838 раз(а) в 2,015 сообщениях
Сила репутации:
1 Репутация: 3838  
(репутация неоспорима)
27.05.2012, 18:07
Сообщение: #9 (1033013)
Модель консоли: Все PSP
Прошивка: 5.00 m33-6
Регистрация: 20.01.2010
Сообщений: 3,422
Вы сказали Спасибо: 2,375
Поблагодарили 1,618 раз(а) в 874 сообщениях
Сила репутации:
1 Репутация: 1618  
(обеспечено прекрасное будущее)
Yoti , для начинающих слишком чёрство будет. И K&R пропагандируют египетский стиль, меня тошнить начинает) Лучше перепишу 3км кода, чем буду разбирать такой)
27.05.2012, 20:35
Сообщение: #10 (1033041)
Модель консоли: PSP-1004
Прошивка: 6.61 PROMOD-C2p
Другие консоли: Все PSP, все PSV, SCPH-1002, SCPH-102, SCPH-77008, CECH-4208C, SCPH-1000R
Регистрация: 19.03.2008
Адрес: Россия
Сообщений: 5,737
Вы сказали Спасибо: 819
Поблагодарили 3,838 раз(а) в 2,015 сообщениях
Сила репутации:
1 Репутация: 3838  
(репутация неоспорима)
frostegater ,
анархист, штоле - против системы идти?
27.05.2012, 22:20
Сообщение: #11 (1033064)
Модель консоли: PSP-1004
Прошивка: 6.60 PROMOD
Другие консоли: iPad 3 WiFi
Регистрация: 18.12.2006
Адрес: Москва
Возраст: 57
Сообщений: 46,296
Вы сказали Спасибо: 27,022
Поблагодарили 42,579 раз(а) в 12,176 сообщениях
Сила репутации:
10 Репутация: 41774  
(репутация неоспорима)
Сообщение от
frostegater
С++ на PSP уныл, учите Си. Рекомендую для начала
http://lib.ru/CTOTOR/starterkit.txt , а потом К.Поляков - Программирование на языке Си. А тот учебник по плюсам, что за 21 день - фигня, замануха для нубов. На 3-4 параграфе они сыплются. Вон я начинал с Богатырёва и ничего постыдного в названии учебника,
правда есть правда .
Где бы это тогда бы скачать.
starterkit.txt - что-то одна страница на учебник не тянет, хотя точно понятно для идиотов )))
28.05.2012, 01:00
Сообщение: #12 (1033098)
Модель консоли: Все PSP
Прошивка: 5.00 m33-6
Регистрация: 20.01.2010
Сообщений: 3,422
Вы сказали Спасибо: 2,375
Поблагодарили 1,618 раз(а) в 874 сообщениях
Сила репутации:
1 Репутация: 1618  
(обеспечено прекрасное будущее)
Сообщение от
ErikPshat
starterkit.txt - что-то одна страница на учебник не тянет, хотя точно понятно для идиотов )))
Так и есть, это не учебник, а справочник. Зато всё понятно. Хотя указатели там фигово расписали.
Сообщение от
ErikPshat
Где бы это тогда бы скачать.
А вот Поляков:
kpolyakov.narod.ru/school/c.htm . В основном направлено на школоту, но ИМХО, школоте нужен более безопасный язык для начала.
15.05.2013, 06:13
Сообщение: #13 (1071921)
Модель консоли: PSP-1004
Прошивка: 6.60 PROMOD
Другие консоли: iPad 3 WiFi
Регистрация: 18.12.2006
Адрес: Москва
Возраст: 57
Сообщений: 46,296
Вы сказали Спасибо: 27,022
Поблагодарили 42,579 раз(а) в 12,176 сообщениях
Сила репутации:
10 Репутация: 41774  
(репутация неоспорима)
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
Текущее время: 15:40 . Часовой пояс GMT +3.
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод:
zCarot
PSPx Forum - Сообщество фанатов игровых консолей.