From f8f84d2b06d9a191c50d46c960ec0d13b12544b3 Mon Sep 17 00:00:00 2001 From: chaoskagami Date: Tue, 5 Jul 2016 09:27:44 -0400 Subject: [PATCH] Remove xdeltas (they were missing two pointers) and add an autopatcher program and source --- ntr_pathhack/ntr_move_paths.xdelta3 | Bin 336 -> 0 bytes .../ntr_move_paths_to_3ds_ntr.xdelta3 | Bin 359 -> 0 bytes ntr_pathhack/ntr_path_patcher-linux32 | Bin 0 -> 15104 bytes ntr_pathhack/ntr_path_patcher-linux64 | Bin 0 -> 17208 bytes ntr_pathhack/ntr_path_patcher-win64.exe | Bin 0 -> 138807 bytes ntr_pathhack/ntr_path_patcher.c | 151 ++++++++++++++++++ ntr_pathhack/pathhack.txt | 13 +- 7 files changed, 158 insertions(+), 6 deletions(-) delete mode 100644 ntr_pathhack/ntr_move_paths.xdelta3 delete mode 100644 ntr_pathhack/ntr_move_paths_to_3ds_ntr.xdelta3 create mode 100755 ntr_pathhack/ntr_path_patcher-linux32 create mode 100755 ntr_pathhack/ntr_path_patcher-linux64 create mode 100755 ntr_pathhack/ntr_path_patcher-win64.exe create mode 100644 ntr_pathhack/ntr_path_patcher.c diff --git a/ntr_pathhack/ntr_move_paths.xdelta3 b/ntr_pathhack/ntr_move_paths.xdelta3 deleted file mode 100644 index ae82ee8506feb51071047e915febe6ffa528bd9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcmcb1_y_|llTuzuQG7vSNk&Fua&~-KVqRuWPNH5?W}d!2PzKCk?LVW!(4^3RPlY|M z$n~Jh%=?ai&8s4!7#JA-3*B^NVo+q{0kZpNIL>*%;J{!P%OGUs(ATWIK4F3N`Rfm4 zCg{yr&im=jyU%At0%j^leDzwXb6zFm(+O!+4PymGF@|;LYutV@sBH*!T>mkuu!bQF zm+6cQp~9V;O_+t}@G*)xU*KX6zNy8W+;7Ef+;If&>GPaia%N z=zI((Lt}{p5c4oJ7Ar9{7O*KdR@ehEQ*vWHlX7E?s&ZqMCT<%w7&^Xe diff --git a/ntr_pathhack/ntr_move_paths_to_3ds_ntr.xdelta3 b/ntr_pathhack/ntr_move_paths_to_3ds_ntr.xdelta3 deleted file mode 100644 index 7b1ad6b96b809e604c9be6fbae81390d633e958f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 359 zcmcb1_y_|llTuzuQG7vSNk&Fua(29NN^v|;KrbmXPhTI#VC_Gn!q8;ie@}%yrOL1R z*`{i@zvfjDQ49 zEa(07=H2HrA^|g%BfdIa|9C{Ubm_tOt$&^xx9kzCTWhnI=|`60yd^T1wBzJ&*ljqH zpRO8*%MM0{SmDmiCd|Tf_!z~UFK{sj-_&AG?zdt#ZoZYrz~k(~U>n?8&A^j9L4twD zxX}YBbUubtg_WVPKvSBbF(;Fop)preo}n=#ibc7xfF*`0xv`!}8H{UGl^ctUaNBIi z(7D-cj>-j|n>zhA&9|x=8Qa(=s5FMKG%@u3%51CwQcrjp8fzO1c$*lS81AP|U;+RS CZ+({S)db(#?kA^pI&@@e`;1+H{32ov~rdU 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 literal 0 HcmV?d00001 diff --git a/ntr_pathhack/ntr_path_patcher-linux64 b/ntr_pathhack/ntr_path_patcher-linux64 new file mode 100755 index 0000000000000000000000000000000000000000..e1bad87ac105cf714d23133f9408aafb38c5b986 GIT binary patch literal 17208 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 literal 0 HcmV?d00001 diff --git a/ntr_pathhack/ntr_path_patcher-win64.exe b/ntr_pathhack/ntr_path_patcher-win64.exe new file mode 100755 index 0000000000000000000000000000000000000000..4a341e8c100121cbf885593c81dcf73f7440dd3c GIT binary patch literal 138807 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 +#include +#include +#include + +#define RELOC_COUNT 9 + +#include +#include + +#define ALPHABET_LEN 256 +#define NOT_FOUND patlen +#define max(a, b) ((a < b) ? b : a) + +// Quick Search algorithm, adapted from +// http://igm.univ-mlv.fr/~lecroq/string/node19.html#SECTION00190 +uint32_t +memfind(uint8_t *startPos, uint32_t size, const void *pattern, uint32_t patternSize) +{ + const uint8_t *patternc = (const uint8_t *)pattern; + + // Preprocessing + uint32_t table[ALPHABET_LEN]; + + for (uint32_t i = 0; i < ALPHABET_LEN; ++i) + table[i] = patternSize + 1; + for (uint32_t i = 0; i < patternSize; ++i) + table[patternc[i]] = patternSize - i; + + // Searching + uint32_t j = 0; + + while (j <= size - patternSize) { + if (memcmp(patternc, startPos + j, patternSize) == 0) + return j; + j += table[startPos[j + patternSize]]; + } + + return 0; +} + +int main(int argc, char** argv) { + uint32_t size = 0; + uint32_t base = 0x100100; + uint8_t* mem = NULL; + FILE* ntr = NULL; + int expand = 0; + int vanilla = 0; + + static uint8_t* find_strings[RELOC_COUNT] = { + "/ntr.bin", + "/plugin/%s", + "/debug.flag", + "/axiwram.dmp", + "/pid0.dmp", + "/pid2.dmp", + "/pid3.dmp", + "/pidf.dmp", + "/arm11.bin", + }; // Nine buffers + + static uint8_t* fix_strings[RELOC_COUNT] = { + "/3ds/ntr/ntr.bin", + "/3ds/ntr/plugin/%s", + "/3ds/ntr/debug.flag", + "/3ds/ntr/axiwram.dmp", + "/3ds/ntr/pid0.dmp", + "/3ds/ntr/pid2.dmp", + "/3ds/ntr/pid3.dmp", + "/3ds/ntr/pidf.dmp", + "/3ds/ntr/arm11.bin", + }; // Nine buffers + + if (argc < 2) { + fprintf(stderr, "No NTR.bin provided to patch, see --help for usage or drop a file on the binary\n"); + exit(0); + } + + if (!strcmp(argv[1], "--help")) { + printf("Automated NTR path patcher r1\n"); + printf("Usage: %s [-v] NTR.bin\n", argv[0]); + printf(" -v Keep vanilla paths, do not redirect to `/3ds/ntr`\n"); + printf("An output file will be generated named `NTR_patched.bin`\n"); + exit(0); + } else if (!strcmp(argv[1], "-v")) { + printf("Keeping vanilla paths.\n"); + vanilla = 1; + } + + // Get size, allocate memory, clear and read to memory + ntr = fopen(argv[1], "rb"); + fseek(ntr, 0, SEEK_END); + size = ftell(ntr); + rewind(ntr); + mem = malloc(size + (0x100 * 9)); + memset(mem, 0, size + (0x100 * 9)); + fread(mem, 1, size, ntr); + fclose(ntr); + + fprintf(stderr, "size: %u\n", size); + + // Find location of strings to relocate. + for(int i=0; i < RELOC_COUNT; i++) { + char* str = find_strings[i]; + uint32_t strl = strlen(str); + uint32_t off = memfind(mem, size, str, strl); + + if (off == 0) { + fprintf(stderr, "String not found for \"%s\" (%d). Skipping.\n", str, strl); + continue; + } + + fprintf(stderr, "Found string \"%s\" in ntr: %x\n", str, off); + + // Clear string data + memset(&mem[off], 0, strl); + + off += base; // Rebase pointer relative to NTRs base. + + uint32_t patchme = (uint32_t*)memfind(mem, size, (uint8_t*)&off, 4); // Find xref + if (patchme == 0) { + fprintf(stderr, "Pointer for string \"%s\" is missing! Aborting.\n", str); + exit(1); + } + + fprintf(stderr, "Found pointer @ %08x\n", patchme); + + // New offset is end + patch count * buffer + uint32_t patch_off = size + (0x100 * expand); + if (vanilla) + strcpy(&mem[patch_off], str); + else + strcpy(&mem[patch_off], fix_strings[i]); + + expand += 1; + + uint32_t* patch_rel = (uint32_t*)(&mem[patchme]); + + // Rebase new pointer + *patch_rel = patch_off + base; + } + + if (expand) { + FILE* out_fix = fopen("ntr_fixed.bin", "wb"); + fwrite(mem, 1, size + (0x100 * expand), out_fix); + fclose(out_fix); + } + + free(mem); + return 0; +} diff --git a/ntr_pathhack/pathhack.txt b/ntr_pathhack/pathhack.txt index 8278a9c..941b1aa 100644 --- a/ntr_pathhack/pathhack.txt +++ b/ntr_pathhack/pathhack.txt @@ -1,11 +1,12 @@ -ntr_move_paths.bin - Patch ntr.bin with the pathhack but same paths as unmodified -ntr_move_paths_to_3ds_ntr.bin - Patch ntr with pathhack, put everything normally on root in /3ds/ntr and use a modified BootNTR (not provided here) +To use: compile patcher.c and drag a NTR.bin onto it. An ntr_patched.bin will be generated. -These patches are intended for 3.4p2 only. +Precompiled versions are provided for linux x86/x86_64 and Win64. ------------------------------------------------------------------------------- +-------------------------------- -The actual hack: add static buffers to the end of ntr.bin (256 each, FAT max) and patch refs to them keeping with the relocations (e.g. add 0x100100 to the offset rel to 0): +The actual hack: add static buffers to the end of ntr.bin (256 each, FAT max) and patch refs to them keeping with the relocations (e.g. add 0x100100 to the offset rel to 0.) + +For 3.4p1 for example: 0x3E624 - "/ntr.bin" 0x2C44C: 24 E7 0x3E724 - "/plugin/%s" @@ -27,4 +28,4 @@ The actual hack: add static buffers to the end of ntr.bin (256 each, FAT max) an Afterwards, null out the original strings. -Short version - you can now modify the paths NTR uses, you're welcome. Pop it open in a hex editor and modify the end buffers as needed (they're all 256 chars) or someone code a pathchanger +Short version - you can now modify the paths NTR uses, you're welcome. Pop it open in a hex editor and modify the end buffers as needed (they're all 256 chars.) The patcher tool here autocalculates offsets. -- 2.39.5