Compare commits

...

24 Commits
v1.2 ... master

Author SHA1 Message Date
random() 2593440911 Update README.md 2023-10-31 22:57:30 +00:00
random() 9b6b472cef Update README.md 2023-10-31 22:55:38 +00:00
random() 0862f38d6e Update README.md 2023-10-31 22:51:51 +00:00
SilicaAndPina 5e3d65d9e1 Add O Check 2020-03-08 01:45:10 +13:00
SilicaAndPina 6db7d0a124 Fix warning 2020-03-08 01:41:26 +13:00
SilicaAndPina f467a9e651 Add support for 3.73 and probably newer fw 2020-03-08 01:27:22 +13:00
SilicaAndPina 0d11b84536 README.md edited online with Bitbucket 2019-10-19 01:17:57 +00:00
SilicaAndPina 8095be6a76 README.md edited online with Bitbucket 2019-10-19 01:16:09 +00:00
SilicaAndPina aaa2b239f2 README.md edited online with Bitbucket 2019-08-31 02:33:12 +00:00
SilicaAndPina 7e45ff54b0 README.md edited online with Bitbucket 2019-08-31 02:32:27 +00:00
SilicaAndPina e33d49994f Add support for 3.71/3.72 2019-08-30 23:56:35 +00:00
SilicaAndPina 4d9ad8949c README.md edited online with Bitbucket 2019-02-03 12:00:28 +00:00
SilicaAndPina d5a62d6296 README.md edited online with Bitbucket 2019-02-03 12:00:10 +00:00
AtelierWindows\SilicaAndPina f0277c2a2b 1.4 2019-02-04 00:57:24 +13:00
SilicaAndPina 3c4ac97316 README.md edited online with Bitbucket 2019-01-15 10:13:07 +00:00
SilicaAndPina 751eed0310 README.md edited online with Bitbucket 2019-01-15 10:01:02 +00:00
SilicaAndPina ff9692a11b README.md edited online with Bitbucket 2019-01-15 09:55:14 +00:00
AtelierWindows\SilicaAndPina 69e1d217bc Update 2019-01-15 22:51:26 +13:00
AtelierWindows\SilicaAndPina 4c8c7c9633 Fix timestamp desync 2019-01-15 22:32:50 +13:00
AtelierWindows\SilicaAndPina e2eb32beee Add 3.70 Support (BEFORE THEFLOW) 2019-01-15 21:35:43 +13:00
SilicaAndPina fcae55b5ec README.md edited online with Bitbucket 2018-12-05 10:22:52 +00:00
AtelierWindows\SilicaAndPina b474291ec6 Fix v1.2 2018-12-05 23:21:32 +13:00
SilicaAndPina 8bfc5cb9be README.md edited online with Bitbucket 2018-12-05 09:16:54 +00:00
SilicaAndPina e5db37c682 README.md edited online with Bitbucket 2018-12-05 09:16:32 +00:00
3 changed files with 37 additions and 42 deletions

View File

@ -1,20 +1,13 @@
# r/vitahacks trophy-hacking censorship continues!
u/GeeGee-E removed my post about TrophaxSE just like they did with the original trophax.suprx
please message the moderators of r/vitahacks and tell them to leave trophax alone. #FreeTROPHAX
https://www.reddit.com/message/compose?to=%2Fr%2Fvitahacks
# Releases
V1.1:
+ Fixes patch mounting, and also allows you to set the Timestamp of trophys! (Fake SecureTick)
https://bitbucket.org/SilicaAndPina/trophaxse/downloads/TrophaxSEv1.1.vpk
V1.0:
https://bitbucket.org/SilicaAndPina/trophaxse/downloads/TrophaxSE.vpk
# Will i get banned? # Will i get banned?
Probably not, no one has ever gotten banned on vita Probably not, no one has ever gotten banned on vita
even in the past when using other trophy hacks such as: even in the past when using other trophy hacks such as:
TropHAX.suprx TrophyPather or PSVTrophyIsGood TropHAX.suprx TrophyPather or PSVTrophyIsGood
If you claim "me was banned" - ConsoleID or GTFO
give me ur CID and ill check if it really is until then-
assume such claims are bullsheet
# TropHAXSE # TropHAXSE
TropHAX Standalone Edition TropHAX Standalone Edition
A homebrew app that can unlock trophys for any game. A homebrew app that can unlock trophys for any game.
@ -22,7 +15,7 @@ Unlike the original TropHAX.SUPRX however, this is compadible with 100% of games
You simply need the game installed and the trophy files inside ur0:/trophy and you can unlock stuffs! You simply need the game installed and the trophy files inside ur0:/trophy and you can unlock stuffs!
# Credits # Credits
SilicaAndPina - Lead developer, - working out how trophys work and stuff. Li - Lead developer, - working out how trophys work and stuff.
TheFlow (vitashell) - For trop_dat0: mounting code TheFlow (vitashell) - For trop_dat0: mounting code
Princess Of Sleeping - For helping me with trop_dat0: mounting Princess Of Sleeping - For helping me with trop_dat0: mounting
AnalogMan - for doing UI Stuffs AnalogMan - for doing UI Stuffs

