mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-22 08:33:12 -05:00
1.6 KiB
1.6 KiB
libSceSysmodule technical debt
Silent stubs
- sceSysmoduleIsLoaded, sceSysmoduleLoadModule, sceSysmoduleUnloadModule (libSceSysmodule) accept a module id missing from the module table: they log it and return 0 without loading anything, so
sceSysmoduleIsLoadedreports an unknown module as loaded and unloading it succeeds, because titles that load or unload such an id aborted otherwise. The internal variants (sceSysmoduleLoadModuleInternal,sceSysmoduleUnloadModuleInternal,sceSysmoduleLoadModuleInternalWithArg,sceSysmoduleGetModuleHandleInternal) throw for an unknown id. What the console returns for an id it does not know is not verified.
Unknown function info
- kModuleTable (libSceSysmodule) - module id 0x00000132 is named
libSceProprietaryVoiceChatHelperPrx, the name of the built module, becausesceSysmoduleGetModuleHandleInternalopenslibs/<table name>.prx. The name the console's table uses for this id is not verified
Functional
- sceSysmoduleGetModuleInfoForUnwind (libSceSysmodule) - on Windows the region and file name of an address inside a loaded image are cached after the first lookup, because
VirtualQueryon a large image section is slow. An entry is used only while the loader still reports the same image for the address (same base, time stamp and size). A page protection change inside the image after the first lookup, which would split or merge the regionVirtualQueryreports, is not noticed. Addresses outside loaded images are queried every time