Awesome Switch

The switch hacking scene has sprouted a lot of useful tools and documentation, but those can be fairly hard to find due to being posted left and right without a central repository to list it all. But no more! This awesome list will attempt to be a complete list of all the useful things that the switch hacking community created.

If you see something missing, feel free to leave a comment here so I can add it in.

Resources

Documentation

  • SwitchBrew Wiki - A wiki with a lot of information, from SVC docs to file format descriptions.
  • SwIPC - (Almost) complete documentation for the switch’s IPC services.

Writeups

Tutorials

Toolchains

  • libtransistor - A C/C++ toolchain based on clang.
  • libnx - A C/C++ toolchain based on devkitPro/gcc.
  • Megaton-Hammer - A Rust toolchain (surely the best :lenny:)

Language Support

  • PyNX - A Python port, based on libnx.
  • LovePotion - A Lua port, based on libnx.
  • Brew.js - A JavaScript port, based on libnx.

Emulators

  • RyujiNX - An innovative emulator written in C# (using dotnetcore, supports Windows/Mac/Linux)
  • Yuzu - An emulator written in C++
  • Mephisto - A simple emulator written to assist debugging and reverse engineering.

Tools

  • hactool - A tool to view informataion about, decrypt, and extract common file formats.
  • HacDiskMount - Allows to open Switch eMMC RawNand dumps and mount them as a drive letter in Windows
  • switchfs - FUSE scripts for Nintendo Switch files, similar to HacDiskMount but cross-platform.
  • SwIPC - IPC code and documentation generator. Auto-generated from swipc-gen.
  • ilia - An IPC Logger for the switch, so you can spy on all the IPC calls.

Homebrew Launchers

  • twili - A launcher with debugging facilities.
  • hbl - The launcher everybody uses.

CFW

  • Atmosphere - A WIP customized firmware for the Switch.
  • Hekate - CTCaer’s mod - A complete NX bootloader reimplementation. Functionally equivalent to Atmosphere’s Fusee.

Reverse Engineering Corner

Loaders

IDCs

Useful Plugins

  • FRIEND - An IDA Plugin that (among other things) names system registers.
  • hnight7 - An IDA plugin that fixes system register names in hexray view.
  • Diaphora - A Free and Open Source diffing tool. Use this to match functions with their named equivalent from an SDK binary.
  • idb2pat - Similar to diaphora, idb2pat.py generates IDA Pro FLAIR patterns from existing IDB files, which help IDA Pro recognize common functions in compiled programs and automatically rename them for the reverse engineer