View File

@ -215,7 +215,6 @@ int pfsMount(const char *path) {
} }
void sceNpTrophySetupDialogParamInit(SceNpTrophySetupDialogParam* param) void sceNpTrophySetupDialogParamInit(SceNpTrophySetupDialogParam* param)
{ {
sceClibMemset( param, 0x0, sizeof(SceNpTrophySetupDialogParam) ); sceClibMemset( param, 0x0, sizeof(SceNpTrophySetupDialogParam) );
@ -226,17 +225,10 @@ void sceNpTrophySetupDialogParamInit(SceNpTrophySetupDialogParam* param)
} }
int setSecureTick(unsigned long long int psTime) int setSecureTick(unsigned long long int psTime)
{ {
SceRtcTick utcTime = {0};
SceRtcTick localTime = {0};
utcTime.tick = psTime;
sceRtcConvertUtcToLocalTime(&utcTime,&localTime);
psTime = localTime.tick;
printf("setSecureTick: %llx\n",psTime); printf("setSecureTick: %llx\n",psTime);
@ -333,7 +325,7 @@ start:
printf("\e[%i;%iH%s", SCREEN_ROW, CENTERX(buf), buf); printf("\e[%i;%iH%s", SCREEN_ROW, CENTERX(buf), buf);
memset(&pad, 0, sizeof(pad)); memset(&pad, 0, sizeof(pad));
sceCtrlPeekBufferPositive(0, &pad, 1); sceCtrlPeekBufferPositive(0, &pad, 1);
if (pad.buttons == SCE_CTRL_UP) if (pad.buttons == SCE_CTRL_UP)
{ {
if (selection <= size - WINDOW_HEIGHT){ if (selection <= size - WINDOW_HEIGHT){
@ -411,7 +403,7 @@ start:
SceUChar8 commsign[160]; SceUChar8 commsign[160];
memset(commsign,0,160); memset(commsign,0,160);
char path[1024]; char path[0x1128];
SceUID fd; SceUID fd;
int len; int len;
@ -497,7 +489,11 @@ start:
} }
printf("Cound not find %s (Possibly game not installed?)\n",titleidOfGame); printf("Cound not find %s (Possibly game not installed?)\n",titleidOfGame);
while(1){}; while(1){
sceCtrlPeekBufferPositive(0, &pad, 1)
if(pad.buttons == SCE_CTRL_CIRCLE)
goto start;
};
Found: Found:
@ -510,12 +506,8 @@ Found:
printf("sceAppMgrGameDataMount() failed. ret = 0x%x\n", ret); printf("sceAppMgrGameDataMount() failed. ret = 0x%x\n", ret);
while(1){}; while(1){};
} }
memset(path,0,0x1128);
memset(path,0,1024);
sprintf(path,"%s/sce_sys/trophy/%s/TROPHY.TRP",g_currentMount,commid); sprintf(path,"%s/sce_sys/trophy/%s/TROPHY.TRP",g_currentMount,commid);
size = getFileSize(path); size = getFileSize(path);
if (size >=0) if (size >=0)
@ -533,7 +525,7 @@ Found:
while(1){}; while(1){};
} }
memset(path,0,1024); memset(path,0,0x1128);
sprintf(path,"ux0:app/%s/sce_sys",titleid); sprintf(path,"ux0:app/%s/sce_sys",titleid);
sceIoMkdir(path,0006); sceIoMkdir(path,0006);
sprintf(path,"ux0:app/%s/sce_sys/trophy",titleid); sprintf(path,"ux0:app/%s/sce_sys/trophy",titleid);
@ -567,7 +559,7 @@ Found:
// remount app0 // remount app0
// CelesteBlue TAKE NOTES. // CelesteBlue TAKE NOTES.
memset(path,0,1024); memset(path,0,0x1128);
sprintf(path,"ux0:/app/%s",titleid); sprintf(path,"ux0:/app/%s",titleid);
ret = pfsMount(path); ret = pfsMount(path);
if(ret < 0){ if(ret < 0){
@ -683,7 +675,7 @@ TrophyMenu:
//set options //set options
strcpy(option_list[0].path, "Unlock a Trophy"); strcpy(option_list[0].path, "Unlock a Trophy");
strcpy(option_list[1].path, "Unlock All Trophys"); strcpy(option_list[1].path, "Unlock All Trophys");
strcpy(option_list[3].path, "Exit"); strcpy(option_list[2].path, "Exit");
while(1) while(1)
{ {
@ -950,13 +942,14 @@ selectTrophyMenu:
int selectedPartOfTime = 0; int selectedPartOfTime = 0;
SceDateTime dateTime; SceDateTime dateTime;
memset(&dateTime,0x00,sizeof(SceDateTime)); memset(&dateTime,0x00,sizeof(SceDateTime));
SceRtcTick fakeTime = {0}; SceRtcTick fakeTime = {0};
sceRtcGetCurrentTick(&fakeTime); sceRtcGetCurrentTick(&fakeTime);
sceRtcConvertUtcToLocalTime(&fakeTime,&fakeTime);
sceRtcSetTick(&dateTime,&fakeTime); sceRtcSetTick(&dateTime,&fakeTime);
while(1) while(1)
{ {
@ -1107,6 +1100,7 @@ selectTrophyMenu:
dateTime.second --; dateTime.second --;
} }
} }
sceKernelDelayThread(150000); sceKernelDelayThread(150000);
} }
@ -1178,13 +1172,15 @@ selectTrophyMenu:
if(pad.buttons == SCE_CTRL_CROSS) if(pad.buttons == SCE_CTRL_CROSS)
{ {
psvDebugScreenClear(); psvDebugScreenClear();
printf("Unlocking trophy %i\n",selection); printf("Unlocking trophy %i\n",selection);
SceNpTrophyId id = selection; SceNpTrophyId id = selection;
SceNpTrophyId platid; SceNpTrophyId platid;
FakeTimes(1); FakeTimes(1);
ret = setSecureTick(fakeTime.tick);
sceRtcConvertLocalTimeToUtc(&fakeTime, &fakeTime);
setSecureTick(fakeTime.tick);
ret = sceNpTrophyUnlockTrophy(trophyContext,handle,id,&platid); ret = sceNpTrophyUnlockTrophy(trophyContext,handle,id,&platid);
if(ret < 0){ if(ret < 0){
if(ret == 0x8055160f) if(ret == 0x8055160f)
@ -1213,6 +1209,7 @@ selectTrophyMenu:
sceKernelDelayThread(500000); sceKernelDelayThread(500000);
goto selectTrophyMenu; goto selectTrophyMenu;
} }
;
} }
} }
} }
@ -1235,7 +1232,6 @@ selectTrophyMenu:
else if(selection == 1) else if(selection == 1)
{ {
psvDebugScreenClear(); //clear screen psvDebugScreenClear(); //clear screen
SceNpTrophyId id = 0; SceNpTrophyId id = 0;
SceNpTrophyId platid; SceNpTrophyId platid;

View File

@ -53,9 +53,10 @@ int getTimePatched(unsigned int* timestamp)
ret = TAI_CONTINUE(int, ref_hook,timestamp); ret = TAI_CONTINUE(int, ref_hook,timestamp);
if(spoofTime) if(spoofTime)
{ {
printf("[TROPHAXSE] Faking timestamp to %x%x",fakeTime[1],fakeTime[0]); printf("[TROPHAXSE] Faking timestamp to %x%x and Return 0",fakeTime[1],fakeTime[0]);
timestamp[0] = fakeTime[0]; timestamp[0] = fakeTime[0];
timestamp[1] = fakeTime[1]; timestamp[1] = fakeTime[1];
return 0;
} }
return ret; return ret;
} }
@ -177,6 +178,11 @@ int module_start(SceSize args, void *argp) {
break; break;
case 0x321E4852: // 3.69 retail case 0x321E4852: // 3.69 retail
case 0x700DA0CD: // 3.70 retail
case 0xF7846B4E: // 3.71 retail
case 0xA8E80BA8: // 3.72 retail
case 0xB299D195: // 3.73 retail
default:
module_get_offset(KERNEL_PID, tai_info.modid, 0, 0x2DE9, (uintptr_t *)&sceAppMgrFindProcessInfoByPid); module_get_offset(KERNEL_PID, tai_info.modid, 0, 0x2DE9, (uintptr_t *)&sceAppMgrFindProcessInfoByPid);
module_get_offset(KERNEL_PID, tai_info.modid, 0, 0x19E95, (uintptr_t *)&sceAppMgrMountById); module_get_offset(KERNEL_PID, tai_info.modid, 0, 0x19E95, (uintptr_t *)&sceAppMgrMountById);
break; break;