Modules

From Vita Development Wiki
Revision as of 00:20, 8 November 2016 by Devnoname120 (talk | contribs) (Typos)
Jump to navigation Jump to search

The executable ELF encrypted to a SELF formatted file is called a module. A module is distinctive by its NID and in most cases the module name, but the same module name can be used in both the non-secure kernel and the secure kernel.

Module Info

After the end of the code data, the module information structure can be found.

Offset Size Data
0x0 0x4 Attributes
0x4 0x18 Module Name
0x1C 0x8 ?
0x24 0x4 Offset from module start to Exports start
0x28 0x4 Offset from module start to Exports end
0x2C 0x4 Offset from module start to Imports start
0x30 0x4 Offset from module start to Imports end
0x34 0x4 Module NID
0x38 0xC ?
0x44 0x4 Offset from module start to initialization function
0x48 0x4 ?
0x4C 0x4 Offset from module start to ARM exidx section start
0x50 0x4 Offset from module start to ARM exidx section end
0x54 0x4 Offset from module start to ARM extab section start
0x58 0x4 Offset from module start to ARM extab section end

Attributes

The attributes field can be broken down into the following:

Offset Size Data
0x0 0x1 Flags ?
0x1 0x1 ?
0x2 0x1 Major Version (always 1)
0x3 0x1 Minor Version (always 1)

More information is needed on how the flags are used. Most kernel modules seem to have it set to 0x7.

Modules

Each Module contains zero or more library exports and zero or more library imports. An exported library groups together related functions along with their NID and exports it for SceKernelModulemgr to link with a library import in another Module.

Exports

An array of export entries defines all the libraries implemented in the module . There is a special export entry that always shows up (even when the module exports no libraries) with flags 0x8000 and NID set to 0x0 that exports the module init function, deinit (if available) function, module information data, and so on. Kernel modules that export user accessible libraries also get entries added to the syscall table. The table is randomized on each boot so the same function will likely get a different syscall number assigned each time. Each export entry is formatted like so:

Offset Size Data
0x0 0x2 Size (always 0x20)
0x2 0x2 ?
0x4 0x2 Flags
0x6 0x2 Number of exported functions
0x8 0x2 Number of exported variables
0xA 0x2 Number of exported ?
0xC 0x4 ?
0x10 0x4 Module NID
0x14 0x4 Pointer to library name
0x18 0x4 Pointer to array of NID exports
0x1C 0x4 Pointer to array of exported functions

Imports

Each module can also import any number of libraries from other modules by specifying the libraryNID to import along with a list of function NID to import. SceKernelModulemgr will do the dynamic linking by either jumping to an address if the two libraries are in the same privilege level, or making a Syscall if it is user code importing a kernel library. Kernel modules cannot import user libraries. The import entries are similar to export entries and are structured as follows:

Offset Size Data
0x0 0x2 Size (always 0x34)
0x2 0x2 ?
0x4 0x2 Flags
0x6 0x2 Number of imported functions
0x8 0x2 Number of imported variables
0xA 0x2 Number of imported ?
0xC 0x4 ?
0x10 0x4 Import module NID
0x14 0x4 Pointer to import module name
0x18 0x4 ?
0x1C 0x4 Pointer to array of function NID import
0x20 0x4 Pointer to array of function stubs to fill
0x24 0x4 Pointer to array of variable NID import
0x28 0x4 Pointer to array of addresses to write to
0x2C 0x4 ?
0x30 0x4 ?

Flags

Flags in the export and import entries are identified as follows:

Bit Comments
0x8000 Could indicate it's a library info export
0x4000 Could indicate it's a user syscall export
0x2 Could indicate it's a kernel non-driver export
0x1 Could indicate it's a regular export

List of Modules

Below is a list of all known Modules in the system along with the lowest version number it was seen on.

Kernel

