示例#1
0
s32 main(s32 argc, const char* argv[])
{
    if(peekq(0x80000000007EF220ULL)==0x45737477616C6420ULL && is_payload_loaded()) {

        sys8_path_table(0LL); // break libfs.sprx re-direction

        if(restore_syscall8[0]) sys8_pokeinstr(restore_syscall8[0], restore_syscall8[1]);
    }

    if(argc>0 && argv) {
    
        if(!strncmp(argv[0], "/dev_hdd0/game/", 15)) {
            int n;

            strcpy(self_path, argv[0]);

            n= 15; while(self_path[n] != '/' && self_path[n] != 0) n++;

            if(self_path[n] == '/') {
                self_path[n] = 0;
            }
        }
    }

    strcat(self_path, "/USRDIR/iris_manager.self");

    sysProcessExitSpawn2(self_path, NULL, NULL, NULL, 0, 1001, SYS_PROCESS_SPAWN_STACK_SIZE_1M);
}
示例#2
0
static void pokeq(u64 addr, u64 val)
{
    if(!poke_syscall) {
        sys8_pokeinstr(addr, val);
    }
    else {
        lv2syscall2(poke_syscall, addr, val);
    }
}