NRO: Difference between revisions
Jump to navigation
Jump to search
FrasierCrane (talk | contribs) Finalized NRO format. (Except the NRO start, can't seem to find where this is touched at all. Hope this helps!) |
No edit summary |
||
| Line 115: | Line 115: | ||
| 0x18 | | 0x18 | ||
| 0x10 | | 0x10 | ||
| AssetSection [[ | | AssetSection [[NACP_Format|NACP]]. Used by the Homebrew Launcher. | ||
|- | |- | ||
| 0x28 | | 0x28 | ||
Revision as of 18:44, 19 May 2019
NRO is the executable format for non-ExeFS binaries.
It starts with the NRO-start structure then the "NRO" header and mainly describes .text, .rodata, and .data segments (like a short-form of ELF program headers):
NRO Start
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x4 | Unused |
| 0x4 | 0x4 | MOD0 offset |
| 0x8 | 0x8 | Padding |
NRO Header
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x4 | Magic "NRO0" |
| 0x4 | 0x4 | NRO Format Version (Always 0) |
| 0x8 | 4 | size (Total NRO filesize) |
| 0xC | 0x4 | Flags (Unused) |
| 0x10 | 0x8 * 3 | SegmentHeader[3] {.text, .ro, .data} |
| 0x28 | 0x4 | bssSize |
| 0x2C | 0x4 | Reserved (Unused) |
| 0x30 | 0x20 | Value of "build id" from ELF's GNU .note section. Contains variable sized digest, up to 32bytes. |
| 0x50 | 0x08 | Reserved (Unused) |
| 0x58 | 0x8 * 3 | SegmentHeader[3] {.apiInfo, .dynstr, .dynsym} |
SegmentHeader
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x4 | FileOffset |
| 0x4 | 0x4 | Size |
Assets
This is an optional custom assets section for homebrew, this is located at file offset {NroHeader.size}. See also switch-tools for implementation.
The below offsets are relative to the beginning of the assets section (AssetHeader).
AssetHeader
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x4 | Magic "ASET" |
| 0x4 | 0x4 | Format version, currently 0. |
| 0x8 | 0x10 | AssetSection icon. Used by the Homebrew Launcher. Like official icons, this is a 256x256 JPEG. |
| 0x18 | 0x10 | AssetSection NACP. Used by the Homebrew Launcher. |
| 0x28 | 0x10 | AssetSection romfs. Can be used by the application. |
AssetSection
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | Offset |
| 0x8 | 0x8 | Size, 0 indicates this section is empty. |