FIRM: Difference between revisions
→New_3DS FIRM: Missed one CFG_SYSPROT9. Separated two steps. |
→New_3DS FIRM: Another one >.< |
||
Line 71: | Line 71: | ||
For New3DS firmwares (NATIVE_FIRM, TWL_FIRM, ..), the ARM9 FIRM binary has an additional layer of crypto. At the end of each ARM9 binary, there's a plaintext loader. The format of the FIRM header is identical to regular 3DS FIRM(the RSA modulo is the same as regular 3DS too). | For New3DS firmwares (NATIVE_FIRM, TWL_FIRM, ..), the ARM9 FIRM binary has an additional layer of crypto. At the end of each ARM9 binary, there's a plaintext loader. The format of the FIRM header is identical to regular 3DS FIRM(the RSA modulo is the same as regular 3DS too). | ||
Before checking | Before checking [[CONFIG_Registers|CFG_SYSPROT9]] the loader main() does the following: | ||
* On [[9.5.0-22|9.5.0-X]]: executes a nop instruction with r0=0 and r1=<address of arm9binhdr+0x50>. | * On [[9.5.0-22|9.5.0-X]]: executes a nop instruction with r0=0 and r1=<address of arm9binhdr+0x50>. | ||
* Clears bit6 in [[AES_Registers|REG_AESKEYCNT]]. | * Clears bit6 in [[AES_Registers|REG_AESKEYCNT]]. |