App.pbm: Difference between revisions

From PS4 Developer wiki
Jump to navigation Jump to search
(Adding app.pbm info to the ps4 wiki)
 
No edit summary
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
== app.pbm ==
== app.pbm ==
location: [PS4VOLUME]/app/[[Productcode]]/app.pbm
location: [PS4VOLUME]/app/[[Productcode]]/app.pbm
it seems to always be in the same place as the app.pkg file  
it seems to always be in the same place as the app.pkg file  


* note it always seems to have a .backup made in the same location
* note it always seems to have a .backup made in the same location
== Tools to Read ==
[https://github.com/xXxTheDarkprogramerxXx/PS4_Tools PS4_Tools]


=== Example ===
=== Example ===
https://hexed.it/#base64+lzjb:app.pdbm%20example;AHBkYm1DVVNBQDAwMjY1AAwBkJoJBAgBBAUABNMKAAUB2AN/8sj6b2nVAHm6LJJjoD6aAAGPMVN2D5aXAI/k8AiSrlCI1h10WRSGAAAJWwAEdDB9tCD//AH8QvxC/EL8Qv8A//////////8A////////4KwAxeKLwhW1es0Awn4B0ig+V30AqW8n8ekTMq0AQCnu5ntuxA==
[https://hexed.it/#base64+lzjb:app.pdbm%20example;AHBkYm1DVVNBQDAwMjY1AAwBkJoJBAgBBAUABNMKAAUB2AN/8sj6b2nVAHm6LJJjoD6aAAGPMVN2D5aXAI/k8AiSrlCI1h10WRSGAAAJWwAEdDB9tCD//AH8QvxC/EL8Qv8A//////////8A////////4KwAxeKLwhW1es0Awn4B0ig+V30AqW8n8ekTMq0AQCnu5ntuxA== HEXed.it]
 
                public class PBMStruct
                {
                    public byte[] pbm_magic;                      // 0x000 - 0x7064626D //should be the same everywhere
                    public byte[] Productcode;                  // 0x004 - 0x435553413030323635 = "CUSA00265" remember to grab the extra bytes at the end 12
                    public uint emptyval;                      // 0x010 - not sure this just empty for some reason
                    public uint Unk1;                          // 0x014 - seems to always be 90 09 00 00
                    public uint Verion;                        // 0x018 - seems to always be 00 00 01 00
                    public uint emptyval2;                      // 0x01C - not sure this just empty for some reason
                    public uint Unk2;                          // 0x020 - examples 00 00 6C CE
                    public byte[] Padding;                      // 0x024 - seems to be padding length 3C
                    public byte[] Enc;                          // 0x060 - enc? hash ? length 20
                    public byte[] blankval;                    // 0x080 - blank values length 20
                    public byte[] UnkA0;                        // 0x0A0 - seems to always be 01 00 00 00
                    public byte[] blankval2;                    // 0x0A4 - seems to always be 00 00 00 00
                    public uint UnkA8;                          // 0x0A8 - Again not sure seems to always be 00 01 00 00
                    public uint Length;                        // 0x0AC - Length of file FF holder 5B 01 00 00
                    public byte[] BlockB0_BF;                  // 0x0B0 - this seems to be padding again B0- BF length 50
                    public byte[] FFStartHolder;                // 0x100 - Start of the FF holder - read the Length from the length attribute
                    public byte[] EndHash;                      // EOF for 20 bytes might be a hash? FC 50 65 C4 27 B0 7C 49 98 E8 26 3B 1D 85 E2 87 93 EB 38 F4 A3 F0 50 ..
                }
 
Example output
 
                pkg_magic:pdbm
 
                Productcode:CUSA00265
 
                emptyval:0
 
                Unk1:990
 
                Verion:10000
 
                emptyval2:0
 
                Unk2:AD30000
 
                Padding:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
 
                Enc:7FF2C8FA6F69D579BA2C9263A03E9A018F3153760F96978FE4F00892AE50881D
 
                blankval:0000000000000000000000000000000000000000000000000000000000000000
 
                UnkA0:01000000
 
                blankval2:00000000
 
                UnkA8:100
 
                Length:15B
 
                BlockB0_BF:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
 
                FFStartHolder:FFFFFFFF...FFFFFFE0
 
                EndHash:ACC5E28BC215B57ACDC27E01D2283E577DA96F27F1E91332AD4029EEE67B6EC4


{{File Formats}}
{{File Formats}}
<noinclude>[[Category:Main]]</noinclude>
<noinclude>[[Category:Main]]</noinclude>

Latest revision as of 19:38, 31 January 2022

app.pbm[edit | edit source]

location: [PS4VOLUME]/app/Productcode/app.pbm

it seems to always be in the same place as the app.pkg file

  • note it always seems to have a .backup made in the same location

Tools to Read[edit | edit source]

PS4_Tools


Example[edit | edit source]

HEXed.it

               public class PBMStruct
               {
                   public byte[] pbm_magic;                      // 0x000 - 0x7064626D //should be the same everywhere
                   public byte[] Productcode;                  // 0x004 - 0x435553413030323635 = "CUSA00265" remember to grab the extra bytes at the end 12
                   public uint emptyval;                       // 0x010 - not sure this just empty for some reason
                   public uint Unk1;                           // 0x014 - seems to always be 90 09 00 00
                   public uint Verion;                         // 0x018 - seems to always be 00 00 01 00
                   public uint emptyval2;                       // 0x01C - not sure this just empty for some reason
                   public uint Unk2;                           // 0x020 - examples 00 00 6C CE
                   public byte[] Padding;                      // 0x024 - seems to be padding length 3C
                   public byte[] Enc;                          // 0x060 - enc? hash ? length 20
                   public byte[] blankval;                     // 0x080 - blank values length 20
                   public byte[] UnkA0;                        // 0x0A0 - seems to always be 01 00 00 00 
                   public byte[] blankval2;                    // 0x0A4 - seems to always be 00 00 00 00 
                   public uint UnkA8;                          // 0x0A8 - Again not sure seems to always be 00 01 00 00
                   public uint Length;                         // 0x0AC - Length of file FF holder 5B 01 00 00
                   public byte[] BlockB0_BF;                   // 0x0B0 - this seems to be padding again B0- BF length 50
                   public byte[] FFStartHolder;                // 0x100 - Start of the FF holder - read the Length from the length attribute
                   public byte[] EndHash;                      // EOF for 20 bytes might be a hash? FC 50 65 C4 27 B0 7C 49 98 E8 26 3B 1D 85 E2 87 93 EB 38 F4 A3 F0 50 ..
               }

Example output

                pkg_magic:pdbm
                Productcode:CUSA00265
                emptyval:0
                Unk1:990
                Verion:10000
                emptyval2:0
                Unk2:AD30000
                Padding:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                Enc:7FF2C8FA6F69D579BA2C9263A03E9A018F3153760F96978FE4F00892AE50881D
                blankval:0000000000000000000000000000000000000000000000000000000000000000
                UnkA0:01000000
                blankval2:00000000
                UnkA8:100
                Length:15B
                BlockB0_BF:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                FFStartHolder:FFFFFFFF...FFFFFFE0
                EndHash:ACC5E28BC215B57ACDC27E01D2283E577DA96F27F1E91332AD4029EEE67B6EC4