D053 - Imports use standard ELF machinery; only the names are vendor-encoded

decided · 2026-08-19 · implemented and verified against real material

The vendor DT_ tags suggested a bespoke import format. They are a red herring: the import path is entirely standard ELF - PT_DYNAMIC, DT_STRTAB, DT_SYMTAB, DT_HASH, and an ordinary Elf64_Sym table.

What is vendor-specific is only the encoding of symbol names. A dynamic symbol is called something like H2e8t5ScQGc#B#C: eleven base64 characters carrying the NID, then a library id, then a module id. DT_NEEDED names the libraries in the ordinary way (libkernel.prx, libSceLibcInternal.prx, and so on).

Three consequences:

Verified. 159 imports from a 76 KB module, 117 and 95 from two others, and 1,410 from the commercial executable, each attributed to a library. The NID decoder is cross-checked against an independent implementation of the same rule so a transcription slip shows up rather than being self-consistent.

Two honest limitations, recorded rather than papered over: