From 029bb4b14ea5fac0b7cc0af65e90ac57b0be27b7 Mon Sep 17 00:00:00 2001 From: BullyWiiPlaza Date: Sun, 20 Aug 2017 19:13:54 +0200 Subject: [PATCH] Fix follow pointer --- meta/meta.xml | 2 +- src/tcp_gecko.cpp | 34 +++++++++++++++------------------- tcpgecko.elf | Bin 234420 -> 234356 bytes 3 files changed, 16 insertions(+), 20 deletions(-) diff --git a/meta/meta.xml b/meta/meta.xml index ead026f..ad8ce39 100644 --- a/meta/meta.xml +++ b/meta/meta.xml @@ -3,7 +3,7 @@ TCP Gecko BullyWiiPlaza, wj44, dimok, Chadderz, Marionumber1 - 2.3 + 2.4 WiiU RAM Hacking A memory editor that does magical things to your games. In order to develop and apply real-time cheats use JGecko U. diff --git a/src/tcp_gecko.cpp b/src/tcp_gecko.cpp index 1a02899..301ddd3 100644 --- a/src/tcp_gecko.cpp +++ b/src/tcp_gecko.cpp @@ -84,7 +84,7 @@ struct pygecko_bss_t { #define ONLY_ZEROS_READ 0xB0 #define NON_ZEROS_READ 0xBD -#define VERSION_HASH 0x3AC9444B +#define VERSION_HASH 0xC9D0452 ZEXTERN int ZEXPORT deflateEnd OF((z_streamp @@ -1074,7 +1074,7 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { break; }*/ case COMMAND_FOLLOW_POINTER: { - ret = recvwait(bss, clientfd, buffer, 8); + ret = recvwait(bss, clientfd, buffer, sizeof(int) * 2); ASSERT_FUNCTION_SUCCEEDED(ret, "recvwait (Pointer address and offsets count)") // Retrieve the pointer address and amount of offsets @@ -1082,7 +1082,7 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { int offsetsCount = ((int *) buffer)[1]; // Receive the offsets - ret = recvwait(bss, clientfd, buffer, offsetsCount * 4); + ret = recvwait(bss, clientfd, buffer, offsetsCount * sizeof(int)); ASSERT_FUNCTION_SUCCEEDED(ret, "recvwait (offsets)") int offsets[offsetsCount]; int offsetIndex = 0; @@ -1091,30 +1091,26 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { } int destinationAddress = baseAddress; - if (isValidDataAddress(destinationAddress)) { - // Apply pointer offsets - for (offsetIndex = 0; offsetIndex < offsetsCount; offsetIndex++) { - int pointerValue = *(int *) destinationAddress; - int offset = offsets[offsetIndex]; - destinationAddress = pointerValue + offset; + // Apply pointer offsets + for (offsetIndex = 0; offsetIndex < offsetsCount; offsetIndex++) { + int pointerValue = *(int *) destinationAddress; + int offset = offsets[offsetIndex]; + destinationAddress = pointerValue + offset; - // Validate the pointer address - bool isValidDestinationAddress = isValidDataAddress(destinationAddress); + // Validate the pointer address + bool isValidDestinationAddress = isValidDataAddress(destinationAddress); - // Bail out if invalid - if (!isValidDestinationAddress) { - destinationAddress = -1; + // Bail out if invalid + if (!isValidDestinationAddress) { + destinationAddress = -1; - break; - } + break; } - } else { - destinationAddress = -1; } // Return the destination address ((int *) buffer)[0] = destinationAddress; - ret = sendwait(bss, clientfd, buffer, 4); + ret = sendwait(bss, clientfd, buffer, sizeof(int)); ASSERT_FUNCTION_SUCCEEDED(ret, "recvwait (destination address)") break; diff --git a/tcpgecko.elf b/tcpgecko.elf index 81d56f44fd0a29603cea3de81d68ece4ffad674c..236eefdd3cb85ef9e82e0a5c4c0b94e96e0d9b43 100644 GIT binary patch delta 27411 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 delta 27573 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