Name Version Path
SceClockgen 1.69 bootfs:clockgen.skprx
SceIdStorage 1.69 bootfs:idstorage.skprx
SceCtrl 1.69 bootfs:ctrl.skprx
SceTouch 1.69 bootfs:touch.skprx
SceMotionDev 1.69 bootfs:motion.skprx
SceCodec 1.69 bootfs:codec.skprx
SceAudio 1.69 bootfs:audio.skprx
SceHpremote 1.69 bootfs:hpremote.skprx
ScePower 1.69 bootfs:power.skprx
SceUsbd 1.69 bootfs:usbd.skprx
SceUdcd 1.69 bootfs:udcd.skprx
SceUsbServ 1.69 bootfs:usbserv.skprx
SceUsbSerial 1.69 bootfs:usbserial.skprx
SceUsbMtp 1.69 bootfs:usbmtp.skprx
SceMtpIfDriver 1.69 bootfs:mtpif.skprx
SceSblPostSsMgr 1.69 bootfs:post_ss_mgr.skprx
SceSblUpdateMgr 1.69 bootfs:update_mgr.skprx
SceRegistryMgr 1.69 bootfs:regmgr.skprx
SceSblFwLoader 1.69 bootfs:fwloader.skprx
SceVeneziaWrapper 1.69 bootfs:vnz_wrapper.skprx
SceError 1.69 bootfs:error.skprx
SceNpDrm 1.69 bootfs:npdrm.skprx
SceUlobjMgr 1.69 bootfs:ulobjmgr.skprx
SceNetPs 1.69 bootfs:net_ps.skprx
SceGps 1.69 bootfs:gps.skprx
1.69 bootfs:bbmc.skprx
SceWlanBt 1.69 bootfs:wlanbt.skprx
SceBt 1.69 bootfs:bt.skprx
SceUsbstorDriver 1.69 bootfs:usbstor.skprx
SceUsbstorVStorDriver 1.69 bootfs:usbstorvstor.skprx
SceAvcodec 1.69 bootfs:avcodec.skprx
SceAudioin 1.69 bootfs:audioin.skprx
SceNgs 1.69 bootfs:ngs.skprx
SceGpuEs4 1.69 bootfs:gpu_es4.skprx
1.69 bootfs:gpuinit_es4.skprx
SceCompat 1.69 bootfs:compat.skprx
SceCamera 1.69 bootfs:camera.skprx
SceCoredump 1.69 bootfs:coredump.skprx
SceAVConfig 1.69 bootfs:av_config.skprx
SceFios2Kernel 1.69 bootfs:fios2.skprx
ScePfsMgr 1.69 bootfs:pfsmgr.skprx
SceAppMgr 1.69 bootfs:appmgr.skprx
SceSysmodule 1.69 bootfs:sysmodule.skprx
SceVshBridge 1.69 bootfs:vshbridge.skprx
1.69 bootfs:tty2uart.skprx
SceSblACMgr 1.69 os0:kd/acmgr.skprx
SceSblAuthMgr 1.69 os0:kd/authmgr.skprx
SceKernelBootimage 1.69 os0:kd/bootimage.skprx
SceKernelBusError 1.69 os0:kd/buserror.skprx
SceStdio 1.69 os0:kd/dbgsdio.skprx
SceDisplay 1.69 os0:kd/display.skprx
SceKernelDmacMgr 1.69 os0:kd/dmacmgr.skprx
1.69 os0:kd/enum_wakeup.skprx
SceExcpmgr 1.69 os0:kd/excpmgr.skprx
SceExfatfs 1.69 os0:kd/exfatfs.skprx
SceSblGcAuthMgr 1.69 os0:kd/gcauthmgr.skprx
SceGpuEs4CoreDump 1.69 os0:kd/gpucoredump_es4.skprx
SceHdmi 1.69 os0:kd/hdmi.skprx
SceKernelIntrMgr 1.69 os0:kd/intrmgr.skprx
SceIofilemgr 1.69 os0:kd/iofilemgr.skprx
SceLowio 1.69 os0:kd/lowio.skprx
1.69 os0:kd/magicgate.skprx
SceMarlinHci 1.69 os0:kd/marlin_hci.skprx
1.69 os0:kd/mgkeymgr.skprx
1.69 os0:kd/mgvideo.skprx
SceKernelModulemgr 1.69 os0:kd/modulemgr.skprx
SceMsif 1.69 os0:kd/msif.skprx
SceOled 1.69 os0:kd/oled.skprx
ScePamgr 1.69 os0:kd/pamgr.skprx
SceSblPcbcBin 1.69 os0:kd/pcbc.skprx
SceProcessmgr 1.69 os0:kd/processmgr.skprx
SceRtc 1.69 os0:kd/rtc.skprx
SceSDbgSdio 1.69 os0:kd/sdbgsdio.skprx
SceSdif 1.69 os0:kd/sdif.skprx
SceSdstor 1.69 os0:kd/sdstor.skprx
SceSblSsSmComm 1.69 os0:kd/sm_comm.skprx
SceSblSmschedProxy 1.69 os0:kd/smsc_proxy.skprx
SceSblSsMgr 1.69 os0:kd/ss_mgr.skprx
SceSyscon 1.69 os0:kd/syscon.skprx
SceSysmem 1.69 os0:kd/sysmem.skprx
SceSysStateMgr 1.69 os0:kd/sysstatemgr.skprx
SceSystimer 1.69 os0:kd/systimer.skprx
SceKernelThreadMgr 1.69 os0:kd/threadmgr.skprx
1.69 os0:kd/usbdev_serial.skprx
1.69 os0:kd/usbpspcm.skprx
SceUsbstorDriver 1.69 os0:kd/usbstor.skprx
1.69 os0:kd/usbstormg.skprx
SceUsbstorVStorDriver 1.69 os0:kd/usbstorvstor.skprx
1.69 os0:kd/vipimg.skprx
1.69 os0:kd/vnzimg.skprx
1.69 os0:kd/wlanbt_robin_img_ax.skprx
ScePsp2BootConfig 1.69 os0:psp2bootconfig.skprx
SceKernelPsp2Config 1.69 os0:psp2config.skprx
SceSblPcffBin 1.69 vs0:app/NPXS10028/pcff.skprx

