Editing Lv1.self

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:
This is the Hypervisor (see [[Hypervisor Reverse Engineering]]) and follows the [[SELF - SPRX|SELF file format]].
This is the Hypervisor see ([[Hypervisor Reverse Engineering]]) and follows the format of every SELF see ([[SELF File Format and Decryption]])


= Embedded Files Segment =
=Embedded Files Segment=


lv1 contains many embedded selfs inside of a special segment "Embedded Files Segment". This is a segment within the program itself, loading in a hex editor gives a small file table which appears different from the others that sony has used.
lv1 contains many embedded selfs inside of a special segment "Embedded Files Segment"
This is a segment within the program itself, loading in a hex editor gives a small file table
which appears different from the others that sony has used.


== File Table ==
==File Table==


The file table follows this structure  
The file table follows this structure  
Line 29: Line 31:
* ss_server3.fself
* ss_server3.fself


= Files common on lv1 =


lv1.self delegates a lot of work to the embedded selfs which it loads to different process (see [[Hypervisor Reverse Engineering]]).
=Files common on lv1=
 
lv1.self delegates a lot of his work to the embedded selfs wich it loads to different process see ([[Hypervisor Reverse Engineering]])


{|class="wikitable"
{|class="wikitable"
Line 115: Line 118:
|}
|}


== lv1.self 3.55 ==
==lv1.self 3.55==


file table
file table
Line 140: Line 143:
|}
|}


== pme_init.conf example ==
==pme_init.conf Example==


<pre>
<pre>
Line 155: Line 158:
</pre>
</pre>


== Dump lv1 embedded ELFs script ==
==Dump lv1 embedded elfs Script==


I did this script quickly to extract the embedded files within lv1. This script doesn't use the file table, is ugly, but works... anyone feel free to improve it --[[User:PsiCoLeO|PsiCoLeO]] 16:11, 22 May 2011 (CDT)
I did this script quickly to exctract the embedded files within lv1. This script doesn't use the file table, is ugly, but works... anyone feel free to improve it --[[User:PsiCoLeO|PsiCoLeO]] 16:11, 22 May 2011 (CDT)


Located an updated variant of PsiCoLeO's script. The update includes offsets and sizes for 4.21 - 4.41 firmware, and was contributed by Rip Cord from an external source, with minor typo fixes by myself. See edit summary for source attribution. --[[User:Tuxsavvy|Tuxsavvy]] ([[User talk:Tuxsavvy|talk]]) 08:55, 22 April 2023 (CEST)
How to use it


How to use it
Save the script in a file named


1) Save the script in a file named:
<pre>
<pre>
dump_lv1_embedded_files.sh
dump_lv1_embedded_files.sh
</pre>
</pre>


2) Give it execute permisions:
give it execute permisions
 
<pre>
<pre>
chmod +x dump_lv1_embedded_files.sh
chmod +x dump_lv1_embedded_files.sh
</pre>
</pre>


3) Feed it with decrypted lv1.self:
feed it with decrypted lv1.self
 
<pre>
<pre>
./dump_lv1_embedded_files.sh lv1.elf
./dump_lv1_embedded_files.sh lv1.elf
</pre>
</pre>


<source lang="bash">
<pre>
#!/bin/bash
#!/bin/bash
# PsiCoLeO 2011
# PsiCoLeO 2011
# Rip Cord 2013
#
#
# Script to extract the embedded files from lv1.self
# Script to extract the embedded files from lv1.self
# There is no warranty that this script will work for you
# There is no warranty that this script will work for you
# I can not be held responsible of what you do with this script or any damage you get from using it
# I can not be held responsable of what you do with this script or any damage you get from using it
# Use it as you please
# Use it as you please
 
# File names
# File names
files=( "pme_init" "sysmgr_ss.fself" "pme_init.conf" "ss_init.fself" "updater_frontend.fself" "ss_server1.fself" "ss_server2.fself" "ss_server3.fself" )
files=( "pme_init" "sysmgr_ss.fself" "pme_init.conf" "ss_init.fself" "updater_frontend.fself" "ss_server1.fself" "ss_server2.fself" "ss_server3.fself" )
 
#comment and uncomment file sizes and offsets depending on the firmware
#comment and uncomment file sizes and offsets depending on the firmware
 
# File sizes 3.41
# File sizes 3.41
#size=( 0x24824 0x5f790 0xAF 0x34eb8 0x239F0 0x811D0 0x4A940 0x38ED0 )
size=( 0x24824 0x5f790 0xAF 0x34eb8 0x239F0 0x811D0 0x4A940 0x38ED0 )
 
