From ac972eeae9a8e8230058c0a7d7685ea8e48af91f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Mon, 25 Jan 2021 11:30:09 +0100 Subject: [PATCH] Add more detailed instructions for dumping the executable --- Contributing.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Contributing.md b/Contributing.md index 5668e5d0..299d7c93 100644 --- a/Contributing.md +++ b/Contributing.md @@ -6,8 +6,11 @@ To contribute to the project, you will need: * Python 3 and pip for the diff script * These Python modules: `capstone colorama cxxfilt pyelftools` (install them with `pip install ...`) * The original 1.5.0 `main` NSO executable, converted to ELF format with [nx2elf](https://github.com/shuffle2/nx2elf). - * Copy it to data/main.elf -- it is used for the diff script and other tools. + * To dump it, follow [the instructions on the wiki](https://zeldamods.org/wiki/Help:Dumping_games#Dumping_binaries_.28executable_files.29). If you only have 1.6.0 on your console, you should still dump it. + * Decompress the `main` NSO with [hactool](https://github.com/SciresM/hactool). + * If you have a 1.6.0 dump, use xdelta3 on the decompressed NSO to turn it into a 1.5.0 NSO. [The patch is available here.](https://s.botw.link/v150_downgrade/v160_to_v150.patch) * The uncompressed NSO has the following SHA256 hash: `d9fa308d0ee7c0ab081c66d987523385e1afe06f66731bbfa32628438521c106` + * Copy it to data/main.elf -- it is used for the diff script and other tools. Experience with reverse engineering optimized C++ code is very useful but not necessary if you already know how to decompile C code.