Difference between revisions of "CRO0"
Line 49: | Line 49: | ||
Section0 for CRO contains code, and CRO section1 contains symbols. | Section0 for CRO contains code, and CRO section1 contains symbols. | ||
+ | |||
+ | When the RO module loads the entire CRO into process memory(mapped in the 0x00100000-0x04000000 region), it modifies the mapped CRO data. The magic field is changed to "FIXD". Other data is modified too: an address relative to the CRO .text in the original CRO is completely different from the address relative to .text in the final mapped CRO. |
Revision as of 01:35, 18 January 2014
Offset | Size | Description |
---|---|---|
0x0 | 0x80 | SHA-256 hash-table, verified by CRR |
0x80 | 0x04 | Magic "CRO0" |
0x84 | 0x2C | ? |
0xB0 | 0x04 | Section0 offset |
0xB4 | 0x04 | Section0 size |
0xB8 | 0x04 | Section2 offset |
0xBC | 0x04 | Section2 size |
0xC0 | 0x04 | Section1 offset |
0xC4 | 0xBC | ? |
CRO with extension .cro is used for "DLLs". CRS with extension .crs can be used for storing "DLL" symbols as well. The end of the file is aligned to a 0x1000-byte boundary with 0xCC bytes. CRO0 files are usually stored under "romfs:/cro/".
The first hash-table entry hashes the 0x100-byte header following the hash-table. The following hash-table entries hash the sections specified in the header.
Section0 for CRO contains code, and CRO section1 contains symbols.
When the RO module loads the entire CRO into process memory(mapped in the 0x00100000-0x04000000 region), it modifies the mapped CRO data. The magic field is changed to "FIXD". Other data is modified too: an address relative to the CRO .text in the original CRO is completely different from the address relative to .text in the final mapped CRO.