Secure Kernel

Name Version
SceSysmem 1.69
SceExcpmgr 1.69
SceKernelIntrMgr 1.69
SceKernelBusError 1.69
SceSblSmsched 1.69
SceDriverTzs 1.69

User Modules

Name Version Path
1.69 os0:us/avcodec_us.suprx
1.69 os0:us/driver_us.suprx
1.69 os0:us/libgpu_es4.suprx
1.69 os0:us/libgxm_es4.suprx
SceLibKernel 1.69 os0:us/libkernel.suprx

System Applications

Name Version Path
SceSafeMode 1.69 os0:ue/safemode.self
SceShell 1.69 vs0:vsh/shell/shell.self
SceInitialSetup 1.69 vs0:vsh/initialsetup/initialsetup.self
SceCuiSetUpper 1.69 host0:cui_setupper.self
ScePsp2Swu 1.69 up0:PSP2UPDATE/psp2swu.self
SceNear 1.69 vs0:app/NPXS10000/eboot.bin
NPXS10001 (Party) 1.69 vs0:app/NPXS10001/eboot.bin
SceStoreBrowser 1.69 vs0:app/NPXS10002/eboot.bin
SceWebBrowser 1.69 vs0:app/NPXS10003/eboot.bin
ScePhotoCam 1.69 vs0:app/NPXS10004/eboot.bin
SceMapViewer 1.69 vs0:app/NPXS10005/eboot.bin
SceFriendsApp 1.69 vs0:app/NPXS10006/eboot.bin
SceTrophy 1.69 vs0:app/NPXS10008/eboot.bin
SceMusicBrowser 1.69 vs0:app/NPXS10009/eboot.bin
SceVideoPlayer 1.69 vs0:app/NPXS10010/eboot.bin
SceRemotePlay 1.69 vs0:app/NPXS10012/eboot.bin
ScePsnMail 1.69 vs0:app/NPXS10014/eboot.bin
SceSettings 1.69 vs0:app/NPXS10015/eboot.bin
SceWebCore 1.69 vs0:app/NPXS10017/eboot.bin
NPXS10018 (Sign up) 1.69 vs0:app/NPXS10018/eboot.bin
NPXS10020 (Notifications) 1.69 vs0:app/NPXS10020/eboot.bin
SceTelReg 1.69 vs0:app/NPXS10021/eboot.bin
ScePhotoExport 1.69 vs0:app/NPXS10023/eboot.bin
SceNearAutoCheckin 1.69 vs0:app/NPXS10025/eboot.bin
CMA 1.69 vs0:app/NPXS10026/eboot.bin
SceGameManual 1.69 vs0:app/NPXS10027/eboot.bin
PSP Emulator 1.69 vs0:app/NPXS10028/eboot.bin
NPXS10029 (Merlin DRM) 1.69 vs0:app/NPXS10029/eboot.bin
NPXS10030 (Quick Signup) 1.69 vs0:app/NPXS10030/eboot.bin
Package Installer 1.69 vs0:app/NPXS10031/eboot.bin
NPXS10032 (Near Utility Background) 1.69 vs0:app/NPXS10032/eboot.bin
NPXS10035 (Store In-Game) 1.69 vs0:app/NPXS10035/eboot.bin
NPXS10036 (AVMediaSrv) 1.69 vs0:app/NPXS10036/eboot.bin
SceWebCore 1.69 vs0:app/NPXS10037/eboot.bin
NPXS10063 (MsgMW) 1.69 vs0:app/NPXS10063/eboot.bin
NPXS10065 (Grief Report Dialog) 1.69 vs0:app/NPXS10065/eboot.bin
NPXS10068 (Update Checker) 1.69 vs0:app/NPXS10068/eboot.bin
ScePsm 1.80 vs0:app/NPXS10074/eboot.bin
ScePsmManual 1.80 vs0:app/NPXS10081/eboot.bin

