Editing Lv1.self
Jump to navigation
Jump to search
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 ( | This is the Hypervisor see ([[Hypervisor Reverse Engineering]]) and follows the format of every self see([[Signed Executable and Linkable Format (SELF)]]) | ||
= Embedded Files Segment = | =Embedded Files Segment= | ||
lv1 contains many embedded selfs inside of a special 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. | |||
== 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 | ||
lv1.self delegates a lot of work to the embedded selfs | =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 121: | Line 124: | ||
{|class="wikitable" | {|class="wikitable" | ||
|- | |- | ||
!name !! start !! length !! index !! Real start (segment start + table length + start | !name !! start !! length !! index !! Real start (segment start + table length + start) | ||
|- | |- | ||
|pme_init || 0x0 || 0x24824 || 0x00 || 0x1D00E8 | |pme_init || 0x0 || 0x24824 || 0x00 || 0x1D00E8 | ||
|- | |- | ||
|sysmgr_ss.fself || 0x24824 || 0x5f790 || 0x09 || 0x1F490C | |sysmgr_ss.fself || 0x24824 || 0x5f790 || 0x09 || 0x1F490C | ||
|- | |- | ||
|pme_init.conf || 0x83fb4 || 0xAF || 0x19 || 0x25409C | |pme_init.conf || 0x83fb4 || 0xAF || 0x19 || 0x25409C | ||
|- | |- | ||
|ss_init.fself || 0x84064 || 0x34EB8 || 0x27 || 0x25414C | |ss_init.fself || 0x84064 || 0x34EB8 || 0x27 || 0x25414C | ||
|- | |- | ||
|updater_frontend.fself || 0xB8F1C || 0x239F0 || 0x35 || 0x289004 | |updater_frontend.fself || 0xB8F1C || 0x239F0 || 0x35 || 0x289004 | ||
|- | |- | ||
|ss_server1.fself || 0xDC90C || 0x813B8 || 0x4C || 0x2AC9F4 | |ss_server1.fself || 0xDC90C || 0x813B8 || 0x4C || 0x2AC9F4 | ||
|- | |- | ||
|ss_server2.fself || 0x15DCC4 || 0x4A940 || 0x5D || 0x32DDAC | |ss_server2.fself || 0x15DCC4 || 0x4A940 || 0x5D || 0x32DDAC | ||
|- | |- | ||
|ss_server3.fself || 0x1A8604 || 0x38ED0 || 0x6E || 0x3786EC | |ss_server3.fself || 0x1A8604 || 0x38ED0 || 0x6E || 0x3786EC | ||
|} | |} | ||
== pme_init.conf | |||
==pme_init.conf Example== | |||
<pre> | <pre> | ||
Line 155: | Line 161: | ||
</pre> | </pre> | ||
== Dump lv1 embedded | ==Dump lv1 embedded elfs Script== | ||
I did this script quickly to | 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) | ||
How to use it | |||
Save the script in a file named | |||
<pre> | <pre> | ||
dump_lv1_embedded_files.sh | dump_lv1_embedded_files.sh | ||
</pre> | </pre> | ||
give it execute permisions | |||
<pre> | <pre> | ||
ch mod +x dump_lv1_embedded_files.sh | |||
</pre> | </pre> | ||
feed it with decrypted lv1.self | |||
<pre> | <pre> | ||
./dump_lv1_embedded_files.sh lv1.elf | ./dump_lv1_embedded_files.sh lv1.elf | ||
</pre> | </pre> | ||
< | <pre> | ||
#!/bin/bash | #!/bin/bash | ||
# PsiCoLeO 2011 | # PsiCoLeO 2011 | ||
# | # | ||
# 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 | # 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 ) | |||
# File offsets 3.41 | # File offsets 3.41 | ||
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 ) | ||
cont=0 | cont=0 | ||
printf "***************************** \n" | printf "***************************** \n" | ||
printf "* Psicoleo's * \n" | printf "* Psicoleo's * \n" | ||
printf "* Dump lv1 Embedded files | 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 223: | ||
printf " %s\n" "${file}" | printf " %s\n" "${file}" | ||
printf "***************************** \n\n" | printf "***************************** \n\n" | ||
printf "%s\n" "${offset[$cont]}" | |||
printf "%s\n" "${size[$cont]}" | |||
printf "%s\n" "${cont}" | |||
dd if=$1 of=$file bs=1 obs=1 skip=$((${offset[$cont]})) count=$((${size[$cont]})) | |||
cont=$(($cont+1)) | |||
done | done | ||
</ | </pre> | ||
= ss_server1.fself = | =ss_server1.fself= | ||
== Class list == | ==Class list== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 316: | Line 298: | ||
|} | |} | ||
== Members == | ==Members== | ||
=== ss_init_if === | ===ss_init_if=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 327: | Line 309: | ||
|} | |} | ||
=== usb_dongle_authenticator === | ===usb_dongle_authenticator=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 340: | Line 322: | ||
|} | |} | ||
=== security_hardware_framework_if === | ===security_hardware_framework_if=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 349: | Line 331: | ||
|} | |} | ||
=== user_token_manager === | ===user_token_manager=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 360: | Line 342: | ||
|} | |} | ||
=== user_token_processor === | ===user_token_processor=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 375: | Line 357: | ||
|} | |} | ||
=== update_manager === | ===update_manager=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 506: | Line 488: | ||
|} | |} | ||
=== verify_util === | ===verify_util=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 527: | Line 509: | ||
|} | |} | ||
=== region_manager === | ===region_manager=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 538: | Line 520: | ||
|- | |- | ||
|get_update_status(%d) || || || | |get_update_status(%d) || || || | ||
|} | |} | ||
=== update_token_procesor === | ===update_token_procesor=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 559: | Line 537: | ||
|} | |} | ||
=== bd_updater === | ===bd_updater=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 602: | Line 580: | ||
|} | |} | ||
=== sc_updater === | ===sc_updater=== | ||
=== certified_file_verifier === | ===certified_file_verifier=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 622: | Line 593: | ||
|} | |} | ||
=== virtual_trm_manager === | ===virtual_trm_manager=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 716: | Line 687: | ||
|instanciate_objs || || || | |instanciate_objs || || || | ||
|- | |- | ||
|print_flash_range || || || | | print_flash_range || || || | ||
|- | |- | ||
|free || || || | |free || || || | ||
Line 725: | Line 696: | ||
|} | |} | ||
=== get_applicable_version === | ===get_applicable_version=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 736: | Line 707: | ||
|} | |} | ||
===sc_manager=== | |||
=== sc_manager === | |||
{|class="wikitable" | {|class="wikitable" | ||
Line 763: | Line 725: | ||
|} | |} | ||
=== 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_composite_region_entry_by_index(%d, 0x%llx) || || || | |get_composite_region_entry_by_index(%d, 0x%llx) || || || | ||
|- | |- | ||
|writev || || || | |writev || || || | ||
|} | |} | ||
=== bank_manager === | ===bank_manager=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 801: | Line 755: | ||
|} | |} | ||
=== capability_checker === | ===capability_checker=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 810: | Line 764: | ||
|} | |} | ||
=== if_proto === | ===if_proto=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 819: | Line 773: | ||
|} | |} | ||
=== ss_responder === | ===ss_responder=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 832: | Line 786: | ||
|} | |} | ||
=== port_id_table === | ===port_id_table=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 841: | Line 795: | ||
|} | |} | ||
=== pme_client === | ===pme_client=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 856: | Line 810: | ||
|} | |} | ||
=== pme_server === | ===pme_server=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 873: | Line 827: | ||
|} | |} | ||
=== page_bytestring === | ===page_bytestring=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 884: | Line 838: | ||
|} | |} | ||
=== ss_packet === | ===ss_packet=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 899: | Line 853: | ||
|} | |} | ||
=== ss_init_repository === | ===ss_init_repository=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 910: | Line 864: | ||
|} | |} | ||
=== sbm === | ===sbm=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 940: | Line 894: | ||
|sbm_spe_install_signal_handlers || || || | |sbm_spe_install_signal_handlers || || || | ||
|} | |} | ||