# File offsets 3.41
# File offsets 3.41
#offset=( 0x1D00E8 0x1F490C 0x25409C 0x25414C 0x289004 0x2AC9F4 0x32DBC4 0x378504 )
offset=( 0x1D00E8 0x1F490C 0x25409C 0x25414C 0x289004 0x2AC9F4 0x32DBC4 0x378504 )
 
# File sizes 3.55
# File sizes 3.55  
#size=( 0x24824 0x5f790 0xAF 0x34EB8 0x239F0 0x813B8 0x4A940 0x38ED0 )
#size=( 0x24824 0x5f790 0xAF 0x34EB8 0x239F0 0x813B8 0x4A940 0x38ED0 )
 
# File offsets 3.55
# File offsets 3.55
#offset=( 0x1D00E8 0x1F490C 0x25409C 0x25414C 0x289004 0x2AC9F4 0x32DDAC 0x3786EC )
#offset=( 0x1D00E8 0x1F490C 0x25409C 0x25414C 0x289004 0x2AC9F4 0x32DDAC 0x3786EC )
 
#*******************************************************************************
# values for firmwares 4.21 - 4.41 have been added to PsiCoLeO's original release
# File sizes 4.21
#size=( 0x217D8 0x5FBC8 0xAF 0x35058 0x239F0 0x81890 0x4ACE0 0x39080 )
# File offsets 4.21
#offset=( 0x1F00E8 0x2118C0 0x271488 0x271538 0x2A6590 0x2C9F80 0x34B810 0x3964F0 )
# File sizes 4.30
#size=( 0x217D8 0x5FCA8 0xAF 0x35058 0x239F0 0x81A38 0x4ACE0 0x391D0 )
# File offsets 4.30
#offset=( 0x1F00E8 0x2118C0 0x271568 0x271618 0x2A6670 0x2CA060 0x34BA98 0x396778 )
# File sizes 4.41
size=( 0x217D8 0x5FCA8 0xAF 0x35058 0x23D90 0x81A38 0x4ACE0 0x391D0 )
# File offsets 4.41
offset=( 0x1F00E8 0x2118C0 0x271568 0x271618 0x2A6670 0x2CA400 0x34BE38 0x396B18)
#*******************************************************************************
cont=0
cont=0
 
printf "***************************** \n"
printf "***************************** \n"
printf "* Psicoleo's                * \n"
printf "* Psicoleo's                * \n"
printf "* Dump lv1 Embedded files * \n"
printf "* Dump lv1 Embedded files   * \n"  
printf "***************************** \n\n"
printf "***************************** \n\n"
 
for file in "${files[@]}"
for file in "${files[@]}"
do
do
Line 241: Line 220:
         printf "      %s\n" "${file}"
         printf "      %s\n" "${file}"
         printf "***************************** \n\n"
         printf "***************************** \n\n"
    printf "%s\n" "${offset[$cont]}"
printf "%s\n" "${offset[$cont]}"
    printf "%s\n" "${size[$cont]}"
printf "%s\n" "${size[$cont]}"
    printf "%s\n" "${cont}"
printf "%s\n" "${cont}"
    dd if=$1 of=$file bs=1 obs=1 skip=$((${offset[$cont]})) count=$((${size[$cont]}))
dd if=$1 of=$file bs=1 obs=1 skip=$((${offset[$cont]})) count=$((${size[$cont]}))
    cont=$(($cont+1))
cont=$(($cont+1))
done
done
</source>
</pre>


= ss_server1.fself =
=ss_server1.fself=


== Class list ==
==Class list==


{|class="wikitable"
{|class="wikitable"
Line 316: Line 295:
|}
|}


== Members ==
==Members==


=== ss_init_if ===
===ss_init_if===


{|class="wikitable"
{|class="wikitable"
Line 327: Line 306:
|}
|}


=== usb_dongle_authenticator ===
===usb_dongle_authenticator===


{|class="wikitable"
{|class="wikitable"
Line 340: Line 319:
|}
|}


=== security_hardware_framework_if ===
===security_hardware_framework_if===


{|class="wikitable"
{|class="wikitable"
Line 349: Line 328:
|}
|}


=== user_token_manager ===
===user_token_manager===


{|class="wikitable"
{|class="wikitable"
Line 360: Line 339:
|}
|}


=== user_token_processor ===
===user_token_processor===


{|class="wikitable"
{|class="wikitable"
Line 375: Line 354:
|}
|}


=== update_manager ===
===update_manager===


{|class="wikitable"
{|class="wikitable"
Line 506: Line 485:
|}
|}


=== verify_util ===
===verify_util===


{|class="wikitable"
{|class="wikitable"
Line 527: Line 506:
|}
|}


=== region_manager ===
===region_manager===


