PS3 [DEV} PS3MFW Builder MOD

now i have to check and differentiate between 4.xx mfw and 3.xx mfw. guess the headers have changed.

on 4.xx dex mfw, for update_files tar and spkg_hdr tar it will use make_pup2, just like original.
took me some tries to figure it out, but now it seems to work. just have to test the resulting pup file.

edit
damn. stupid §0ny has used many different names...what a mess!
dunno if i can make it work for all versions because of that mess. maybe i have to make 2 different in the end, one for 3.xx and one for 4.xx

goddam. even permissions change on 3.41 and 3.55...those idiots
on 4.xx there is nothing like this

edit2
ok, take it back. they must have been on drugs or comletely drunken making update files
i think i'll concentrate only on 4.xx for now. 3.xx i will fix laters...
 
Last edited:
Hello,
I'm trying to patch a CFW (REBUG 4.46.1 REX) with OtherOS, but I have errors on "patchtool.exe". Please, can anyone help me?
Thanks.
Not sure if it will fix your problem but you might want to try the usual Windows permissions fix..
Try to set the mfwbuilder & the patchtool executables to always run as Administrator in Properties->Compatibility mode tab.
And maybe set an Antivirus exception for the mfwbuilder folder as well..
 
Last edited:
Hello,
I'm trying to patch a CFW (REBUG 4.46.1 REX) with OtherOS, but I have errors on "patchtool.exe". Please, can anyone help me?
Thanks.

Not sure if it will fix yours problem but you might want to try the usual Windows permissions fix..
Try to set the mfwbuilder & the patchtool executables to always run as Administrator in Properties->Compatibility mode tab.
And maybe set an Antivirus exception for the mfwbuilder folder as well..
sorry for ignoring this post :(

and yes, @bguerville is right, you have to run and set all ps3tools to admin to make them work. on psxtools there was a similar problem and another user has reminded me of to mention this problem. on my side, i never have such problems, cause i am always admin, so i do not have to think about this.

anyways, i think i have solved the problem with 3.xx/4.xx but i have to try first generated pup file.
anyways, the way §0ny has chosen and changed the permissions and owner/group names is really hilarious.

on another note, somehow dev_flash3 tars are way different on dex than on cex. on cex it seems they are messed up, cause they have no folders listed in archive. really weird. another additional reason i will stay with dex

here is my log
EXPERIMENTAL: Unpacking all dev_flash3 files.....
unpkg-ing file: dev_flash3_025.tar.aa.2012_06_30_064537
Executing command unpkg $pkg $dest
Executing shell pkgtool.exe -debug yes -action decrypt -type pkg -in {E:\_dump\PS3MFW\PS3MFW-OFW\update_files\dev_flash3_025.tar.aa.2012_06_30_064537} -out {E:\_dump\PS3MFW\PS3MFW-OFW\update_files\dev_flash3\dev_flash3_025.tar.aa.2012_06_30_064537}

Please WAIT.....copying unpacked OFW to MFW dirs.....
Executing command file copy {*}$args
******** Running task 07_add_folder **********
unpkg-ing file: dev_flash_000.tar.aa.2012_06_30_064328
Executing command unpkg $pkg $dest
Executing shell pkgtool.exe -debug yes -action decrypt -type pkg -in {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_000.tar.aa.2012_06_30_064328} -out {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_000.tar.aa.2012_06_30_064328.unpkg}

Extracting tar file: content into: PS3MFW-MFW
Executing command ::tar::untar $tar -dir $dest
Creating DEX 4.xx dev_flash tar file dev_flash_000.tar.aa.2012_06_30_064328.unpkg
Executing command ::tar::create_dex4_000 $tar $files
pkg-ing file: dev_flash_000.tar.aa.2012_06_30_064328.pkg
Executing command pkg $dir $pkg
Building "OLD PKG" retail package
Executing shell pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_000.tar.aa.2012_06_30_064328.unpkg} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_000.tar.aa.2012_06_30_064328.pkg}

unpkg-ing file: dev_flash_000.tar.aa.2012_06_30_064328
Executing command unpkg $pkg $dest
Executing shell pkgtool.exe -debug yes -action decrypt -type pkg -in {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_000.tar.aa.2012_06_30_064328} -out {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_000.tar.aa.2012_06_30_064328}

Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
pkg-ing / spkg-ing file: dev_flash_000.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_000.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_000.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_000.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
******** Running task 08_change_devflash_files **********
Modifying dev_flash file: SCE-PS3-NR-L-JPN.TTF
Found: SCE-PS3-NR-L-JPN.TTF in dev_flash_001.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/data/font/SCE-PS3-NR-L-JPN.TTF
Creating DEX 4.xx dev_flash tar file dev_flash_001.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_001.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_001.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_001.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_001.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: SCE-PS3-DH-R-CGB.TTF
Found: SCE-PS3-DH-R-CGB.TTF in dev_flash_002.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/data/font/SCE-PS3-DH-R-CGB.TTF
Creating DEX 4.xx dev_flash tar file dev_flash_002.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_002.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_002.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_002.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_002.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: SCE-PS3-CP-R-KANA.TTF
Found: SCE-PS3-CP-R-KANA.TTF in dev_flash_003.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/data/font/SCE-PS3-CP-R-KANA.TTF
Creating DEX 4.xx dev_flash tar file dev_flash_003.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_003.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_003.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_003.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_003.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: SCE-PS3-MT-R-LATIN.TTF
Found: SCE-PS3-MT-R-LATIN.TTF in dev_flash_004.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/data/font/SCE-PS3-MT-R-LATIN.TTF
Creating DEX 4.xx dev_flash tar file dev_flash_004.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_004.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_004.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_004.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_004.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: index.dat.nrm
Found: index.dat.nrm in dev_flash_005.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/vsh/etc/index.dat.nrm
Creating DEX 4.xx dev_flash tar file dev_flash_005.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_005.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_005.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_005.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_005.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: CA01.cer
Found: CA01.cer in dev_flash_006.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/data/cert/CA01.cer
Creating DEX 4.xx dev_flash tar file dev_flash_006.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_006.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_006.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_006.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_006.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: ps2_netemu.self
Found: ps2_netemu.self in dev_flash_007.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/ps2emu/ps2_netemu.self
Creating DEX 4.xx dev_flash tar file dev_flash_007.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_007.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_007.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_007.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_007.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: autodownload_plugin.sprx
Found: autodownload_plugin.sprx in dev_flash_008.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/vsh/module/autodownload_plugin.sprx
Creating DEX 4.xx dev_flash tar file dev_flash_008.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_008.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_008.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_008.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_008.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: audioplayer_plugin_mini.sprx
Found: audioplayer_plugin_mini.sprx in dev_flash_009.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/vsh/module/audioplayer_plugin_mini.sprx
Creating DEX 4.xx dev_flash tar file dev_flash_009.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_009.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_009.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_009.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_009.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: bdp_plugin.sprx
Found: bdp_plugin.sprx in dev_flash_010.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/vsh/module/bdp_plugin.sprx
Creating DEX 4.xx dev_flash tar file dev_flash_010.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_010.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_010.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_010.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_010.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: avc2_game_plugin.sprx
Found: avc2_game_plugin.sprx in dev_flash_011.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/vsh/module/avc2_game_plugin.sprx
Creating DEX 4.xx dev_flash tar file dev_flash_011.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_011.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_011.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_011.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_011.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: audioplayer_plugin.sprx
Found: audioplayer_plugin.sprx in dev_flash_012.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/vsh/module/audioplayer_plugin.sprx
Creating DEX 4.xx dev_flash tar file dev_flash_012.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_012.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_012.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_012.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_012.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: comboplay_plugin.sprx
Found: comboplay_plugin.sprx in dev_flash_013.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/vsh/module/comboplay_plugin.sprx
Creating DEX 4.xx dev_flash tar file dev_flash_013.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_013.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_013.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_013.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_013.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: avc_util.sprx
Found: avc_util.sprx in dev_flash_014.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/vsh/module/avc_util.sprx
Creating DEX 4.xx dev_flash tar file dev_flash_014.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_014.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_014.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_014.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_014.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: audioplayer_plugin_mini.rco
Found: audioplayer_plugin_mini.rco in dev_flash_015.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/vsh/resource/audioplayer_plugin_mini.rco
Creating DEX 4.xx dev_flash tar file dev_flash_015.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_015.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_015.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_015.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_015.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: audioplayer_plugin_util.rco
Found: audioplayer_plugin_util.rco in dev_flash_016.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/vsh/resource/audioplayer_plugin_util.rco
Creating DEX 4.xx dev_flash tar file dev_flash_016.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_016.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_016.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_016.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_016.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: audioplayer_plugin.rco
Found: audioplayer_plugin.rco in dev_flash_017.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/vsh/resource/audioplayer_plugin.rco
Creating DEX 4.xx dev_flash tar file dev_flash_017.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_017.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_017.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_017.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_017.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: autodownload_plugin.rco
Found: autodownload_plugin.rco in dev_flash_018.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/vsh/resource/autodownload_plugin.rco
Creating DEX 4.xx dev_flash tar file dev_flash_018.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_018.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_018.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_018.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_018.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: flashATRAC.pic
Found: flashATRAC.pic in dev_flash_019.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/sys/external/flashATRAC.pic
Creating DEX 4.xx dev_flash tar file dev_flash_019.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_019.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_019.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_019.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_019.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: ps1_emu.self
Found: ps1_emu.self in dev_flash_020.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/ps1emu/ps1_emu.self
Creating DEX 4.xx dev_flash tar file dev_flash_020.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_020.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_020.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_020.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_020.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: CprmModule.spu.isoself
Found: CprmModule.spu.isoself in dev_flash_021.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/bdplayer/CprmModule.spu.isoself
Creating DEX 4.xx dev_flash tar file dev_flash_021.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_021.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_021.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_021.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_021.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: AacsModule.spu.isoself
Found: AacsModule.spu.isoself in dev_flash_022.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/bdplayer/AacsModule.spu.isoself
Creating DEX 4.xx dev_flash tar file dev_flash_022.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_022.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_022.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_022.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_022.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: bdp_BDMV.self
Found: bdp_BDMV.self in dev_flash_023.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/bdplayer/bdp_BDMV.self
Creating DEX 4.xx dev_flash tar file dev_flash_023.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_023.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_023.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_023.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_023.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
Modifying dev_flash file: stage2.dex.bak
Found: stage2.dex.bak in dev_flash_024.tar.aa.2012_06_30_064328
Extracting tar file: content into: dev_flash
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash/dev_flash/rebug/cobra/stage2.dex.bak
Creating DEX 4.xx dev_flash tar file dev_flash_024.tar.aa.2012_06_30_064328
Executing command ::tar::create_dex4_content $tar $files
pkg-ing / spkg-ing file: dev_flash_024.tar.aa.2012_06_30_064328
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash\dev_flash_024.tar.aa.2012_06_30_064328} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash_024.tar.aa.2012_06_30_064328}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash_024.tar.aa.2012_06_30_064328.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
******** Running task 09_change_devflash3_files **********
Modifying dev_flash3 file CRL1
Found CRL1 in dev_flash3_025.tar.aa.2012_06_30_064537
Extracting tar file: content into: dev_flash3
Executing command ::tar::untar $tar -dir $dest
The file to change is in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash3/dev_flash3/data-revoke/crl/CRL1
Creating DEX 4.xx dev_flash3 tar file dev_flash3_025.tar.aa.2012_06_30_064537
Executing command ::tar::create_dex4_dev3 $tar $files
pkg-ing / spkg-ing file: dev_flash3_025.tar.aa.2012_06_30_064537
Executing command pkg_spkg $dir $pkg
Building "NEW PKG & SPKG" retail package(s).....
Executing shell new_pkg retail {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash3\dev_flash3_025.tar.aa.2012_06_30_064537} {E:\_dump\PS3MFW\PS3MFW-MFW\update_files\dev_flash3_025.tar.aa.2012_06_30_064537}

