ソードアート・オンライン -インフィニティ・モーメント-
|
|
ムギ | Date: Wednesday, 2013-04-03, 10:16 PM | Message # 1 |
Rank: Nerdy Presence
Messages: 203
Reputation: 2
Status: Offline
|
Relevant game data is inside install.dat located at PSP_GAME/INSDIR/
this file is a standard CRI .cpk archive encrypted with sony's "PSN" encryption. i dont know the real name of it. file has a PGD header. there's plenty of tools to decrypt. after decryption, use CRI's cpktools to extract.
files found inside common/script/sctipt consist of following data:
0x0:first file start address 0x4: first file size 0x8: second file start address 0xC: second file size 0x10: FFFF FFFF / 4 garbage bytes (possibly text color in RGBA, untested!) 0x14: not known yet 0x18: not known yet
Quote (example file script/script/00no - text data) 4Fに移動|移動しない 転移オブジェクト 移動するを選択
移動しないを選択
飛び先がない!
1Fに移動|移動しない 転移オブジェクト 移動するを選択
移動しないを選択
飛び先がない!
this data would be enough to edit a lot of the game script already. will research more on a later date.
note: it is necessary to re-encrypt the .cpk file back to PGD after modifying, othervise the game will not execute.
|
|
| |
ムギ | Date: Thursday, 2013-04-04, 10:47 PM | Message # 2 |
Rank: Nerdy Presence
Messages: 203
Reputation: 2
Status: Offline
| OFS3 filesystem:
Quote (Example file: psp/ui/storage.bin) 0x00: 4F46 5333 1000 0000 0200 4000 30A3 0200 0x10: 0300 0000 3000 0000 00DF 0100 30A3 0200 0x20: 30DF 0100 0CC3 0000 41A3 0200 70A2 0200 0x30: A000 0000 4FA3 0200 0000 0000 0000 0000
Quote (OFS3 header (16-bytes)) 0x00: [4-bytes] OFS3 file signature (it's always 4F46 5333) 0x04: [4-bytes] OFS3 Header size (it's always 1000 0000) 0x08: [4-bytes] Unknown value 0x0c: [4-bytes] Nametable Start address (this points to the end of the file if nametable doesnt exist)
Quote ( OFS3 Filetable (variable size)) data table starts with a 4-byte value indicating file count. each file entry consists of 12-bytes
0x10: [4-bytes] Number of files
0x14: [4-bytes] File Start Address 0x18: [4-bytes] File Length 0x1c: [4-bytes] Filename Position
[the pattern of 0x14 -> 0x1C repeats as many times as there are files inside the container]
Note: If 0xC points to file end (no nametable present) the value of 0x1C (name position) is omitted, and the structure only consists of File Start Address + File Length values.
note 2: there seems to be a large number of variables for the OFS3 found within the game, particularly the packs containing model files seem to have a table formatting completely different.
Note: the addresses displayed within OFS3 Filetable are relative to Data, which means you need to either add 0x10 (16 bytes) to every address, or delete the first 16 bytes (the OFS3 File header) prior to extracting.
|
|
| |
ムギ | Date: Friday, 2013-04-05, 1:31 AM | Message # 3 |
Rank: Nerdy Presence
Messages: 203
Reputation: 2
Status: Offline
| texture files seem to be .tm2 (TIM2) image format and model data is psp generic gmo.
|
|
| |
ムギ | Date: Tuesday, 2013-05-07, 11:43 PM | Message # 4 |
Rank: Nerdy Presence
Messages: 203
Reputation: 2
Status: Offline
| note: following data is generally very easy to obtain with little to no effort on google. it is posted here merely for informative purposes.
PGD Encryption structure:
Quote (Header) 0x00: PGD File signature followed by Encryption mode and version flags. 0x10: Encrypted hash for Header (128-bit AES) 0x20: hash egenerated from key located at 0x10 0x30: Encrypted PGD Header (0x20 in size) 0x60: File hash. 0x70: Hash generated from the sceIoIoctl key. 0x80: Encrypted hash generated from the sceIoIoctl key. 0x90: Data hash. 0xA0: Encrypted data hash.
Quote (Encrypted PGD Header Structure) this part of the header is located at 0x30
the Header is 0x20 in size and consists of following: 0x30: Hash Key 0x40: 000 0000 (blank value) 0x44: Length of data when decrypted 0x48: Blocksize of encryption 0x4C: Address of Data Hash
as i mentioned in the opening post, a lot of tools are able to decrypt the PGD data files. however i have been unable to locate a tool able to re-encrypt files using this algorithm. If you can code one or know where to obtain such a thing, i'd be very interested about it.
meanwhile you can make the game run decrypted by patching the executable. find a value of C931 at 0x16BD0 in (decrypted) eboot.bin and change it into CE31
this will allow the game to load the installdata in it's decrypted form.
Edit: fixed a mistake on the values, C901/CE01 are actually C931 and CE31
Message edited by ムギ - Tuesday, 2013-07-02, 8:06 PM |
|
| |
yin8086 | Date: Tuesday, 2013-07-02, 11:27 AM | Message # 5 |
Rank: Newcomer
Messages: 1
Reputation: 0
Status: Offline
| Quote (ムギ) meanwhile you can make the game run decrypted by patching the executable. find a value of C901 at 0x16BD0 in (decrypted) eboot.bin and change it into CE01
this will allow the game to load the installdata in it's decrypted form.
Thanks for this. It really help with our Chinese translation project. And also a mistake, value should be C9 31 not c9 01 change C9 31 to CE 31 maybe right.
Message edited by yin8086 - Tuesday, 2013-07-02, 11:28 AM |
|
| |
ムギ | Date: Tuesday, 2013-07-02, 8:04 PM | Message # 6 |
Rank: Nerdy Presence
Messages: 203
Reputation: 2
Status: Offline
| Quote (yin8086) Thanks for this. It really help with our Chinese translation project. And also a mistake, value should be C9 31 not c9 01 change C9 31 to CE 31 maybe right.
you're welcome
and yes, you're correct. not sure why i wrote C901, it's indeed C931
|
|
| |
sazuke91 | Date: Saturday, 2013-11-09, 12:58 PM | Message # 7 |
Rank: Newcomer
Messages: 3
Reputation: 0
Status: Offline
| please, can you tell me how to open all text files in "common/script/sctipt" ><
|
|
| |
ムギ | Date: Saturday, 2013-11-09, 2:13 PM | Message # 8 |
Rank: Nerdy Presence
Messages: 203
Reputation: 2
Status: Offline
| Quote sazuke91 (  ) please, can you tell me how to open all text files in "common/script/sctipt" ><
the contents of common/script/script is described in the first post.
each file in that folder consists of 2 files: the text layout data and the text data itself. the file header is 0x20 in size and each file entry is 0x8 in size.
0x00: start address of the first file 0x04: length of first file 0x08: start address of second file 0x0C: length of second file 0x10: FFFF FFFF 0x14: unknonw bytes 0x18: unknown bytes
after extracting the text file out, you can view it with notepad or similar text editor. (assuming your system supports japanese text)
|
|
| |
sazuke91 | Date: Saturday, 2013-11-09, 4:19 PM | Message # 9 |
Rank: Newcomer
Messages: 3
Reputation: 0
Status: Offline
| I am sorry. how to extract it ? hex editor ? I am noob at this but I interested to learn Added (2013-11-09, 4:19 PM) --------------------------------------------- no problem, i already found out how to extract it. and i able to see the text when i change the unicode to UTF-8 Thank you ^^
|
|
| |
ムギ | Date: Saturday, 2013-11-09, 6:16 PM | Message # 10 |
Rank: Nerdy Presence
Messages: 203
Reputation: 2
Status: Offline
| well, yes. you can just copy the pieces out with hex editor if you want, it's fairly painless for a file this simple in structure.
myself, i use a generic instruction based extractor for files like this, takes a minute to write instructions for, and then it's just using extract.bat and repack.bat
good to know you figured it out though, have fun poking at them :P
|
|
| |