Loader services: Difference between revisions

No edit summary
ldr:ro: LoadNrrEx is a really weird command.
Line 173: Line 173:
| 4 || [[#Initialize]]
| 4 || [[#Initialize]]
|-
|-
| 10 || [7.0.0+] ? (Takes a total of 0x18-bytes of input, an input handle and PID, no output)
| 10 || [7.0.0+] [[#LoadNrrEx]]
|}
|}


Line 205: Line 205:


== LoadNrr ==
== LoadNrr ==
[7.0.0+] A new 8-bit field at NRR + 0x33C (previously padding) must be 0 for this function to succeed.
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 250: Line 252:
| 2 || Always 0.
| 2 || Always 0.
|}
|}
== LoadNrrEx ==
Takes in a u64 nrr_address, a u64 nrr_size, a pid descriptor, and a process handle.
First, this validates that the pid descriptor matches the pid for the process handle sent to this->Initialize() earlier.
Then, this calls the same function as LoadNrr, except using the passed process handle instead of the one sent to Initialize.
When called from an ro:1 session, the field at NRR header + 0x33C must be 0x1. When called from ldr:ro session, the field at NRR header + 0x33C must be 0x0.


= ro:1 =
= ro:1 =