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 ( | [[Category:Software]] | ||
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" | 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 32: | ||
* 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 119: | ||
|} | |} | ||
== lv1.self 3.55 == | ==lv1.self 3.55== | ||
file table | file table | ||
Line 140: | Line 144: | ||
|} | |} | ||
== pme_init.conf | ==pme_init.conf Example== | ||
<pre> | <pre> | ||
Line 155: | Line 159: | ||
</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> | ||
chmod +x dump_lv1_embedded_files.sh | chmod +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 221: | ||
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 296: | ||
|} | |} | ||
== Members == | ==Members== | ||
=== ss_init_if === | ===ss_init_if=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 327: | Line 307: | ||
|} | |} | ||
=== usb_dongle_authenticator === | ===usb_dongle_authenticator=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 340: | Line 320: | ||
|} | |} | ||
=== security_hardware_framework_if === | ===security_hardware_framework_if=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 349: | Line 329: | ||
|} | |} | ||
=== user_token_manager === | ===user_token_manager=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 360: | Line 340: | ||
|} | |} | ||
=== user_token_processor === | ===user_token_processor=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 375: | Line 355: | ||
|} | |} | ||
=== update_manager === | ===update_manager=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 506: | Line 486: | ||
|} | |} | ||
=== verify_util === | ===verify_util=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 527: | Line 507: | ||
|} | |} | ||
=== region_manager === | ===region_manager=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 538: | Line 518: | ||
|- | |- | ||
|get_update_status(%d) || || || | |get_update_status(%d) || || || | ||
|} | |} | ||
=== update_token_procesor === | ===update_token_procesor=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 559: | Line 535: | ||
|} | |} | ||
=== bd_updater === | ===bd_updater=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 602: | Line 578: | ||
|} | |} | ||
=== sc_updater === | ===sc_updater=== | ||
=== certified_file_verifier === | ===certified_file_verifier=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 622: | Line 591: | ||
|} | |} | ||
=== virtual_trm_manager === | ===virtual_trm_manager=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 716: | Line 685: | ||
|instanciate_objs || || || | |instanciate_objs || || || | ||
|- | |- | ||
|print_flash_range || || || | | print_flash_range || || || | ||
|- | |- | ||
|free || || || | |free || || || | ||
Line 725: | Line 694: | ||
|} | |} | ||
=== get_applicable_version === | ===get_applicable_version=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 736: | Line 705: | ||
|} | |} | ||
===sc_manager=== | |||
=== sc_manager === | |||
{|class="wikitable" | {|class="wikitable" | ||
Line 763: | Line 723: | ||
|} | |} | ||
=== 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 753: | ||
|} | |} | ||
=== capability_checker === | ===capability_checker=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 810: | Line 762: | ||
|} | |} | ||
=== if_proto === | ===if_proto=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 819: | Line 771: | ||
|} | |} | ||
=== ss_responder === | ===ss_responder=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 832: | Line 784: | ||
|} | |} | ||
=== port_id_table === | ===port_id_table=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 841: | Line 793: | ||
|} | |} | ||
=== pme_client === | ===pme_client=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 856: | Line 808: | ||
|} | |} | ||
=== pme_server === | ===pme_server=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 873: | Line 825: | ||
|} | |} | ||
=== page_bytestring === | ===page_bytestring=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 884: | Line 836: | ||
|} | |} | ||
=== ss_packet === | ===ss_packet=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 899: | Line 851: | ||
|} | |} | ||
=== ss_init_repository === | ===ss_init_repository=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 910: | Line 862: | ||
|} | |} | ||
=== sbm === | ===sbm=== | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 940: | Line 892: | ||
|sbm_spe_install_signal_handlers || || || | |sbm_spe_install_signal_handlers || || || | ||
|} | |} | ||