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
|
Offset
|
Size
|
Description
|
0x0
|
4
|
Magic "NRO0"
|
0x4
|
4
|
?
|
0x8
|
4
|
Total NRO filesize
|
0xC
|
4
|
?
|
0x10
|
0x8 * 3
|
SegmentHeader[3]
|
0x28
|
0x4
|
bssSize
|
0x2C
|
0x4
|
?
|
0x30
|
0x20
|
Value of "build id" from ELF's GNU .note section. Contains variable sized digest, up to 32bytes.
|
0x50
|
0x10
|
Padding
|
0x60
|
0x10
|
?
|
Offset
|
Size
|
Description
|
0x0
|
4
|
FileOffset
|
0x4
|
4
|
Size
|