searching for spkg
spkg found in E:/_dump/PS3MFW/PS3MFW-MFW/update_files/dev_flash3_025.tar.aa.2012_06_30_064537.spkg_hdr.1
copy new spkg into spkg dir
Executing command file copy {*}$args
removing spkg from working dir
Executing command file delete {*}$args
******** Completed tasks **********
custom dev_flash deleted
custom dev_flash3 deleted
custom CORE_OS deleted
custom metadata deleted
spkg's added to list
pkg's added to list
img's added to list
dev_flash3 added to list
dev_flash added to list
Please WAIT....Building new PUP TAR file(s).....
Creating DEX 4.xx update tar file update_files.tar
Executing command ::tar::create_dex4_update $tar $files
"update_files.tar" created
Creating DEX 4.xx spkg tar file spkg_hdr.tar
Executing command ::tar::create_dex4_spkg $tar $files
"spkg_hdr.tar" created
Executing command file delete -force -- ${::OUT_FILE}
Getting PUP build from: ccapi250_core.D-REX.SC11.PS3UPDAT.PUP
Executing command pup_get_build ${::IN_FILE}
PUP original build:99999
Packing Modified PUP:"test_4.21.PS3UPDAT.PUP", BUILD:99999
Executing command pup_create ${dir} ${pup} $build
Executing shell puppack D:/_Files/PSSaves/PS3/Toolz/CFW/fw/test_4.21.PS3UPDAT.PUP {E:\_dump\PS3MFW\PS3MFW-MFW} 99999