Application Modules

Name Version Path
1.69 vs0:app/NPXS10001/np_party_app.suprx
1.69 vs0:app/NPXS10015/system_settings_core.suprx
1.69 vs0:app/NPXS10017/jx_web_filtering.suprx
1.69 vs0:app/NPXS10017/vita_jsextobj.suprx
1.69 vs0:app/NPXS10021/tel_reg.suprx
1.69 vs0:app/NPXS10037/jx_web_filtering.suprx
1.69 vs0:app/NPXS10037/vita_jsextobj.suprx
1.69 vs0:app/NPXS10065/grief_report_dialog.suprx
1.69 vs0:data/external/webcore/jx_web_filtering.suprx
1.69 vs0:data/external/webcore/silk.suprx
1.69 vs0:data/external/webcore/silk_base.suprx
1.69 vs0:data/external/webcore/silk_mrcommon.suprx
1.69 vs0:data/external/webcore/silk_mrserver.suprx
1.69 vs0:data/external/webcore/silk_webkit.suprx
1.69 vs0:data/external/webcore/vita_jsextobj.suprx
1.69 vs0:data/external/webcore/webcore.suprx
1.69 vs0:data/external/webcore/webcore_server.suprx
1.69 vs0:sys/external/activity_db.suprx
1.69 vs0:sys/external/adhoc_matching.suprx
1.69 vs0:sys/external/apputil.suprx
1.69 vs0:sys/external/audiocodec.suprx
1.69 vs0:sys/external/bgapputil.suprx
1.69 vs0:sys/external/bXCe.suprx
1.69 vs0:sys/external/common_gui_dialog.suprx
1.69 vs0:sys/external/dbrecovery_utility.suprx
1.69 vs0:sys/external/dbutil.suprx
1.69 vs0:sys/external/incoming_dialog.suprx
1.69 vs0:sys/external/ini_file_processor.suprx
1.69 vs0:sys/external/libatrac.suprx
1.69 vs0:sys/external/libc.suprx
1.69 vs0:sys/external/libcdlg.suprx
1.69 vs0:sys/external/libcdlg_cameraimport.suprx
1.69 vs0:sys/external/libcdlg_checkout.suprx
1.69 vs0:sys/external/libcdlg_compat.suprx
1.69 vs0:sys/external/libcdlg_friendlist.suprx
1.69 vs0:sys/external/libcdlg_ime.suprx
1.69 vs0:sys/external/libcdlg_main.suprx
1.69 vs0:sys/external/libcdlg_msg.suprx
1.69 vs0:sys/external/libcdlg_netcheck.suprx
1.69 vs0:sys/external/libcdlg_np_message.suprx
1.69 vs0:sys/external/libcdlg_np_sns_fb.suprx
1.69 vs0:sys/external/libcdlg_np_trophy_setup.suprx
1.69 vs0:sys/external/libcdlg_npeula.suprx
1.69 vs0:sys/external/libcdlg_npprofile.suprx
1.69 vs0:sys/external/libcdlg_photoimport.suprx
1.69 vs0:sys/external/libcdlg_photoreview.suprx
1.69 vs0:sys/external/libcdlg_savedata.suprx
1.69 vs0:sys/external/libclipboard.suprx
1.69 vs0:sys/external/libcodecengine_perf.suprx
1.69 vs0:sys/external/libdbg.suprx
1.69 vs0:sys/external/libfiber.suprx
1.69 vs0:sys/external/libfios2.suprx
1.69 vs0:sys/external/libg729.suprx
1.69 vs0:sys/external/libgxm_dbg_es3.suprx
1.69 vs0:sys/external/libgxm_dbg_es4.suprx
1.69 vs0:sys/external/libhandwriting.suprx
1.69 vs0:sys/external/libhttp.suprx
1.69 vs0:sys/external/libime.suprx
1.69 vs0:sys/external/libipmi_nongame.suprx
1.69 vs0:sys/external/liblocation.suprx
1.69 vs0:sys/external/libmln.suprx
1.69 vs0:sys/external/libmlnapplib.suprx
1.69 vs0:sys/external/libmlndownloader.suprx
1.69 vs0:sys/external/libnaac.suprx
1.69 vs0:sys/external/libnet.suprx
1.69 vs0:sys/external/libnetctl.suprx
1.69 vs0:sys/external/libngs.suprx
1.69 vs0:sys/external/libpaf.suprx
1.69 vs0:sys/external/libperf.suprx
1.69 vs0:sys/external/libpgf.suprx
1.69 vs0:sys/external/libpvf.suprx
1.69 vs0:sys/external/librazorcapture_es3.suprx
1.69 vs0:sys/external/librazorcapture_es4.suprx
1.69 vs0:sys/external/librazorhud_es3.suprx
1.69 vs0:sys/external/librazorhud_es4.suprx
1.69 vs0:sys/external/librudp.suprx
1.69 vs0:sys/external/libsas.suprx
1.69 vs0:sys/external/libSceFt2.suprx
1.69 vs0:sys/external/libscejpegarm.suprx
1.69 vs0:sys/external/libscejpegencarm.suprx
1.69 vs0:sys/external/libscemp4.suprx
1.69 vs0:sys/external/libSceMusicExport.suprx
1.69 vs0:sys/external/libSceNearUtil.suprx
1.69 vs0:sys/external/libScePhotoExport.suprx
ScePromoterUtil 1.69 vs0:sys/external/libScePromoterUtil.suprx
1.69 vs0:sys/external/libSceScreenShot.suprx
1.69 vs0:sys/external/libSceShutterSound.suprx
1.69 vs0:sys/external/libSceSqlite.suprx
1.69 vs0:sys/external/libSceTelephonyUtil.suprx
1.69 vs0:sys/external/libSceVideoExport.suprx
1.69 vs0:sys/external/libSceXml.suprx
1.69 vs0:sys/external/libshacccg.suprx
1.69 vs0:sys/external/libshellsvc.suprx
1.69 vs0:sys/external/libssl.suprx
1.69 vs0:sys/external/libsulpha.suprx
1.69 vs0:sys/external/libsystemgesture.suprx
1.69 vs0:sys/external/libult.suprx
1.69 vs0:sys/external/libvoice.suprx
1.69 vs0:sys/external/libvoiceqos.suprx
1.69 vs0:sys/external/livearea_util.suprx
1.69 vs0:sys/external/near_profile.suprx
1.69 vs0:sys/external/notification_util.suprx
1.69 vs0:sys/external/np_activity.suprx
1.69 vs0:sys/external/np_activity_sdk.suprx
1.69 vs0:sys/external/np_basic.suprx
1.69 vs0:sys/external/np_commerce2.suprx
1.69 vs0:sys/external/np_common.suprx
1.69 vs0:sys/external/np_friend_privacylevel.suprx
1.69 vs0:sys/external/np_kdc.suprx
1.69 vs0:sys/external/np_manager.suprx
1.69 vs0:sys/external/np_matching2.suprx
1.69 vs0:sys/external/np_message.suprx
1.69 vs0:sys/external/np_message_contacts.suprx
1.69 vs0:sys/external/np_message_dialog_impl.suprx
1.69 vs0:sys/external/np_party.suprx
1.69 vs0:sys/external/np_ranking.suprx
1.69 vs0:sys/external/np_sns_facebook.suprx
1.69 vs0:sys/external/np_trophy.suprx
1.69 vs0:sys/external/np_tus.suprx
1.69 vs0:sys/external/np_utility.suprx
1.69 vs0:sys/external/sqlite.suprx
1.69 vs0:sys/external/store_checkout_plugin.suprx
1.69 vs0:sys/external/trigger_util.suprx
1.69 vs0:sys/external/ulobj_dbg.suprx
1.69 vs0:sys/external/web_ui_plugin.suprx
1.69 vs0:vsh/common/app_settings.suprx
1.69 vs0:vsh/common/auth_plugin.suprx
1.69 vs0:vsh/common/av_content_handler.suprx
1.69 vs0:vsh/common/backup_restore.suprx
1.69 vs0:vsh/common/content_operation.suprx
1.69 vs0:vsh/common/dbrecovery_plugin.suprx
1.69 vs0:vsh/common/dbsetup.suprx
1.69 vs0:vsh/common/libFflMp4.suprx
1.69 vs0:vsh/common/libmarlin.suprx
1.69 vs0:vsh/common/libmarlin_pb.suprx
1.69 vs0:vsh/common/libmarlindownloader.suprx
1.69 vs0:vsh/common/libmtp.suprx
1.69 vs0:vsh/common/libvideoprofiler.suprx
1.69 vs0:vsh/common/mms/AACPromoter.suprx
1.69 vs0:vsh/common/mms/bmp_promoter.suprx
1.69 vs0:vsh/common/mms/gif_promoter.suprx
1.69 vs0:vsh/common/mms/jpeg_promoter.suprx
1.69 vs0:vsh/common/mms/meta_gen.suprx
1.69 vs0:vsh/common/mms/Mp3Promoter.suprx
1.69 vs0:vsh/common/mms/MsvPromoter.suprx
1.69 vs0:vsh/common/mms/png_promoter.suprx
1.69 vs0:vsh/common/mms/RiffPromoter.suprx
1.69 vs0:vsh/common/mms/SensMe.suprx
1.69 vs0:vsh/common/mms/tiff_promoter.suprx
1.69 vs0:vsh/common/mtp_client.suprx
1.69 vs0:vsh/common/mtpr3.suprx
1.69 vs0:vsh/common/np_grief_report.suprx
1.69 vs0:vsh/common/webcore.suprx
1.69 vs0:vsh/game/gamedata_plugin.suprx
1.69 vs0:vsh/shell/auth_reset_plugin.suprx
1.69 vs0:vsh/shell/idu_update_plugin.suprx
1.69 vs0:vsh/shell/ime_plugin.suprx
1.69 vs0:vsh/shell/impose_net_plugin.suprx
1.69 vs0:vsh/shell/liblocation_permission.suprx
1.69 vs0:vsh/shell/liblocation_provider.suprx
1.69 vs0:vsh/shell/livearea_util_module.suprx
1.69 vs0:vsh/shell/livespace_db.suprx
1.69 vs0:vsh/shell/location_dialog_plugin.suprx
1.69 vs0:vsh/shell/telephony/initial_check/tel_initial_check_plugin.suprx