Compare commits
24 Commits
Author | SHA1 | Date |
---|---|---|
random() | 2593440911 | |
random() | 9b6b472cef | |
random() | 0862f38d6e | |
SilicaAndPina | 5e3d65d9e1 | |
SilicaAndPina | 6db7d0a124 | |
SilicaAndPina | f467a9e651 | |
SilicaAndPina | 0d11b84536 | |
SilicaAndPina | 8095be6a76 | |
SilicaAndPina | aaa2b239f2 | |
SilicaAndPina | 7e45ff54b0 | |
SilicaAndPina | e33d49994f | |
SilicaAndPina | 4d9ad8949c | |
SilicaAndPina | d5a62d6296 | |
AtelierWindows\SilicaAndPina | f0277c2a2b | |
SilicaAndPina | 3c4ac97316 | |
SilicaAndPina | 751eed0310 | |
SilicaAndPina | ff9692a11b | |
AtelierWindows\SilicaAndPina | 69e1d217bc | |
AtelierWindows\SilicaAndPina | 4c8c7c9633 | |
AtelierWindows\SilicaAndPina | e2eb32beee | |
SilicaAndPina | fcae55b5ec | |
AtelierWindows\SilicaAndPina | b474291ec6 | |
SilicaAndPina | 8bfc5cb9be | |
SilicaAndPina | e5db37c682 |
19
README.md
19
README.md
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue