Editing VSH

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
VSH is the internal name used by Sony for the VShell aka VirtualShell. It then loads up the XMB you know. [[XMB|XrossMediaBar (XMB)]]. This, is a userspace executable (vsh.self), loaded by lv2_kernel/sys_init_osd.  
[[Category:Software]]
VSH is the internal name used by Sony for the VShell aka VirtualShell. It then loads up the XMB you know.[http://www.ps3devwiki.com/wiki/XMB XrossMediaBar (XMB)]. This, is a user space executable (vsh.self), loaded by lv2_kernel/sys_init_osd.  


from here several other functions/syscalls to other modules are made, e.g. lv2 ([[Talk:SELF_File_Format_and_Decryption|SELF decryption]]), lv1 ([[Hypervisor_Reverse_Engineering#0x3000_-_Secure_RTC|Secure_RTC]], [[Hypervisor_Reverse_Engineering#0x5000_-_Storage_Manager|Storage_Manager]], [[Hypervisor_Reverse_Engineering#Gelic_Device|Gelic_Device]], [[Hypervisor_Reverse_Engineering#BD_Drive|BD_Drive]]) etc.
from here several other functions/syscalls to other modules are made, e.g. lv2 ([http://www.ps3devwiki.com/index.php?title=Talk:SELF_File_Format_and_Decryption SELF decryption]), lv1 ([http://www.ps3devwiki.com/index.php?title=Hypervisor_Reverse_Engineering#0x3000_-_Secure_RTC Secure_RTC], [http://www.ps3devwiki.com/index.php?title=Hypervisor_Reverse_Engineering#0x5000_-_Storage_Manager Storage_Manager], [http://www.ps3devwiki.com/index.php?title=Hypervisor_Reverse_Engineering#Gelic_Device Gelic_Device], [http://www.ps3devwiki.com/index.php?title=Hypervisor_Reverse_Engineering#BD_Drive BD_Drive]) etc.


not much is documented (yet) about this module. Please fill in where possible.
not much is documented (yet) about this module. Please fill in where possible.
Line 21: Line 22:


=== Exports ===
=== Exports ===
[[VSH Exports]]
=== Imports ===
[[VSH Imports]]
===Memory Containers===
{| class="wikitable sortable"
{| class="wikitable sortable"
! Type/Id !! Name !! Size !! Usage
! Export Library !! Export NID !! Notes !! Usage
|-
| sys_io || - || - || -
|-
| sys_fs || - || - || -
|-
| sys_fs_ps2disc || 0x8160A811|| switches /dev_ps2disc(1) mount? ||
|-
| vsh || - || - ||
|-
| vsh || 0xF48562D || cellSsAimIsCEX ||
|-
| vsh || 0x145991B4|| cellSsAimIsArcade ||
|-
| vsh || 0x172B05CD|| update_mgr_write_eprom syscall ||
|-
| vsh || 0x1B890AD2|| update_mgr_get_token_seed syscall ||
|-
| vsh || 0x1F80E287|| cellSsAimIsTool ||
|-
| vsh || 0x2C563C92|| update_mgr_read_eprom syscall ||
|-
| vsh || 0x3231E012|| vtrm_Decrypt_Master syscall ||
|-
| vsh || 0x349F1535|| update_mgr_set_token syscall ||
|-
| vsh || 0x3B4A1AC4|| AIM GetDeviceId syscall ||
|-
| vsh || 0x3F062337|| AIM GetPsCode syscall ||
|-
| vsh || 0xE44F29F4|| cellFsUtilMount syscall ||
|-
| vsh || 0xE932A8C0|| reboot and show minimum version <br> char can be "text whatever you like", no check etc. || int vsh_E932A8C0(char * )
|-
| vsh || 0xFF4A1633|| cellFsUtilMount syscall ||
|-
| vsh || 0x7D73E7CD || inflate_init ||
|-
| vsh || 0x4DB8DD87 || inflate_end ||
|-
| vsh || 0x20215547 || inflate_buffer ||
|-
| vsh || 0x1C68CC75 || inflate ||
|-
| sdk || - || - ||
|-
| sdk || 0x5FAFE92B|| cellCryptoPuSha1Hash ||
|-
| sdk || 0xB45387CD|| AesCbcCfb128Decrypt ||
|-
| sdk || 0x55ACAB8A || sha1_init ||
|-
| sdk || 0x831E89EE || sha1_update ||
|-
| sdk || 0x3CABD075 || sha1_final ||
|-
| sdk || 0x4484A101 || sha1_hmac_update ||
|-
| sdk || 0x547B602C || sha1_hmac_init ||
|-
| sdk || 0x300B99F2 || sha1_hmac_final ||
|-
| sdk || 0x74A2A1FE || sha1_hmac_buffer ||
|-
| sdk || 0x68B630D5 || aes_omac_mode1 ||
|-
| paf || - || - ||
|-
| paf || 0x350B4536 || Job_Start ||
|-
| paf || 0xFE0C1F10 || Job_Queue ||
|-
| paf || 0xA1DC401  || sets Interface from plugin || uint32_t SetInterface(unknown, uint32_t identifier, void * ptr_structure)
|-
| paf || 0x23AFB290 || gets Interface from plugin, should allow calling its exports/funcs || uint32_t plugin->GetInterface(uint32_t return from paf_F21655F3, uint32_t identifier)
|-
| paf || 0x3A8454FC || finds/gets Texture/Resource || Example: out: uint32_t*, return from paf_F21655F3, "tex_notification_info"
|-
| paf || 0x794CEACB || finds widget in a plugin || Example: plugin->FindWidget(return from paf_F21655F3, "page_autooff_guide")
|-
| paf || 0x89B67B9C || gets msg_ text from plugin resource || Example: (w)char (return from paf_F21655F3, "msg_help_system_off_soon_by_setting")
|-
| paf || 0xF21655F3 || finds a loaded plugin || Example: uint32_t paf::View::Find("system_plugin")
|-
| vshcommon || - || - ||
|-
| vshcommon || 0x16106ACD || returns "impose_plugin" interface 1 || uint vshcommon_16106ACD()
|-
| vshcommon || 0x8B2110D5 || reads boot_history.dat ||
|-
| vshcommon || 0x9A43140 || adds info to /pushlist/patch.dat ||
|-
| vshcommon || 0x9EA67737 || adds? titleid to boot_history.dat (creates if not present) ||
|-
| vshcommon || 0xCC2C67F2 || reads /pushlist/patch.dat  || vshcommon_CC2C67F2(int* count,uint8_t buf[0x680])
|-
| x3 || - || - ||
|-
| x3 || 0x16FA740A || xCore_GetInterface() || uint32_t* interface xCore_GetInterface()
|-
| x3 || 0x11409ED3|| xRegistryGetDefaultInstance|| int xRegistryGetDefaultInstance (1, &handle)
|-
| x3 || 0x9C246A91 || xBDVDGetInstance ||
|-
| x3 || 0xCB1D791D|| Obtains SS Key||
|-
| x3 || 0xECACA8AD|| xRegistry SetValue|| Example: int SetValue(handle, "/setting/categoryVersion", 0,0,0)
|-
| vshnet || - || - ||
|-
| vshnet || 0x50EE5602 || gets updatelist txt and compares version ||
|-
| vshmain || - || - ||
|-
| vshmain || 0xAE35CF2D || call "xmb_plugin" XMM0 +0x5C Interface
value = 0 (string starts: http(s)/psns/psim/psvp),<br>
value = 1 (string starts: psns,hknw,psim,tchat,search,wbrd,cpy,explore,regcam) 
|| int vshmain_AE35CF2D(char *, int value)
|-
| vshmain || 0xD609A2F6 || shows up XMB Login? ||
|-
| vshmain || 0xF3F75BE || sysutil::BeginService ||
|-
|-
| 0 || game || dex: 426.770.432 / cex: 223.346.688 Bytes ||
| vshmain || 0x505FA917 || cxmlutil::GetFile ||
|-
|-
| 1 || app || 223.346.688 Bytes ||
| vshmain || 0x7606AF6F || VersionFile::Get ||
Spurs (Tiff, Png, Jpg)
[[autodownload_plugin]]
[[custom_render_plugin]]
[[dlna_plugin]]
fchk (libfs_utility2)
[[game_ext_plugin]]
[[impose_plugin]]
libfs_utility_init
vshmain_util
mms
libsre libadec
libac3dec
paf_ext
qglbase
vshmain_ext
[[msgdialog_plugin]]
msmw1
msmw2
[[podl_plugin]]
[[premo_plugin]]
[[software_update_plugin]]
[[soundvisualizer_plugin]]
[[system_plugin]]
vshmain_util
[[xmb_plugin]] (XMB normal)
[[ycon_manual_plugin]]
|-
|-
| 2 || debug || 203.423.744 Bytes ||
| vshmain || 0x981D7E9F || Gets ScreenShot Flag || int vshmain_981D7E9F()
|-
|-
| 3 || fg (foreground)|| 3.145.728 Bytes ||
| vshtask || - || - ||
User Information
[[auth_plugin]]
[[avc2_text_plugin]]
[[comboplay_plugin]]
[[ps3_savedata_plugin]]
[[game_plugin]]
[[deviceconf_plugin]]
fchk (libfs_utility2)
[[friendim_plugin]]
[[friendlm_plugin]]
[[friendtrophy_plugin]]
[[game_plugin]]
[[gameupdate_plugin]]
libfs_utility_init
vshmain_util
mms
[[np_eula_plugin]]
[[np_sns_plugin]]
[[np_multisignin_plugin]]
[[npsignin_plugin]]
[[osk_plugin]]
photoUtil
photoUtil2
[[photo_network_sharing_plugin]]
[[print_plugin]]
[[profile_plugin]]
[[screenshot_plugin]]
upload_util
[[xmb_ingame]]
|-
|-
| 4 || bg (background)|| 3.145.728 Bytes ||
| vshtask || 0xA02D46E7 || Displays a notification in XMB || int vshtask_A02D46E7(0 /*ignored*/<!--//or icon? (refered by his number from 0 to 12 availables, or by his name)?//-->, "your text" )
[[avc_plugin]]
[[avc2_game_plugin]]
[[audioplayer_plugin]]
[[audioplayer_plugin_mini]]
music playback/decode
[[rec_plugin]]
imejp (service type=1)
ime_atok_module
|-
|-
|}
|}


===Loaded Views===
To help documenting offsets+exports, you can use [http://www.ps3devwiki.com/index.php?title=Dev_Tools#vsh_dumper this dumper tool for vsh] (actually,no need to dump anymore).
These Views and prx files are loaded by default and are accessable without further loading, all others need to be loaded.
 
====Regular XMB====
 
[[system_plugin]]
[[xmb_plugin]]
[[explore_plugin]]
[[category_setting_plugin]]
[[impose_plugin]]
 
====InGame XMB====
 
[[system_plugin]]
[[xmb_plugin]]
[[explore_plugin]]
[[game_plugin]]
[[impose_plugin]]
 
====InGame====
 
[[game_plugin]]
[[impose_plugin]]
 
===VSH Service Communication (CXML Header Magic)===
 
APNT - [[ap_plugin|Access Point Utility]]
ATHD - [[auth_plugin|(Password) Authentication Dialog]]
AVC2 - [[avc2_game_plugin|Audio-Voice/Video Chat Utility 2]]
AVCH - [[avc_plugin|Audio-Voice/Video Chat Utility]]
BGDL - Background Download Service
CHAT - [[avc2_game_plugin|System Chat]]
CMND -
COMB - [[comboplay_plugin|Combo Playing(Cross Controller)]]
DGAM - [[game_plugin|Disc Game-Mode Utility]]
DPSN - Decrypt PSN Video Service
DTCP - DTCP IP Service
EULA - End User License Agreement
GAME - [[game_plugin|Game Utility]]
GDAT - [[game_plugin|Game Data Utility]]
GDTL - [[game_plugin|(uses DGAM)]]
GEXE - [[game_plugin|Game Execution Utility]]
GPS1 - [[game_plugin|Game PS1 Rumble]]
GUPD - Game Upate Check
IMEJ - Input Method Engine Japanese
MSGD - [[msgdialog_plugin|Message Dialog Utility]]
MUDE - Music Decode
MUSC - Music Playback
NMT2 - NP Matching 2 Utility
NPBA - NP Basic Utility
NPC2 - NP (Ingame) Commerce 2 Utility
NPCM - NP Commerce Utility
NPCU - NP Custom Menu
NPDR - NP DRM Utility
NPFL - NP Friendlist Utility
NPIN - NP Install (Commerce)
NPLU - NP LookUp
NPMG - NP Manager Utility
NPMT - NP Matching Utility
NPRA - NP Score/Ranking Utility
NPSN - NP Signaling Utility
NPTR - NP Trophy
NPUS - NP User Storage
NSNS - NP Social Networking Services (Facebook Api)
NTCL - netcl Utility
OSKD - [[osk|On Screen Keyboard Utility]]
PARA - System Parameters Utility
PESM - PKI End to end Secure Module
PHDE - Photo Decode
PHE2 - Photo Export (Utility 2)
PHEX - Photo Export
PHIM - Photo Import
PNSU - Photo Network Sharing
PRIN - Printer Utility
RECO - [[rec_plugin|Recording Utility]]
RMTP - [[premo_game_plugin|Remote Play]]
RTCA - [[rtcalarm|RTC Alarm]]
SAVE - Save Data Utility (surf autosave)
SRCH - [[cell_search_service|Search]]
SSHT - ScreenShot
STDT - Storage Data Copy Utility
SUBD - [[premo_game_plugin|SubDisplay Utility]]
SYSC - [[deviceconf_plugin|System (Device/Pad) Configuration]]
USRI - User Information Utility
VDPL - Video Player
VDUP - [[upload_util|Video Upload]]
WBRW - [[webbrowser_plugin|WebBrowser Utility]]
 
===Notification Window Textures===
<div style="float:right">[[File:Notification_window_textures.jpg|800px|thumb|left|Notification Window Textures (inside dev_flash/vsh/resource/system_plugin.rco)]]</div>
 
All the icons are 100x100 pixels size
* tex_notification_caution
* tex_notification_friend
* tex_notification_headset
* tex_notification_info
* tex_notification_keypad
* tex_notification_mediaserver
* tex_notification_music
* tex_notification_psbutton_insensitive
* tex_notification_settings
* tex_notification_trophy_bronze
* tex_notification_trophy_gold
* tex_notification_trophy_platinum
* tex_notification_trophy_silver
 
The other texture used by notification window is the frame of the notification window itself (called "tex_notification" with a size of 64x64 pixels), this frame is scalated in width automatically by XMB (to make the frame fit the width of the text that is displayed inside the window), and is posible to reskin the frame using a [[PlayStation 3 Theme (P3T)|Theme]]
 
*Any texture from any plugin can be used actually. i.e.: tex_common_dialog. Would it be possible to create our own textures?
**Sure, there is no security check over .RCO's (resource containers), what is not clear is if is posible to load a texture with a custom name from a .RCO with a custom name (e.g: tex_myicon from a file named: myresources.rco)... Initially .SPRX needs to be "indexed" by VSH to be available, and .RCO's are dependant of .SPRX... but in case of the resources is posible all are available --[[User:Sandungas|Sandungas]] ([[User talk:Sandungas|talk]]) 19:22, 20 May 2014 (EDT)


===Display Buffers===
===Display Buffers===
Line 224: Line 165:
{{Keyboard|content=<syntaxhighlight lang="bash">
{{Keyboard|content=<syntaxhighlight lang="bash">
GCMBUFINFO 0
GCMBUFINFO 0
address: 0xdc80000
offset: 0xdc80000
pitch: 0x2000
pitch: 0x2000
width: 0x780
width: 0x780
Line 230: Line 171:


GCMBUFINFO 1
GCMBUFINFO 1
address: 0xe500000
offset: 0xe500000
pitch: 0x2000
pitch: 0x2000
width: 0x780
width: 0x780
height: 0x438
height: 0x438
</syntaxhighlight>}}
</syntaxhighlight>}}
===Settings===
VSH contains an array of structs which describes the [[xRegistry.sys]]. (More Information about its access [[Talk:VSH]] )
struct Setting_s
{
  int32_t index;
  const char* name;
  int32_t unk0;
  int8_t unk1;
  union
  {
      int32_t integer;
      const char* string;
  }default;
  int32_t type;
  int32_t unk2;
};
The first element of this array describes the password setting. Use this script to label all of the settings. [http://pastebin.com/ZiZ6S43t link]
.long 1                # index
.long aSettingParen_4  # name # "/setting/parental/passwordNumber"
.long 1                # unk0
.byte 1                # unk1
.byte 0, 0, 0
.long a0000_1          # default # "0000"
.long 4                # type
.long 0x28              # unk2
===Events===
Global Event Queue Id's:
Polling Service
0x8006020000000030
0x8006020000000010
0x8006020000000002
0x8006020000000000
CMND Service (Connect)
0x8006010000000100
0x8006010000000101
0x8006010000000102
0x8006010000000103
SceNpTusVsh
0x0800604000000902
===Title IDs===
Clears a Memory Container in relation of this game and a camera (disables video chat etc.?)
BLUS20001 Ridge Racer 7
BCAS20001 Ridge Racer 7
BLJS10001 Ridge Racer 7
BCES00009 Ridge Racer 7
BCKS10001 Ridge Racer 7
Circumvents an AudioOut Setting that made the game freeze/black screen
BLUS30264 Afro Samurai
BLES00516 Afro Samurai
NPUB90215 Afro Samurai (Demo)
BLJM60130 Street Fighter IV
BLUS30265 Street Fighter IV
BLES00481 Street Fighter IV
BCJB95006 Torne
NPIA00005 PlayStation Home
NPIA00009
NPIA00010 PlayStation Home
NPIA00011
NPEA00013 PlayStation Home
WebBrowser finalize executed without mutex/lock syncs
NPJB00001 Tekken 5: Dark Resurrection
NPUB30009 Tekken 5: Dark Resurrection
NPJB00023 Crystal Defenders
NPUB30092 Crystal Defenders
{{Development}}<noinclude>[[Category:Main]]</noinclude>
Please note that all contributions to PS3 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS3 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)