Editing Making Isolated SPU Modules and Loaders
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: | ||
=Introduction= | =Introduction= | ||
Line 169: | Line 168: | ||
hexdump -C /mnt/arg1 | hexdump -C /mnt/arg1 | ||
</syntaxhighlight>}} | </syntaxhighlight>}} | ||
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> | |||
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> | |||
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> | |||
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> | |||
<br /><br /><br /> | |||
=Example: Making dump_encdec_keys.self= | =Example: Making dump_encdec_keys.self= | ||
Line 194: | Line 198: | ||
mv lv1ldr.elf dump_encdec_keys.elf | mv lv1ldr.elf dump_encdec_keys.elf | ||
# print program header of decrypted | # print program header of decrypted SPU module | ||
readelf -l dump_encdec_keys.elf | readelf -l dump_encdec_keys.elf | ||
Line 214: | Line 218: | ||
02 .unknown .unknown .unknown | 02 .unknown .unknown .unknown | ||
# entry point is 0x12c00 which is in | # entry point is 0x12c00 which is in first program segment at file offset 0x100 | ||
# now we kill all old code and data with 0s before we put our code there. | # now we kill all old code and data with 0s before we put our code there. | ||
# seek parameter is the offset of the | # seek parameter is the offset of the first program segment. | ||
# count parameter is the sum of the offset of the last program segment plus its size and | # count parameter is the sum of the offset of the last program segment plus its size and | ||
# minus the offset of the | # minus the offset of the first program segmnet. | ||
# killing old code and data with 0s is a good idea because 0x00000000 means stop opcode. | # killing old code and data with 0s is a good idea because 0x00000000 means stop opcode. | ||
Line 237: | Line 241: | ||
... | ... | ||
# now we copy our code to | # now we copy our code to SPU module | ||
# seek parameter is the entry point offset in file | # seek parameter is the entry point offset in file | ||
dd if=dump_encdec_keys.bin of=dump_encdec_keys.elf bs=1 seek=$((0x100)) conv=notrunc | dd if=dump_encdec_keys.bin of=dump_encdec_keys.elf bs=1 seek=$((0x100)) conv=notrunc | ||
# now build | # now build isolated SPU module | ||
iso_rebuilder dump_encdec_keys.elf dump_encdec_keys.self lv1ldr | iso_rebuilder dump_encdec_keys.elf dump_encdec_keys.self lv1ldr | ||
Line 298: | Line 302: | ||
hexdump -C /mnt/buf2 | hexdump -C /mnt/buf2 | ||
</syntaxhighlight>}} | </syntaxhighlight>}} | ||
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> | |||
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> | |||
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> | |||
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> | |||
<br /><br /><br /> |