{|class="wikitable"
{|class="wikitable"
Line 538: Line 517:
|-
|-
|get_update_status(%d) || || ||  
|get_update_status(%d) || || ||  
|-
|read_data(%d, 0x%llx, 0x%llx, 0x%llx) || || ||
|-
|write_data(%d, 0x%llx, 0x%llx, 0x%llx) || || ||
|}
|}


=== update_token_procesor ===
===update_token_procesor===


{|class="wikitable"
{|class="wikitable"
Line 559: Line 534:
|}
|}


=== bd_updater ===
===bd_updater===


{|class="wikitable"
{|class="wikitable"
Line 602: Line 577:
|}
|}


=== sc_updater ===
===sc_updater===


{|class="wikitable"
===certified_file_verifier===
|-
! Name !! Type !! Args !! Description
|-
|initialize() || || ||
|}
 
=== certified_file_verifier ===


{|class="wikitable"
{|class="wikitable"
Line 622: Line 590:
|}
|}


=== virtual_trm_manager ===
===virtual_trm_manager===


{|class="wikitable"
{|class="wikitable"
Line 716: Line 684:
|instanciate_objs || || ||  
|instanciate_objs || || ||  
|-
|-
|print_flash_range || || ||  
| print_flash_range || || ||  
|-
|-
|free || || ||  
|free || || ||  
Line 725: Line 693:
|}
|}


=== get_applicable_version ===
===get_applicable_version===


{|class="wikitable"
{|class="wikitable"
Line 736: Line 704:
|}
|}


=== module_loader ===
===sc_manager===
 
{|class="wikitable"
|-
! Name !! Type !! Args !! Description
|-
|load_module || || ||
|}
 
=== sc_manager ===


{|class="wikitable"
{|class="wikitable"
Line 763: Line 722:
|}
|}


=== composite_region ===
===composite_region===


{|class="wikitable"
{|class="wikitable"
|-
|-
! Name !! Type !! Args !! Description
! Name !! Type !! Args !! Description
|-
|read(0x%llx, %lld, 0x%llx) || || ||
|-
|-
|allocate_buffer(%lld) || || ||  
|allocate_buffer(%lld) || || ||  
|-
|release_buffer(0x%llx) || || ||
|-
|-
|cache_all_composite_region_entry || || ||  
|cache_all_composite_region_entry || || ||  
|-
|get_bank_info || || ||
|-
|-
|get_composite_region_entry_by_index(%d, 0x%llx) || || ||  
|get_composite_region_entry_by_index(%d, 0x%llx) || || ||  
|-
|get_composite_region_entry_by_name(%s) || || ||
|-
|get_composite_region_header || || ||
|-
|initialize || || ||
|-
|read(0x%llx, %lld, 0x%llx) || || ||
|-
|release_buffer(0x%llx) || || ||
|-
|-
|writev || || ||  
|writev || || ||  
|}
|}


=== bank_manager ===
===bank_manager===


{|class="wikitable"
{|class="wikitable"
Line 801: Line 752:
|}
|}


=== capability_checker ===
===capability_checker===


{|class="wikitable"
{|class="wikitable"
Line 810: Line 761:
|}
|}


=== if_proto ===
===if_proto===


{|class="wikitable"
{|class="wikitable"
Line 819: Line 770:
|}
|}


=== ss_responder ===
===ss_responder===


{|class="wikitable"
{|class="wikitable"
Line 832: Line 783:
|}
|}


=== port_id_table ===
===port_id_table===


{|class="wikitable"
{|class="wikitable"
Line 841: Line 792:
|}
|}


=== pme_client ===
===pme_client===


{|class="wikitable"
{|class="wikitable"
Line 856: Line 807:
|}
|}


=== pme_server ===
===pme_server===


{|class="wikitable"
{|class="wikitable"
Line 873: Line 824:
|}
|}


=== page_bytestring ===
===page_bytestring===


{|class="wikitable"
{|class="wikitable"
Line 884: Line 835:
|}
|}


=== ss_packet ===
===ss_packet===


{|class="wikitable"
{|class="wikitable"
Line 899: Line 850:
|}
|}


=== ss_init_repository ===
===ss_init_repository===


{|class="wikitable"
{|class="wikitable"
Line 910: Line 861:
|}
|}


=== sbm ===
===sbm===


{|class="wikitable"
{|class="wikitable"
Line 941: Line 892:
|}
|}


=== flash_io ===
{|class="wikitable"
|-
! Name !! Type !! Args !! Description
|-
|init  || || ||
|-
|range  || || ||
|}




{{File Formats}}
{{File Formats}}
<noinclude>[[Category:Main]]</noinclude>
<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)