It appears that the reason the single-card KXploit works on 1.5 is twofold:
- Treating the filename as a format string causes the HELLO% folder name to be translated to HELLO when being passed to the bootstrap code
- The 1.50 bootstrap executes a bare ELF if it's been passed one
When danj tried using %p etc, the error changes to 80010002, which would be because HELLO%p changed to e.g. HELLO12345678, and 80010002 is ENOENT.
When Nick Fury tried %c, the error is 8001000D, which is EACCESS and could be caused by %c generating an invalid character in the filename.
When danj tried using %n, it crashes his PSP, because %n causes writes to memory. That's the vulnerability.
I convinced a friend to upgrade 1.51 -> 1.52 and verified that this bug does still exist on 1.52. Writing an exploit is non-trivial, partially because we can't see the result of the format string expansion, and partially because MIPS exploits could be annoying (need to flush dcache)... but it's definitely got potential.