|
|
1 day ago | |
|---|---|---|
| arm11 | 1 month ago | |
| arm9 | 1 day ago | |
| common | 2 months ago | |
| data | 1 month ago | |
| resources | 3 weeks ago | |
| utils | 5 days ago | |
| .gitignore | 1 week ago | |
| .travis.yml | 1 month ago | |
| HelloScript.gm9 | 2 months ago | |
| HelloSpaghetti.gm9 | 1 day ago | |
| Makefile | 1 day ago | |
| Makefile.common | 1 week ago | |
| README.md | 2 days ago | |
| license.txt | 1 year ago |

A full access file browser for the 3DS console :godmode:
GodMode9 is a full access file browser for the Nintendo 3DS console, giving you access to your SD card, to the FAT partitions inside your SysNAND and EmuNAND and to basically anything else. Among other functionality (see below), you can copy, delete, rename files and create folders.
This is powerful stuff, it provides you with the means to do basically any thinkable modification to any system data available on the 3DS console. However, precautions are taken so you don't accidentally damage the data of your console. The write permissions system protects you by providing warnings and forces you to enter an unlock sequence for enabling write permissions. It is not possible to overwrite or modify any important stuff without such unlock sequences and it is not possible to accidentally unlock something.
As always, be smart, keep backups, just to be safe.
These short instructions apply to all users who have boot9strap and Luma3DS installed (Luma3DS set up with standard paths), which will be the majority of all GodMode9 users. Here's how to set it up quickly:
GodMode9.firm (from the release archive) to X_GodMode9.firm (change X to the button of your choice) and put it into sd:/luma/payloads/gm9 folder from the release archive to your SD card. Then, get good versions of seeddb.bin and encTitleKeys.bin from somewhere (don't ask me!) and put these two files into sd:/gm9/support (optional but recommended for full functionality).More.... Also keep in mind that you should fix your system OS clock afterwards.You may now run GodMode9 via holding the X Button (or any other button you chose) at startup. See below for a list of stuff you can do with it.
Build GodMode9.firm via make firm. This requires firmtool, Python 3.5+ and devkitARM installed).
You may run make release to get a nice, release-ready package of all required files. To build SafeMode9 (a bricksafe variant of GodMode9, with limited write permissions) instead of GodMode9, compile with make FLAVOR=SafeMode9. To switch screens, compile with make SWITCH_SCREENS=1. For additional customization, you may choose the internal font via make FONT=6X10, make FONT=ACORN, make FONT=GB or make FONT=ORIG. You may also hardcode the brightness via make FIXED_BRIGHTNESS=x, whereas x is a value between 0...15.
Further customization is possible by hardcoding aeskeydb.bin (just put the file into the data folder when compiling). All files put into the data folder will turn up in the V: drive, but keep in mind there's a hard 3MB limit for all files inside, including overhead. A standalone script runner is compiled by providing autorun.gm9 (again, in the data folder) and building with make SCRIPT_RUNNER=1.
To build a .firm signed with SPI boot keys (for ntrboot and the like), run make NTRBOOT=1. You may need to rename the output files if the ntrboot installer you use uses hardcoded filenames. Some features such as boot9 / boot11 access are not currently available from the ntrboot environment.
Same as boot9strap, GodMode9 can be installed to the system FIRM partition ('FIRM0'). When executed from a FIRM partition, GodMode9 will default to bootloader mode and try to boot, in order, FIRM from FCRAM (see A9NC), 0:/bootonce.firm (will be deleted on a successful boot), 0:/boot.firm, 1:/boot.firm. In bootloader mode, hold R+LEFT on boot to enter the boot menu. Installing GodMode9 to a FIRM partition is only recommended for developers and will overwrite boot9strap.
GodMode9 provides a write permissions system, which will protect you from accidentually damaging your system, losing data and/or modifying important system data. To unlock a write permission, an unlock sequence must be entered. This is not possible by accident. The write permission system is based on colors and the top bar on the top screen will change color according to the current write permission level. No permission above the yellow level can be unlocked on SafeMode9.
For certain functionality, GodMode9 may need 'support files'. Support files should be placed into 0:/gm9/support. Support files contain additional information that is required in decryption operations. A list of support files, and what they do, is found below. Please don't ask for support files - find them yourself.
aeskeydb.bin: This should contain 0x25keyX, 0x18keyX and 0x1BkeyX to enable decryption of 7x / Secure3 / Secure4 encrypted NCCH files, 0x11key95 / 0x11key96 for FIRM decrypt support and 0x11keyOTP / 0x11keyIVOTP for 'secret' sector 0x96 crypto support. Entrypoints other than boot9strap may require a aeskeydb.bin file. A known perfect aeskeydb.bin can be found somewhere on the net, is exactly 1024 byte big and has an MD5 of A5B28945A7C051D7A0CD18AF0E580D1B. Have fun hunting!seeddb.bin: This file is required to decrypt and mount seed encrypted NCCHs and CIAs if the seed in question is not installed to your NAND. Note that your seeddb.bin must also contain the seed for the specific game you need to decrypt.encTitleKeys.bin / decTitleKeys.bin: These files are optional and provide titlekeys, which are required to create updatable CIAs from NCCH / NCSD files. CIAs created without these files will still work, but won't be updatable from eShop.GodMode9 provides access to system data via drives, a listing of what each drive contains and additional info follows below. Some of these drives are removable (such as drive 7:), some will only turn up if they are available (drive 8: and everything associated with EmuNAND, f.e.). Information on the 3DS console file system is also found on 3Dbrew.org.
0: SDCARD: The SD card currently inserted into the SD card slot. The 0:/Nintendo 3DS folder contains software installs and extdata and is specially protected via the write permission system. The SD card can be unmounted from the root directory via the R+B buttons, otherwise the SD card is always available.1: SYSNAND CTRNAND: The CTRNAND partition on SysNAND. This contains your 3DS console's operating system and system software installs. Data in here is protected by the write permissions system.2: SYSNAND TWLN: The TWLN partition on SysNAND. This contains your 3DS console's TWL mode operating system and system software installs. Data in here is protected by the write permissions system.3: SYSNAND TWLP: The TWLP partition on SysNAND. This contains photos taken while in TWL mode.A: SYSNAND SD: This drive is used for special access to data on your SD card. It actually links to a subfolder inside 0:/Nintendo 3DS and contains software and extdata installed to SD from SysNAND. Crypto in this folder is handled only when accessed via the A: drive (not from 0:). This is protected by the write permissions system.S: SYSNAND VIRTUAL: This drive provides access to all partitions of the SysNAND, some of them critical for base system functionality. This is protected by the write permissions system, but, when unlocked, modifications can brick the system.4: EMUNAND CTRNAND: Same as 1:, but handles the CTRNAND on EmuNAND. For multi EmuNAND setups, the currently active EmuNAND partition can be switched via the HOME menu.5: EMUNAND TWLN: Same as 2, but handles TWLN on EmuNAND. No write protection here, cause this partition is never used on EmuNAND.6: EMUNAND TWLP: Same as 3, but handles TWLP on EmuNAND.B: EMUNAND SD: Same as A:, but handles the 0:/Nintendo 3DS subfolder associated with EmuNAND. In case of linked NANDs, this is identical with A:. This is also protected by the write permissions system.E: EMUNAND VIRTUAL: Same as S:, but handles system partitions on EmuNAND. No bricking risk here as EmuNAND is never critical to system functionality.7: FAT IMAGE / IMGNAND CTRNAND: This provides access to mounted FAT images. When a NAND image is mounted, it provides access to the mounted NAND image's CTRNAND.8: BONUS DRIVE / IMGNAND TWLN: This provides access to the bonus drive on SysNAND. The bonus drive can be setup via the HOME menu on 3DS consoles that provide the space for it. When a NAND image is mounted, this provides access to the mounted NAND image's TWLN.9: RAM DRIVE / IMGNAND TWLP: This provides access to the RAM drive. All data stored inside the RAM drive is temporary and will be wiped after a reboot. When a NAND image is mounted, this provides access to the mounted NAND image's TWLP.I: IMGNAND VIRTUAL: When a NAND image is mounted, this provides access to the partitions inside the NAND image.C: GAMECART: This is read-only and provides access to the game cartridge currently inserted into the cart slot. This can be used for dumps of CTR and TWL mode cartridges. Flash cards are supported only to a limited extent.G: GAME IMAGE: CIA/NCSD/NCCH/EXEFS/ROMFS/FIRM images can be accessed via this drive when mounted. This is read-only.K: AESKEYDB IMAGE: An aeskeydb.bin image can be mounted and accessed via this drive. The drive shows all keys inside the aeskeydb.bin. This is read-only.T: TICKET.DB IMAGE: Ticket database files can be mounted and accessed via this drive. This provides easy and quick access to all tickets inside the ticket.db. This is read-only.M: MEMORY VIRTUAL: This provides access to various memory regions. This is protected by a special write permission, and caution is advised when doing modifications inside this drive. This drive also gives access to boot9.bin, boot11.bin (boot9strap only) and otp.mem (sighaxed systems only).X: NAND XORPADS: This drive contains XORpads for all NAND partitions. XORpads can be used to decrypt NAND partitions outside of the 3DS console with the help of additional software. This is read-only.V: VRAM VIRTUAL: This drive resides in the first VRAM bank and contains files essential to GodMode9. The splash logo (in QLZ format) and the readme file are found there, as well as any file that is provided inside the data folder at build time. This is read-only.Z: LAST SEARCH: After a search operation, search results are found inside this drive. The drive can be accessed at a later point to return to the former search results.With the possibilites GodMode9 provides, not everything may be obvious at first glance. In short, GodMode9 includes improved versions of basically everything that Decrypt9 has, and more. Any kind of dumps and injections are handled via standard copy operations and more specific operations are found inside the A button menu. The A button menu also works for batch operations when multiple files are selected. For your convenience a (incomplete!) list of what GodMode9 can do follows below.
Calculate SHA-256. Do the same for the second file. If the two files are identical, you will get a message about them being identical. On the SDCARD drive (0:) you can also write a SHA file, so you can check for any modifications at a later point.Show in Hexeditor. A button again enables edit mode, hold the A button and press arrow buttons to edit bytes. You will get an additional confirmation prompt to take over changes. Take note that for certain files, write permissions can't be enabled.Show in Textviewer (only shows up for actual text files). You can enable wordwrapped mode via R+Y, and navigate around the file via R+X and the dpad.FIRM options -> Boot FIRM. Keep in mind you should not run FIRMs from dubious sources and that the write permissions system is no longer in place after booting a payload.payloads menu is found inside the HOME button menu. It provides any FIRM found in 0:/gm9/payloads for quick chainloading.HelloScript.gm9 included in the release archive. Don't run scripts from untrusted sources.More... -> Scripts.... Any script you put into 0:/gm9/scripts (subdirs included) will be found here. Scripts ran via this method won't have the confirmation at the beginning either.More... -> SD format menu. This also allows to setup a RedNAND or GW type EmuNAND on your SD card. You will get a warning prompt and an unlock sequence before any operation starts.More... -> Switch EmuNAND to switch between EmuNANDs / RedNANDs. (Only available on multi EmuNAND / RedNAND systems.)A:/B: drives. On-the-fly-crypto is taken care for, you can access this the same as any other content.More... to find the option. Keep in mind that modifying the RTC clock means you should also fix system OS time afterwards.CTRNAND, TWLN and A:/B: drives. This will list all titles installed in the selected location. Works best with the below two features.1:/titles/(SysNAND) and A:/titles/(SD installed). Where applicable, you will also be able to generate legit CIAs. Note: this works also from a file search and title listing.encTitlekeys.bin / decTitlekeys.bin also required, see Support files below) or a CETK file. Either keep the names provided by CDN / NUS, or rename the downloaded content to (anything).nus or (anything).cdn and the CETK to (anything).cetk.C: drive. You may also dump private headers from 3DS game cartridges.Restore SysNAND (safe) from inside the A button menu for NAND dumps.S: (or E:/ I:) drive. This is done the same as any other file operation.S:/ctrnand_full.bin (or E:/ I:). On the receiving system, press A, select CTRNAND Options..., then Transfer to NAND.movable.sed, LocalFriendCodeSeed_B, SecureInfo_A, NAND CID and OTP. If your local SysNAND does not contain an embedded backup, you will be asked to do one at startup. To update the essential SysNAND backup at a later point in time, press A on S:/nand.bin and select NAND image options... -> Update embedded backup.aeskeydb.bin files the option is found in aeskeydb.bin options -> Install aeskeydb.bin. Only the recommended key database can be installed (see above). With an installed key database, it is possible to run the GodMode9 bootloader completely from NAND.FIRM options -> Install FIRM. Use this with caution - installing an incompatible FIRM file will lead to a brick.8:. (Only available on systems that have the extra space.)A:, B:, S: and E:) via an entry in the R+A button menu, or even restore borked NAND headers back to a functional state (inside the A button menu of borked NANDs and available for S:/nand_hdr.bin). Recommended only for advanced users!ticket.db, etc...). This can also be done for multiple files at once if they are marked.eshop (stuff from eshop, probably legit), system (system tickets, probably legit) and unknown (everything else, never legit) categories.agbsave.bin in the S: drive. Keep in mind that you need to start the specific GBA game on your console before dumping / injecting the save.M: drive and can be copied from there to any other place.decTitleKeys.bin / encTitleKeys.bin / seeddb.bin: Press the HOME button, select More... -> Build support files. decTitleKeys.bin / encTitleKeys.bin can also be created / merged from tickets, ticket.db and other decTitleKeys.bin / encTitleKeys.bin files via the A button menu.aeskeydb.bin: AES key databases can be built from other aeskeydb.bin or legacy slot??Key?.bin files. Just select one or more files, press A on one of them and then select Build aeskeydb.bin. Options for mounting, decrypting and encrypting are also found in the A button menu.ncchinfo.bin files: Start this via the appropriate entry inside the A button menu.X: drive. You can use these XORpads for decryption of encrypted NAND images on PC. Additional tools such as 3dsFAT16Tool are required on PC.You may use this under the terms of the GNU General Public License GPL v2 or under the terms of any later revisions of the GPL. Refer to the provided LICENSE.txt file for further information.
This tool would not have been possible without the help of numerous people. Thanks go to (in no particular order)...