CUSTOM FIMWARE VER:4.21 BUILD COMPLETE!!!
i have processed all devflash tars and also devflash3
 
Last edited:
sorry for ignoring this post :(

and yes, @bguerville is right, you have to run and set all ps3tools to admin to make them work. on psxtools there was a similar problem and another user has reminded me of to mention this problem. on my side, i never have such problems, cause i am always admin, so i do not have to think about this.

anyways, i think i have solved the problem with 3.xx/4.xx but i have to try first generated pup file.
anyways, the way §0ny has chosen and changed the permissions and owner/group names is really hilarious.

on another note, somehow dev_flash3 tars are way different on dex than on cex. on cex it seems they are messed up, cause they have no folders listed in archive. really weird. another additional reason i will stay with dex

Fyi, both DEX / DECR have 0 reason to include dev_flash3, due to bd/dvd movie playback not being supported, maybe that's why they did it like that? I never thought about messing with it much though


Sent from my iPhone using Tapatalk
 
update
generated firmware installed just fine with no problems. psp isos work with cobra, psx works, ps2 isos work (+config) and as well ps3 game isos. movies i do not have at hand, so if someone else could test this?

guess i can release it, after i have cleaned up and polished some things. for now, it will only support tarfix for 4.xx completely, but i will try to add 3.xx as well.
 
update
generated firmware installed just fine with no problems. psp isos work with cobra, psx works, ps2 isos work (+config) and as well ps3 game isos. movies i do not have at hand, so if someone else could test this?

guess i can release it, after i have cleaned up and polished some things. for now, it will only support tarfix for 4.xx completely, but i will try to add 3.xx as well.
It's already a very nice step forward... [emoji6]
 
ok, so here it is. added now 3.41 and 3.55 as well as 3.55 dex for fixed tarballs

updated source on my github
https://github.com/haxxxen/ps3mfw-builder-0.2.1-mod

mirror to download zip archive
https://dl.dropboxusercontent.com/u/63377561/misc/ps3mfw-builder-0.2.1-mod.zip

to fix an already modified mfw/cfw, you have to choose "replace_devflash_manual" task, "replace_devflash3_manual" task and "add folder" task. on replace_devflash_manual task you have to add from every devflash pkg a single file 001-XXX and when script is running, just press ok without any doings. same with replace_devflash3_manual task. just leave it and press ok when script asks for. on add_folder task leave box empty and the script will do its magic ;)

samples for replace_devflash_manual are in replace_devflash folder, for rebug 4.21 and ofw 4.81.

edit
ahhh, just 've forgot the most important thing. you have to select EITHER 3.41CEX, 3.55CEX, 3.xxDEX, 4.xx DEX or 4.xx CEX base firmware on global options. also you have to select extract devflash3 option.
 
Last edited:
Hi guys :)

@haxxxen, I opened two issues on your git. I'm sharing them here so some people may help to solve them:
https://github.com/haxxxen/ps3mfw-builder-0.2.1-mod/issues

Anyway I'll continue to investigate on my side.

The more weird is that I get brick if using self_rebuilder/iso_rebuilder options to resign selfs...

It could be because of LV0 signed elf was decrypted by Scetool, but isolated loaders were decrypted by using unself instead.

I had a similar issue in the past, so in order to avoid bricking, I had to unself LV0 first then unself 4 loaders, then used iso-rebuilder to resign elfs.

Try doing this manually, see if it fixes
 
It could be because of LV0 signed elf was decrypted by Scetool, but isolated loaders were decrypted by using unself instead.

I had a similar issue in the past, so in order to avoid bricking, I had to unself LV0 first then unself 4 loaders, then used iso-rebuilder to resign elfs.

Try doing this manually, see if it fixes

This mod does not use unself at all. It uses scetool to decrypt selfs in all cases.

TCL "unself" function that use scetool in fact:
Code:
# .self functions
proc decrypt_self {in out} {
  debug "Decrypting self file: [file tail $in]"
  catch_die {unself $in $out} "Could not decrypt file: [file tail $in]"
}
proc unself {in out} {
  set FIN [file nativename $in]
   set FOUT [file nativename $out]

  shell ${::SCETOOL} -d $FIN $FOUT
}

then, extracted from the log file:
Code:
...
Decrypting self file: lv0
Executing command unself $in $out
Executing shell scetool -d {blablabla\PS3MFW-MFW\update_files\CORE_OS_PACKAGE\lv0} {blablabla\PS3MFW-MFW\update_files\CORE_OS_PACKAGE\lv0.elf}
...
Executing shell lv0tool.exe -option export -filename lv0.elf -filepath blablabla/PS3MFW-MFW/update_files/CORE_OS_PACKAGE
...
Decrypting self file: isoldr.self
Executing command unself $in $out
Executing shell scetool -d {blablabla\PS3MFW-MFW\update_files\CORE_OS_PACKAGE\isoldr.self} {blablabla\PS3MFW-MFW\update_files\CORE_OS_PACKAGE\isoldr.self.elf}
...

So, should we use unself instead of scetool to decrypt if using iso_rebuilder/self_rebuilder to re-sign?

Then, what's the best decrypt/sign? scetool or unself/iso_rebuilder/self_rebuilder?

I need to find more time to try manualy. I never played manualy with self files before...
 
Last edited:
This mod does not use unself at all. It uses scetool to decrypt selfs in all cases.

TCL "unself" function that use scetool in fact:
Code:
# .self functions
proc decrypt_self {in out} {
  debug "Decrypting self file: [file tail $in]"
  catch_die {unself $in $out} "Could not decrypt file: [file tail $in]"
}
proc unself {in out} {
  set FIN [file nativename $in]
   set FOUT [file nativename $out]

  shell ${::SCETOOL} -d $FIN $FOUT
}

then, extracted from the log file:
Code:
...
Decrypting self file: lv0
Executing command unself $in $out
Executing shell scetool -d {blablabla\PS3MFW-MFW\update_files\CORE_OS_PACKAGE\lv0} {blablabla\PS3MFW-MFW\update_files\CORE_OS_PACKAGE\lv0.elf}
...
Executing shell lv0tool.exe -option export -filename lv0.elf -filepath blablabla/PS3MFW-MFW/update_files/CORE_OS_PACKAGE
...
Decrypting self file: isoldr.self
Executing command unself $in $out
Executing shell scetool -d {blablabla\PS3MFW-MFW\update_files\CORE_OS_PACKAGE\isoldr.self} {blablabla\PS3MFW-MFW\update_files\CORE_OS_PACKAGE\isoldr.self.elf}
...

So, should we use unself instead of scetool to decrypt if using iso_rebuilder/self_rebuilder to re-sign?

Then, what's the best decrypt/sign? scetool or unself/iso_rebuilder/self_rebuilder?

I need to find more time to try manualy. I never played manualy with self files before...

Yes switch to unself instead of scetool.

That should fix it. Scetool removes unnecessary data in the header that iso rebuilder expects it to have


Sent from my iPhone using Tapatalk
 
So, made some noob tests (bricked a lot :p) :


Test conditions:
Using OFW 4.81 pup as base.
Keys up to date (keys from PS3MFW-mod git).
Unself compiled with cygwin (32 bits, GCC 4.9.3), from Evilnat's sources : https://github.com/Evilnat/ps3tools-master_3.XX-4.XX
Using the other tools (SCEtool, iso_rebuilder, lv0tool) ... from PS3MFW-mod git
Only applying ECDSA patches to isoldr and spu_pkg_rvk_verifier (Dual Boot patches)


Test 1 (legacy PS3MFW-mod default routine using only SCEtool) :
- Decrypted lv0 with : SCEtool
- Extracted loaders from lv0.elf with lv0tool
- Decrypted isoldr.self and spu_pkg_rvk_verifier.self with : SCEtool
- Applyed patches to isoldr.elf and spu_pkg_rvk_verifier.elf.
- Resigned isoldr.elf and spu_pkg_rvk_verifier.elf with : SCEtool
- Imported loaders to lv0.elf with lv0tool.
- Resigned lv0.elf with : SCEtool
Result : WORKS!

Test 2 (actual PS3MFW-mod default routine) :
- Decrypted lv0 with : SCEtool
- Extracted loaders from lv0.elf with lv0tool
- Decrypted isoldr.self and spu_pkg_rvk_verifier.self with : SCEtool
- Applyed patches to isoldr.elf and spu_pkg_rvk_verifier.elf.
- Resigned isoldr.elf and spu_pkg_rvk_verifier.elf with : iso_rebuilder
- Imported loaders to lv0.elf with lv0tool.
- Resigned lv0.elf with : iso_rebuilder
Result : BRICK!

Test 3 (probably stupid) :
- Decrypted lv0 with : SCEtool
- Extracted loaders from lv0.elf with lv0tool
- Decrypted isoldr.self and spu_pkg_rvk_verifier.self with : unself
- Applyed patches to isoldr.elf and spu_pkg_rvk_verifier.elf.
- Resigned isoldr.elf and spu_pkg_rvk_verifier.elf with : iso_rebuilder
- Imported loaders to lv0.elf with lv0tool.
- Resigned lv0.elf with : iso_rebuilder
Result : BRICK!

Test 4 (using only unself and iso_rebuilder) :
- Decrypted lv0 with : unself
- Extracted loaders from lv0.elf with lv0tool
- Decrypted isoldr.self and spu_pkg_rvk_verifier.self with : unself
- Applyed patches to isoldr.elf and spu_pkg_rvk_verifier.elf.
- Resigned isoldr.elf and spu_pkg_rvk_verifier.elf with : iso_rebuilder
- Imported loaders to lv0.elf with lv0tool.
- Resigned lv0.elf with : iso_rebuilder
Result : BRICK! (hoho...)

Test 5 (using scetool for lv0 only) :
- Decrypted lv0 with : SCEtool
- Extracted loaders from lv0.elf with lv0tool
- Decrypted isoldr.self and spu_pkg_rvk_verifier.self with : unself
- Applyed patches to isoldr.elf and spu_pkg_rvk_verifier.elf.
- Resigned isoldr.elf and spu_pkg_rvk_verifier.elf with : iso_rebuilder
- Imported loaders to lv0.elf with lv0tool.
- Resigned lv0.elf with : SCEtool
Result : WORKS!

At this stage, the only common point for a bricked configuration is by using iso_rebuilder for the lv0...
So tryed:

Test 6 (using self_rebuilder for lv0 only) :
- Decrypted lv0 with : unself
- Extracted loaders from lv0.elf with lv0tool
- Decrypted isoldr.self and spu_pkg_rvk_verifier.self with : unself
- Applyed patches to isoldr.elf and spu_pkg_rvk_verifier.elf.
- Resigned isoldr.elf and spu_pkg_rvk_verifier.elf with : iso_rebuilder
- Imported loaders to lv0.elf with lv0tool.
- Resigned lv0.elf with : self_rebuilder
Result : BRICK! :(

And even more stupid not working tries....

Right now... I don't know. Maybe need another better version of unpkg (glevand's version?). Maybe (certainly) I'm doing something wrong?
 
So, made some noob tests (bricked a lot :p) :


Test conditions:
Using OFW 4.81 pup as base.
Keys up to date (keys from PS3MFW-mod git).
Unself compiled with cygwin (32 bits, GCC 4.9.3), from Evilnat's sources : https://github.com/Evilnat/ps3tools-master_3.XX-4.XX
Using the other tools (SCEtool, iso_rebuilder, lv0tool) ... from PS3MFW-mod git
Only applying ECDSA patches to isoldr and spu_pkg_rvk_verifier (Dual Boot patches)


Test 1 (legacy PS3MFW-mod default routine using only SCEtool) :
- Decrypted lv0 with : SCEtool
- Extracted loaders from lv0.elf with lv0tool
- Decrypted isoldr.self and spu_pkg_rvk_verifier.self with : SCEtool
- Applyed patches to isoldr.elf and spu_pkg_rvk_verifier.elf.
- Resigned isoldr.elf and spu_pkg_rvk_verifier.elf with : SCEtool
- Imported loaders to lv0.elf with lv0tool.
- Resigned lv0.elf with : SCEtool
Result : WORKS!

Test 2 (actual PS3MFW-mod default routine) :
- Decrypted lv0 with : SCEtool
- Extracted loaders from lv0.elf with lv0tool
- Decrypted isoldr.self and spu_pkg_rvk_verifier.self with : SCEtool
- Applyed patches to isoldr.elf and spu_pkg_rvk_verifier.elf.
- Resigned isoldr.elf and spu_pkg_rvk_verifier.elf with : iso_rebuilder
- Imported loaders to lv0.elf with lv0tool.
- Resigned lv0.elf with : iso_rebuilder
Result : BRICK!

Test 3 (probably stupid) :
- Decrypted lv0 with : SCEtool
- Extracted loaders from lv0.elf with lv0tool
- Decrypted isoldr.self and spu_pkg_rvk_verifier.self with : unself
- Applyed patches to isoldr.elf and spu_pkg_rvk_verifier.elf.
- Resigned isoldr.elf and spu_pkg_rvk_verifier.elf with : iso_rebuilder
- Imported loaders to lv0.elf with lv0tool.
- Resigned lv0.elf with : iso_rebuilder
Result : BRICK!

Test 4 (using only unself and iso_rebuilder) :
- Decrypted lv0 with : unself
- Extracted loaders from lv0.elf with lv0tool
- Decrypted isoldr.self and spu_pkg_rvk_verifier.self with : unself
- Applyed patches to isoldr.elf and spu_pkg_rvk_verifier.elf.
- Resigned isoldr.elf and spu_pkg_rvk_verifier.elf with : iso_rebuilder
- Imported loaders to lv0.elf with lv0tool.
- Resigned lv0.elf with : iso_rebuilder
Result : BRICK! (hoho...)

Test 5 (using scetool for lv0 only) :
- Decrypted lv0 with : SCEtool
- Extracted loaders from lv0.elf with lv0tool
- Decrypted isoldr.self and spu_pkg_rvk_verifier.self with : unself
- Applyed patches to isoldr.elf and spu_pkg_rvk_verifier.elf.
- Resigned isoldr.elf and spu_pkg_rvk_verifier.elf with : iso_rebuilder
- Imported loaders to lv0.elf with lv0tool.
- Resigned lv0.elf with : SCEtool
Result : WORKS!

At this stage, the only common point for a bricked configuration is by using iso_rebuilder for the lv0...
So tryed:

Test 6 (using self_rebuilder for lv0 only) :
- Decrypted lv0 with : unself
- Extracted loaders from lv0.elf with lv0tool
- Decrypted isoldr.self and spu_pkg_rvk_verifier.self with : unself
- Applyed patches to isoldr.elf and spu_pkg_rvk_verifier.elf.
- Resigned isoldr.elf and spu_pkg_rvk_verifier.elf with : iso_rebuilder
- Imported loaders to lv0.elf with lv0tool.
- Resigned lv0.elf with : self_rebuilder
Result : BRICK! :(

And even more stupid not working tries....

Right now... I don't know. Maybe need another better version of unpkg (glevand's version?). Maybe (certainly) I'm doing something wrong?

Iso-rebuilder should only be used to sign isolated loaders (appldr, lv1ldr, lv2ldr and isoldr) inside lv0.elf. Then use lv0tool to inject those 4 ldrs to lv0.elf

Everything else has to be signed with self rebuilder including lv0.elf if my memory serves right.

I only used this iso/self rebuilder for making DB OFW while back. Because I could not use those for making REX CFWs due to the size limit inside CoreOS (roughly about 7MB)


Sent from my iPhone using Tapatalk
 
Iso-rebuilder should only be used to sign isolated loaders (appldr, lv1ldr, lv2ldr and isoldr) inside lv0.elf. Then use lv0tool to inject those 4 ldrs to lv0.elf

Everything else has to be signed with self rebuilder including lv0.elf if my memory serves right.

I only used this iso/self rebuilder for making DB OFW while back. Because I could not use those for making REX CFWs due to the size limit inside CoreOS (roughly about 7MB)


Sent from my iPhone using Tapatalk
That's what I finally understood. So it correspond to my failed test number 6 except for the rvk_verifier module where I used iso_rebuilder instead of self_rebuilder. But using iso_rebuilder for this elf worked in test 5. So I doubt it is the main issue. Will try anyway.

PS: no news from haxxxen. Hope all is fine for him.
 
That's what I finally understood. So it correspond to my failed test number 6 except for the rvk_verifier module where I used iso_rebuilder instead of self_rebuilder. But using iso_rebuilder for this elf worked in test 5. So I doubt it is the main issue. Will try anyway.

PS: no news from haxxxen. Hope all is fine for him.

Could be an issue with lv1ldr's scrambling stuff not so sure why it is causing bricks.
 
I always wondered why mfw builder dev(s) did not stick to using one single tool instead of 3 or more different executables?
It would have been better to choose an open source tool & modify it slightly if required to support all operations (decryption, encryption, compression etc..) on all self types...
 
SCEtool has an option to create a template of the original file for rebuilding purposes, have you tryed this in actual version of PS3MFW-mod ?
 
The template option is what mysis used to sign video_rec.sprx & xai_plugin.sprx properly. It can be used on elf or prx executables, it's safer & more practical too.
Here is an extract of the sign.bat batch file:
Code:
scetool --template=xai_plugin_template.sprx --verbose --sce-type=SELF --compress-data=TRUE --encrypt videorec.prx videorec.sprx 
scetool --template=xai_plugin_template.sprx --verbose --sce-type=SELF --compress-data=TRUE --encrypt xai_plugin.prx xai_plugin.sprx
Note that the files with "_template" appended to their name are simply the original s#ny files renamed for practical reasons.
 
Last edited:
I think I finaly found the main issue :)

My feeling was it's an issue with the LV0 decryption/signature that's wrong using unself/iso_rebuilder (or self_rebuilder) versus using SCEtool (test4 vs test5).
So, I compared the 4.81 lv0 keys used by SCEtool (the "keys" file) and those used by the PS3tools (the binary files lv0-xxxx-481).
Then I found that the ctype used by SCEtool as been set to 0x33 versus 0x30 for the PS3tools...

I modified the LV0-ctype-481 with the 0x33 value, done test4 again, and it works!!!

I don't know what are those curve types exactly but I had a quick look, it seems there is many other keys in this case (lv1...).
 
Back
Top