From 0d42c264e25f53a6d6ae4c35bef605adf8db8590 Mon Sep 17 00:00:00 2001 From: BullyWiiPlaza Date: Tue, 4 Jul 2017 10:34:47 +0200 Subject: [PATCH] Move towards using C++ --- Makefile | 2 +- src/common/common.h | 18 +-- src/dynamic_libs/fs_functions.h | 20 +-- src/dynamic_libs/socket_functions.h | 37 +++-- src/fs/CFile.cpp | 156 ++++++++----------- src/fs/CFile.hpp | 83 +++++----- src/{main.c => main.cpp} | 7 +- src/patcher/function_patcher_coreinit.c | 47 ++++++ src/patcher/function_patcher_coreinit.h | 15 ++ src/patcher/function_patcher_gx2.h | 4 +- src/{address.c => system/address.cpp} | 2 +- src/{ => system}/address.h | 0 src/{ => system}/disassembler.c | 4 +- src/{ => system}/disassembler.h | 0 src/system/exception_handler.c | 2 +- src/system/hardware_breakpoints.h | 5 - src/{ => system}/kernel.h | 33 +++- src/{ => system}/pause.h | 10 +- src/system/{threads.c => threads.cpp} | 3 - src/system/utilities.h | 4 +- src/{tcp_gecko.c => tcp_gecko.cpp} | 92 +++++------ src/{ => utils}/assertions.h | 0 src/utils/{linked_list.c => linked_list.cpp} | 0 src/utils/sd_ip_reader.cpp | 40 +++++ src/utils/sd_ip_reader.hpp | 9 ++ tcpgecko.elf | Bin 148876 -> 234164 bytes 26 files changed, 342 insertions(+), 251 deletions(-) rename src/{main.c => main.cpp} (94%) create mode 100644 src/patcher/function_patcher_coreinit.c create mode 100644 src/patcher/function_patcher_coreinit.h rename src/{address.c => system/address.cpp} (90%) rename src/{ => system}/address.h (100%) rename src/{ => system}/disassembler.c (93%) rename src/{ => system}/disassembler.h (100%) rename src/{ => system}/kernel.h (81%) rename src/{ => system}/pause.h (85%) rename src/system/{threads.c => threads.cpp} (96%) rename src/{tcp_gecko.c => tcp_gecko.cpp} (94%) rename src/{ => utils}/assertions.h (100%) rename src/utils/{linked_list.c => linked_list.cpp} (100%) create mode 100644 src/utils/sd_ip_reader.cpp create mode 100644 src/utils/sd_ip_reader.hpp diff --git a/Makefile b/Makefile index f572f5b..51f7691 100644 --- a/Makefile +++ b/Makefile @@ -59,7 +59,7 @@ MAKEFLAGS += --no-print-directory #--------------------------------------------------------------------------------- # any extra libraries we wish to link with the project #--------------------------------------------------------------------------------- -LIBS := -lz -liosuhax -lgd +LIBS := -lm -lfat -lz -liosuhax -lgd #--------------------------------------------------------------------------------- # list of directories containing libraries, this must be the top level containing diff --git a/src/common/common.h b/src/common/common.h index 9d0dae4..b095ad4 100644 --- a/src/common/common.h +++ b/src/common/common.h @@ -1,11 +1,11 @@ -#ifndef COMMON_H -#define COMMON_H +#pragma once #ifdef __cplusplus extern "C" { #endif #include "os_defs.h" +#include "fs_defs.h" #define CODE_HANDLER_INSTALL_ADDRESS 0x010F4000 @@ -58,17 +58,15 @@ extern "C" { #define RESTORE_INSTR_ADDR ((restore_instructions_t*)(MEM_BASE + 0x1600)) typedef struct _restore_instructions_t { - unsigned int magic; - unsigned int instr_count; - struct { - unsigned int addr; - unsigned int instr; - } data[0]; + unsigned int magic; + unsigned int instr_count; + struct { + unsigned int addr; + unsigned int instr; + } data[0]; } restore_instructions_t; #ifdef __cplusplus } #endif -#endif /* COMMON_H */ - diff --git a/src/dynamic_libs/fs_functions.h b/src/dynamic_libs/fs_functions.h index 3b77111..21c1d47 100644 --- a/src/dynamic_libs/fs_functions.h +++ b/src/dynamic_libs/fs_functions.h @@ -50,8 +50,7 @@ extern int (*FSUnmount)(void *pClient, void *pCmd, const char *target, int errHa extern int (*FSRename)(void *pClient, void *pCmd, const char *oldPath, const char *newPath, int error); -extern int -(*FSRenameAsync)(void *pClient, void *pCmd, const char *oldPath, const char *newPath, int error, void *asyncParams); +extern int (*FSRenameAsync)(void *pClient, void *pCmd, const char *oldPath, const char *newPath, int error, void *asyncParams); extern int (*FSRemove)(void *pClient, void *pCmd, const char *path, int error); @@ -63,8 +62,7 @@ extern int (*FSGetStatAsync)(void *pClient, void *pCmd, const char *path, void * extern int (*FSRename)(void *pClient, void *pCmd, const char *oldPath, const char *newPath, int error); -extern int -(*FSRenameAsync)(void *pClient, void *pCmd, const char *oldPath, const char *newPath, int error, void *asyncParams); +extern int (*FSRenameAsync)(void *pClient, void *pCmd, const char *oldPath, const char *newPath, int error, void *asyncParams); extern int (*FSRemove)(void *pClient, void *pCmd, const char *path, int error); @@ -76,9 +74,7 @@ extern int (*FSFlushQuotaAsync)(void *pClient, void *pCmd, const char *path, int extern int (*FSGetFreeSpaceSize)(void *pClient, void *pCmd, const char *path, uint64_t *returnedFreeSize, int error); -extern int -(*FSGetFreeSpaceSizeAsync)(void *pClient, void *pCmd, const char *path, uint64_t *returnedFreeSize, int error, - void *asyncParams); +extern int (*FSGetFreeSpaceSizeAsync)(void *pClient, void *pCmd, const char *path, uint64_t *returnedFreeSize, int error, void *asyncParams); extern int (*FSRollbackQuota)(void *pClient, void *pCmd, const char *path, int error); @@ -104,11 +100,9 @@ extern int (*FSMakeDirAsync)(void *pClient, void *pCmd, const char *path, int er extern int (*FSOpenFile)(void *pClient, void *pCmd, const char *path, const char *mode, int *fd, int errHandling); -extern int (*FSOpenFileAsync)(void *pClient, void *pCmd, const char *path, const char *mode, int *handle, int error, - const void *asyncParams); +extern int (*FSOpenFileAsync)(void *pClient, void *pCmd, const char *path, const char *mode, int *handle, int error, const void *asyncParams); -extern int -(*FSReadFile)(void *pClient, void *pCmd, void *buffer, int size, int count, int fd, int flag, int errHandling); +extern int (*FSReadFile)(void *pClient, void *pCmd, void *buffer, int size, int count, int fd, int flag, int errHandling); extern int (*FSCloseFile)(void *pClient, void *pCmd, int fd, int errHandling); @@ -120,9 +114,7 @@ extern int (*FSGetStatFile)(void *pClient, void *pCmd, int fd, void *buffer, int extern int (*FSSetPosFile)(void *pClient, void *pCmd, int fd, int pos, int error); -extern int -(*FSWriteFile)(void *pClient, void *pCmd, const void *source, int block_size, int block_count, int fd, int flag, - int error); +extern int (*FSWriteFile)(void *pClient, void *pCmd, const void *source, int block_size, int block_count, int fd, int flag, int error); extern int (*FSBindMount)(void *pClient, void *pCmd, char *source, char *target, int error); diff --git a/src/dynamic_libs/socket_functions.h b/src/dynamic_libs/socket_functions.h index 03c9071..5252393 100644 --- a/src/dynamic_libs/socket_functions.h +++ b/src/dynamic_libs/socket_functions.h @@ -57,38 +57,49 @@ extern u32 hostIpAddress; struct in_addr { - unsigned int s_addr; + unsigned int s_addr; }; struct sockaddr_in { - short sin_family; - unsigned short sin_port; - struct in_addr sin_addr; - char sin_zero[8]; + short sin_family; + unsigned short sin_port; + struct in_addr sin_addr; + char sin_zero[8]; }; -struct sockaddr -{ - unsigned short sa_family; - char sa_data[14]; +struct sockaddr { + unsigned short sa_family; + char sa_data[14]; }; void InitSocketFunctionPointers(void); extern int (*socket_lib_init)(void); + extern int (*socket_lib_finish)(void); + extern int (*socket)(int domain, int type, int protocol); + extern int (*socketclose)(int s); + extern int (*connect)(int s, void *addr, int addrlen); -extern int (*bind)(s32 s,struct sockaddr *name,s32 namelen); -extern int (*listen)(s32 s,u32 backlog); -extern int (*accept)(s32 s,struct sockaddr *addr,s32 *addrlen); + +extern int (*bind)(s32 s, struct sockaddr *name, s32 namelen); + +extern int (*listen)(s32 s, u32 backlog); + +extern int (*accept)(s32 s, struct sockaddr *addr, s32 *addrlen); + extern int (*send)(int s, const void *buffer, int size, int flags); + extern int (*recv)(int s, void *buffer, int size, int flags); + extern int (*sendto)(int s, const void *buffer, int size, int flags, const struct sockaddr *dest, int dest_len); + extern int (*setsockopt)(int s, int level, int optname, void *optval, int optlen); -extern char * (*inet_ntoa)(struct in_addr in); +extern char *(*inet_ntoa)(struct in_addr in); + extern int (*inet_aton)(const char *cp, struct in_addr *inp); #ifdef __cplusplus diff --git a/src/fs/CFile.cpp b/src/fs/CFile.cpp index 161b980..b369565 100644 --- a/src/fs/CFile.cpp +++ b/src/fs/CFile.cpp @@ -2,60 +2,54 @@ #include #include "CFile.hpp" -CFile::CFile() -{ +CFile::CFile() { iFd = -1; mem_file = NULL; filesize = 0; pos = 0; } -CFile::CFile(const std::string & filepath, eOpenTypes mode) -{ +CFile::CFile(const std::string &filepath, eOpenTypes mode) { iFd = -1; this->open(filepath, mode); } -CFile::CFile(const u8 * mem, int size) -{ +CFile::CFile(const u8 *mem, int size) { iFd = -1; this->open(mem, size); } -CFile::~CFile() -{ +CFile::~CFile() { this->close(); } -int CFile::open(const std::string & filepath, eOpenTypes mode) -{ +int CFile::open(const std::string &filepath, eOpenTypes mode) { this->close(); s32 openMode = 0; - switch(mode) - { - default: - case ReadOnly: - openMode = O_RDONLY; - break; - case WriteOnly: - openMode = O_WRONLY; - break; - case ReadWrite: - openMode = O_RDWR; - break; - case Append: - openMode = O_APPEND | O_WRONLY; - break; + switch (mode) { + default: + case ReadOnly: + openMode = O_RDONLY; + break; + case WriteOnly: + openMode = O_WRONLY; + break; + case ReadWrite: + openMode = O_RDWR; + break; + case Append: + openMode = O_APPEND | O_WRONLY; + break; } - //! Using fopen works only on the first launch as expected - //! on the second launch it causes issues because we don't overwrite - //! the .data sections which is needed for a normal application to re-init - //! this will be added with launching as RPX + //! Using fopen works only on the first launch as expected + //! on the second launch it causes issues because we don't overwrite + //! the .data sections which is needed for a normal application to re-init + //! this will be added with launching as RPX iFd = ::open(filepath.c_str(), openMode); - if(iFd < 0) + if (iFd < 0) return iFd; @@ -65,8 +59,7 @@ int CFile::open(const std::string & filepath, eOpenTypes mode) return 0; } -int CFile::open(const u8 * mem, int size) -{ +int CFile::open(const u8 *mem, int size) { this->close(); mem_file = mem; @@ -75,9 +68,8 @@ int CFile::open(const u8 * mem, int size) return 0; } -void CFile::close() -{ - if(iFd >= 0) +void CFile::close() { + if (iFd >= 0) ::close(iFd); iFd = -1; @@ -86,27 +78,24 @@ void CFile::close() pos = 0; } -int CFile::read(u8 * ptr, size_t size) -{ - if(iFd >= 0) - { - int ret = ::read(iFd, ptr,size); - if(ret > 0) +int CFile::read(u8 *ptr, size_t size) { + if (iFd >= 0) { + int ret = ::read(iFd, ptr, size); + if (ret > 0) pos += ret; return ret; } int readsize = size; - if(readsize > (s64) (filesize-pos)) - readsize = filesize-pos; + if (readsize > (s64)(filesize - pos)) + readsize = filesize - pos; - if(readsize <= 0) + if (readsize <= 0) return readsize; - if(mem_file != NULL) - { - memcpy(ptr, mem_file+pos, readsize); + if (mem_file != NULL) { + memcpy(ptr, mem_file + pos, readsize); pos += readsize; return readsize; } @@ -114,60 +103,47 @@ int CFile::read(u8 * ptr, size_t size) return -1; } -int CFile::write(const u8 * ptr, size_t size) -{ - if(iFd >= 0) - { - size_t done = 0; - while(done < size) - { - int ret = ::write(iFd, ptr, size - done); - if(ret <= 0) - return ret; +int CFile::write(const u8 *ptr, size_t size) { + if (iFd >= 0) { + size_t done = 0; + while (done < size) { + int ret = ::write(iFd, ptr, size - done); + if (ret <= 0) + return ret; - ptr += ret; - done += ret; - pos += ret; - } + ptr += ret; + done += ret; + pos += ret; + } return done; } return -1; } -int CFile::seek(long int offset, int origin) -{ +int CFile::seek(long int offset, int origin) { int ret = 0; s64 newPos = pos; - if(origin == SEEK_SET) - { + if (origin == SEEK_SET) { newPos = offset; - } - else if(origin == SEEK_CUR) - { + } else if (origin == SEEK_CUR) { newPos += offset; - } - else if(origin == SEEK_END) - { - newPos = filesize+offset; + } else if (origin == SEEK_END) { + newPos = filesize + offset; } - if(newPos < 0) - { + if (newPos < 0) { pos = 0; - } - else { - pos = newPos; + } else { + pos = newPos; } - if(iFd >= 0) + if (iFd >= 0) ret = ::lseek(iFd, pos, SEEK_SET); - if(mem_file != NULL) - { - if(pos > filesize) - { + if (mem_file != NULL) { + if (pos > filesize) { pos = filesize; } } @@ -175,23 +151,21 @@ int CFile::seek(long int offset, int origin) return ret; } -int CFile::fwrite(const char *format, ...) -{ - int result = -1; - char * tmp = NULL; +int CFile::fwrite(const char *format, ...) { + int result = -1; + char *tmp = NULL; va_list va; va_start(va, format); - if((vasprintf(&tmp, format, va) >= 0) && tmp) - { - result = this->write((u8 *)tmp, strlen(tmp)); + if ((vasprintf(&tmp, format, va) >= 0) && tmp) { + result = this->write((u8 *) tmp, strlen(tmp)); } va_end(va); - if(tmp) + if (tmp) free(tmp); - return result; + return result; } diff --git a/src/fs/CFile.hpp b/src/fs/CFile.hpp index 1580eb3..1374469 100644 --- a/src/fs/CFile.hpp +++ b/src/fs/CFile.hpp @@ -7,51 +7,60 @@ #include #include #include +#include "../common/fs_defs.h" -class CFile -{ - public: - enum eOpenTypes - { - ReadOnly, - WriteOnly, - ReadWrite, - Append - }; +class CFile { +public: + enum eOpenTypes { + ReadOnly, + WriteOnly, + ReadWrite, + Append + }; - CFile(); - CFile(const std::string & filepath, eOpenTypes mode); - CFile(const u8 * memory, int memsize); - virtual ~CFile(); + CFile(); - int open(const std::string & filepath, eOpenTypes mode); - int open(const u8 * memory, int memsize); + CFile(const std::string &filepath, eOpenTypes mode); - bool isOpen() const { - if(iFd >= 0) - return true; + CFile(const u8 *memory, int memsize); - if(mem_file) - return true; + virtual ~CFile(); - return false; - } + int open(const std::string &filepath, eOpenTypes mode); - void close(); + int open(const u8 *memory, int memsize); - int read(u8 * ptr, size_t size); - int write(const u8 * ptr, size_t size); - int fwrite(const char *format, ...); - int seek(long int offset, int origin); - u64 tell() { return pos; }; - u64 size() { return filesize; }; - void rewind() { this->seek(0, SEEK_SET); }; + bool isOpen() const { + if (iFd >= 0) + return true; - protected: - int iFd; - const u8 * mem_file; - u64 filesize; - u64 pos; + if (mem_file) + return true; + + return false; + } + + void close(); + + int read(u8 *ptr, size_t size); + + int write(const u8 *ptr, size_t size); + + int fwrite(const char *format, ...); + + int seek(long int offset, int origin); + + u64 tell() {return pos;}; + + u64 size() {return filesize;}; + + void rewind() {this->seek(0, SEEK_SET);}; + +protected: + int iFd; + const u8 *mem_file; + u64 filesize; + u64 pos; }; -#endif +#endif \ No newline at end of file diff --git a/src/main.c b/src/main.cpp similarity index 94% rename from src/main.c rename to src/main.cpp index 028a7ce..fffaa64 100644 --- a/src/main.c +++ b/src/main.cpp @@ -18,6 +18,8 @@ #include "utils/logger.h" #include "utils/function_patcher.h" #include "patcher/function_patcher_gx2.h" +#include "patcher/function_patcher_coreinit.h" +#include "utils/sd_ip_reader.hpp" bool isCodeHandlerInstalled; @@ -30,6 +32,7 @@ typedef enum { void applyFunctionPatches() { patchIndividualMethodHooks(method_hooks_gx2, method_hooks_size_gx2, method_calls_gx2); + patchIndividualMethodHooks(method_hooks_coreinit, method_hooks_size_coreinit, method_calls_coreinit); } /* Entry point */ @@ -91,7 +94,7 @@ int Menu_Main(void) { int screenBuffer0Size = OSScreenGetBufferSizeEx(0); int screenBuffer1Size = OSScreenGetBufferSizeEx(1); - unsigned char *screenBuffer = MEM1_alloc(screenBuffer0Size + screenBuffer1Size, 0x40); + unsigned char *screenBuffer = (unsigned char *) MEM1_alloc(screenBuffer0Size + screenBuffer1Size, 0x40); OSScreenSetBufferEx(0, screenBuffer); OSScreenSetBufferEx(1, (screenBuffer + screenBuffer0Size)); @@ -147,7 +150,7 @@ int Menu_Main(void) { isCodeHandlerInstalled = true; launchMethod = TCP_GECKO; - log_init(COMPUTER_IP_ADDRESS); + initializeUDPLog(); log_print("Patching functions\n"); applyFunctionPatches(); diff --git a/src/patcher/function_patcher_coreinit.c b/src/patcher/function_patcher_coreinit.c new file mode 100644 index 0000000..9d2ec72 --- /dev/null +++ b/src/patcher/function_patcher_coreinit.c @@ -0,0 +1,47 @@ +#include "../utils/function_patcher.h" +#include "../utils/logger.h" + +declareFunctionHook(int, FSOpenFile, void *pClient, void *pCmd, const char *path, const char *mode, int *fd, int errHandling) { + log_printf("FSOpenFile(): %s", path); + return real_FSOpenFile(pClient, pCmd, path, mode, fd, errHandling); +} + +declareFunctionHook(int, FSOpenFileAsync, void *pClient, void *pCmd, const char *path, const char *mode, int *handle, int error, const void *asyncParams) { + log_printf("FSOpenFileAsync(): %s", path); + return real_FSOpenFileAsync(pClient, pCmd, path, mode, handle, error, asyncParams); +} + +declareFunctionHook(int, FSOpenDir, void *pClient, void *pCmd, const char *path, int *dh, int errHandling) { + log_printf("FSOpenDir(): %s", path); + return real_FSOpenDir(pClient, pCmd, path, dh, errHandling); +} + +declareFunctionHook(int, FSOpenDirAsync, void *pClient, void *pCmd, const char *path, int *handle, int error, void *asyncParams) { + log_printf("FSOpenDirAsync(): %s", path); + return real_FSOpenDirAsync(pClient, pCmd, path, handle, error, asyncParams); +} + +declareFunctionHook(int, FSGetStat, void *pClient, void *pCmd, const char *path, FSStat *stats, int errHandling) { + log_printf("FSGetStat(): %s", path); + return real_FSGetStat(pClient, pCmd, path, stats, errHandling); +} + +declareFunctionHook(int, FSGetStatAsync, void *pClient, void *pCmd, const char *path, FSStat *stats, int errHandling, void *asyncParams) { + log_printf("FSGetStatAsync(): %s", path); + return real_FSGetStatAsync(pClient, pCmd, path, stats, errHandling, asyncParams); +} + +FunctionHook method_hooks_coreinit[] __attribute__((section(".data"))) = { + makeFunctionHook(FSOpenFile, LIB_CORE_INIT, STATIC_FUNCTION), + makeFunctionHook(FSOpenFileAsync, LIB_CORE_INIT, STATIC_FUNCTION), + + makeFunctionHook(FSOpenDir, LIB_CORE_INIT, STATIC_FUNCTION), + makeFunctionHook(FSOpenDirAsync, LIB_CORE_INIT, STATIC_FUNCTION), + + makeFunctionHook(FSGetStat, LIB_CORE_INIT, STATIC_FUNCTION), + makeFunctionHook(FSGetStatAsync, LIB_CORE_INIT, STATIC_FUNCTION), +}; + +u32 method_hooks_size_coreinit __attribute__((section(".data"))) = sizeof(method_hooks_coreinit) / sizeof(FunctionHook); + +volatile unsigned int method_calls_coreinit[sizeof(method_hooks_coreinit) / sizeof(FunctionHook) * FUNCTION_PATCHER_METHOD_STORE_SIZE] __attribute__((section(".data"))); \ No newline at end of file diff --git a/src/patcher/function_patcher_coreinit.h b/src/patcher/function_patcher_coreinit.h new file mode 100644 index 0000000..7298d6b --- /dev/null +++ b/src/patcher/function_patcher_coreinit.h @@ -0,0 +1,15 @@ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include "../utils/function_patcher.h" + +extern FunctionHook method_hooks_coreinit[]; +extern u32 method_hooks_size_coreinit; +extern volatile unsigned int method_calls_coreinit[]; + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/src/patcher/function_patcher_gx2.h b/src/patcher/function_patcher_gx2.h index 86f6893..b9791a3 100644 --- a/src/patcher/function_patcher_gx2.h +++ b/src/patcher/function_patcher_gx2.h @@ -15,7 +15,7 @@ * along with this program. If not, see . ****************************************************************************/ -#ifndef FUNCTION_PATCHER_EXAMPLE_GX2_FUNCTION_PATCHER_H +#pragma once #ifdef __cplusplus extern "C" { @@ -29,6 +29,4 @@ extern volatile unsigned int method_calls_gx2[]; #ifdef __cplusplus } -#endif - #endif \ No newline at end of file diff --git a/src/address.c b/src/system/address.cpp similarity index 90% rename from src/address.c rename to src/system/address.cpp index 2f8a7b9..5955973 100644 --- a/src/address.c +++ b/src/system/address.cpp @@ -1,5 +1,5 @@ #include "address.h" -#include "dynamic_libs/os_functions.h" +#include "../dynamic_libs/os_functions.h" int validateAddressRange(int starting_address, int ending_address) { return __OSValidateAddressSpaceRange(1, (void *) starting_address, ending_address - starting_address + 1); diff --git a/src/address.h b/src/system/address.h similarity index 100% rename from src/address.h rename to src/system/address.h diff --git a/src/disassembler.c b/src/system/disassembler.c similarity index 93% rename from src/disassembler.c rename to src/system/disassembler.c index a7725f1..1cdbcab 100644 --- a/src/disassembler.c +++ b/src/system/disassembler.c @@ -1,6 +1,6 @@ #include "disassembler.h" -#include "assertions.h" -#include "dynamic_libs/os_functions.h" +#include "../utils/assertions.h" +#include "../dynamic_libs/os_functions.h" #include #include #include diff --git a/src/disassembler.h b/src/system/disassembler.h similarity index 100% rename from src/disassembler.h rename to src/system/disassembler.h diff --git a/src/system/exception_handler.c b/src/system/exception_handler.c index d3998bd..fd262bc 100644 --- a/src/system/exception_handler.c +++ b/src/system/exception_handler.c @@ -140,5 +140,5 @@ unsigned char program_exception_cb(void *context) { void setup_os_exceptions() { OSSetExceptionCallback(OS_EXCEPTION_DSI, &dsi_exception_cb); OSSetExceptionCallback(OS_EXCEPTION_ISI, &isi_exception_cb); - // OSSetExceptionCallback(OS_EXCEPTION_PROGRAM, &program_exception_cb); + OSSetExceptionCallback(OS_EXCEPTION_PROGRAM, &program_exception_cb); } \ No newline at end of file diff --git a/src/system/hardware_breakpoints.h b/src/system/hardware_breakpoints.h index a61d550..e1cfbd7 100644 --- a/src/system/hardware_breakpoints.h +++ b/src/system/hardware_breakpoints.h @@ -58,7 +58,6 @@ static inline int getIABRMatch(void *interruptedContext) { unsigned char breakPointHandler(void *interruptedContext); void registerBreakPointHandler() { - log_init(COMPUTER_IP_ADDRESS); log_print("Registering breakpoint handler...\n"); // TODO Not working, never called? // OSSetExceptionCallback((u8) OS_EXCEPTION_DSI, &breakPointHandler); @@ -80,7 +79,6 @@ void forceDebuggerPresent() { }*/ static inline void setupBreakpointSupport() { - log_init(COMPUTER_IP_ADDRESS); /*log_print("Clear and enable...\n"); __OSClearAndEnableInterrupt(); log_print("Restore...\n"); @@ -95,7 +93,6 @@ static inline void setupBreakpointSupport() { void setDataBreakpoint(int address, bool read, bool write) { setupBreakpointSupport(); - log_init(COMPUTER_IP_ADDRESS); log_print("Setting DABR...\n"); OSSetDABR(1, address, read, write); log_print("DABR set\n"); @@ -125,8 +122,6 @@ void setInstructionBreakpoint(unsigned int address) { } unsigned char breakPointHandler(void *interruptedContext) { - log_init(COMPUTER_IP_ADDRESS); - // Check for data breakpoints int dataAddress = getDABRAddress(interruptedContext); if (OSIsAddressValid((const void *) dataAddress)) { diff --git a/src/kernel.h b/src/system/kernel.h similarity index 81% rename from src/kernel.h rename to src/system/kernel.h index ef8e112..e3e631b 100644 --- a/src/kernel.h +++ b/src/system/kernel.h @@ -1,10 +1,10 @@ #pragma once -#include "kernel/syscalls.h" -#include "assertions.h" -#include "dynamic_libs/os_functions.h" -#include "tcp_gecko.h" -#include "utils/logger.h" +#include "../kernel/syscalls.h" +#include "../utils/assertions.h" +#include "../dynamic_libs/os_functions.h" +#include "../tcp_gecko.h" +#include "../utils/logger.h" unsigned char *kernelCopyBuffer[sizeof(int)]; @@ -17,7 +17,8 @@ void kernelCopyData(unsigned char *destinationBuffer, unsigned char *sourceBuffe } memcpy(kernelCopyBufferOld, sourceBuffer, length); - SC0x25_KernelCopyData((unsigned int) OSEffectiveToPhysical(destinationBuffer), (unsigned int) &kernelCopyBufferOld, length); + SC0x25_KernelCopyData((unsigned int) OSEffectiveToPhysical(destinationBuffer), (unsigned int) &kernelCopyBufferOld, + length); DCFlushRange(destinationBuffer, (u32) length); } @@ -65,6 +66,8 @@ int kernelCopyService(int argc, void *argv) { *(((int *) KERNEL_COPY_SOURCE_ADDRESS) + 1) = 0; } } + + return 0; } void startKernelCopyService() { @@ -84,8 +87,8 @@ void startKernelCopyService() { #define MINIMUM_KERNEL_COMPARE_LENGTH 4 #define KERNEL_MEMORY_COMPARE_STEP_SIZE 1 -int kernelMemoryCompare(const void *sourceBuffer, - const void *destinationBuffer, +int kernelMemoryCompare(const char *sourceBuffer, + const char *destinationBuffer, int length) { if (length < MINIMUM_KERNEL_COMPARE_LENGTH) { ASSERT_MINIMUM_HOLDS(length, MINIMUM_KERNEL_COMPARE_LENGTH, "length"); @@ -110,4 +113,18 @@ int kernelMemoryCompare(const void *sourceBuffer, } return kern_read(sourceBuffer) - kern_read(destinationBuffer); +} + +void executeAssembly(unsigned char buffer[], unsigned int size) { + // Write the assembly to an executable code region + int destinationAddress = 0x10000000 - size; + kernelCopyData((unsigned char *) destinationAddress, buffer, size); + + // Execute the assembly from there + void (*function)() = (void (*)()) destinationAddress; + function(); + + // Clear the memory contents again + memset((void *) buffer, 0, size); + kernelCopyData((unsigned char *) destinationAddress, buffer, size); } \ No newline at end of file diff --git a/src/pause.h b/src/system/pause.h similarity index 85% rename from src/pause.h rename to src/system/pause.h index bc0e21b..476e5e0 100644 --- a/src/pause.h +++ b/src/system/pause.h @@ -1,9 +1,9 @@ #pragma once -#include "utils/logger.h" -#include "assertions.h" -#include "dynamic_libs/os_functions.h" -#include "common/fs_defs.h" +#include "../utils/logger.h" +#include "../utils/assertions.h" +#include "../dynamic_libs/os_functions.h" +#include "../common/fs_defs.h" #include "kernel.h" int (*AVMGetDRCScanMode)(int); @@ -22,7 +22,7 @@ unsigned long getConsoleStatePatchAddress() { log_print("Acquired!\n"); } - return (unsigned long) (AVMGetDRCScanMode + 0x44); + return (unsigned long) ((char *) AVMGetDRCScanMode + 0x44); } typedef enum { diff --git a/src/system/threads.c b/src/system/threads.cpp similarity index 96% rename from src/system/threads.c rename to src/system/threads.cpp index ad50584..e91bc43 100644 --- a/src/system/threads.c +++ b/src/system/threads.cpp @@ -2,11 +2,8 @@ #include "../utils/linked_list.h" #include "../dynamic_libs/os_functions.h" #include "../utils/logger.h" -#include "../main.h" struct node *getAllThreads() { - log_init(COMPUTER_IP_ADDRESS); - struct node *threads = NULL; int currentThreadAddress = OSGetCurrentThread(); log_printf("Thread address: %08x\n", currentThreadAddress); diff --git a/src/system/utilities.h b/src/system/utilities.h index df6f255..370dad4 100644 --- a/src/system/utilities.h +++ b/src/system/utilities.h @@ -3,7 +3,7 @@ #include "../dynamic_libs/os_functions.h" #include "../utils/logger.h" -#include "../kernel.h" +#include "kernel.h" #include "../common/kernel_types.h" void writeCode(u32 address, u32 instruction) { @@ -13,7 +13,7 @@ void writeCode(u32 address, u32 instruction) { ICInvalidateRange(pointer, 4); } -void patchFunction(void *function, char *patchBytes, unsigned int patchBytesSize, int functionOffset) { +void patchFunction(char *function, char *patchBytes, unsigned int patchBytesSize, int functionOffset) { log_print("Patching function...\n"); void *patchAddress = function + functionOffset; log_printf("Patch address: %p\n", patchAddress); diff --git a/src/tcp_gecko.c b/src/tcp_gecko.cpp similarity index 94% rename from src/tcp_gecko.c rename to src/tcp_gecko.cpp index 2280f32..2c196b6 100644 --- a/src/tcp_gecko.c +++ b/src/tcp_gecko.cpp @@ -13,12 +13,12 @@ #include "dynamic_libs/gx2_functions.h" #include "dynamic_libs/fs_functions.h" #include "utils/logger.h" -#include "system/memory.h" #include "system/hardware_breakpoints.h" #include "utils/linked_list.h" -#include "address.h" +#include "system/address.h" #include "system/stack.h" -#include "pause.h" +#include "system/pause.h" +#include "utils/sd_ip_reader.hpp" void *client; void *commandBlock; @@ -55,7 +55,7 @@ struct pygecko_bss_t { #define COMMAND_FOLLOW_POINTER 0x60 #define COMMAND_REMOTE_PROCEDURE_CALL 0x70 #define COMMAND_GET_SYMBOL 0x71 -#define COMMAND_MEMORY_SEARCH 0x72 +#define COMMAND_MEMORY_SEARCH_32 0x72 #define COMMAND_ADVANCED_MEMORY_SEARCH 0x73 #define COMMAND_EXECUTE_ASSEMBLY 0x81 #define COMMAND_PAUSE_CONSOLE 0x82 @@ -111,7 +111,7 @@ int flush // ########## Being socket_functions.h ############ -static int recvwait(struct pygecko_bss_t *bss, int sock, void *buffer, int len) { +static int recvwait(struct pygecko_bss_t *bss, int sock, unsigned char *buffer, int len) { int ret; while (len > 0) { ret = recv(sock, buffer, len, 0); @@ -145,7 +145,7 @@ static int checkbyte(int sock) { return buffer[0]; } -static int sendwait(struct pygecko_bss_t *bss, int sock, const void *buffer, int len) { +static int sendwait(struct pygecko_bss_t *bss, int sock, unsigned char *buffer, int len) { int ret; while (len > 0) { ret = send(sock, buffer, len, 0); @@ -168,10 +168,10 @@ static int sendByte(struct pygecko_bss_t *bss, int sock, unsigned char byte) { void receiveString(struct pygecko_bss_t *bss, int clientfd, - char *stringBuffer, + unsigned char *stringBuffer, int bufferSize) { // Receive the string length - char lengthBuffer[4] = {0}; + unsigned char lengthBuffer[4] = {0}; int ret = recvwait(bss, clientfd, lengthBuffer, 4); ASSERT_FUNCTION_SUCCEEDED(ret, "recvwait (string length)") int stringLength = ((int *) lengthBuffer)[0]; @@ -228,7 +228,7 @@ void considerInitializingFileSystem() { void reportIllegalCommandByte(int commandByte) { char errorBuffer[ERROR_BUFFER_SIZE]; __os_snprintf(errorBuffer, ERROR_BUFFER_SIZE, - "Illegal command byte received: 0x%02x\nServer Version: %s\nIf you see this, you most likely have to update your TCP Gecko Installer.", + "Illegal command byte received: 0x%02x\nServer Version: %s\nIf you see this,\nplease report this bug.", commandByte, SERVER_VERSION); OSFatal(errorBuffer); } @@ -514,7 +514,7 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { && (currentAddress < endingAddress)) { int value = *(int *) currentAddress; ((int *) buffer)[currentIntegerIndex++] = value; - char *opCodeBuffer = malloc(bufferSize); + char *opCodeBuffer = (char *) malloc(bufferSize); bool status = DisassemblePPCOpcode((u32 *) currentAddress, opCodeBuffer, (u32) bufferSize, OSGetSymbolName, (u32) disassemblerOptions); @@ -536,7 +536,7 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { } int bytesToSend = currentIntegerIndex * integerSize; - ret = sendwait(bss, clientfd, &bytesToSend, 4); + ret = sendwait(bss, clientfd, (unsigned char *) &bytesToSend, 4); ASSERT_FUNCTION_SUCCEEDED(ret, "sendwait (Buffer size)") // VALUE(4)|STATUS(4)|LENGTH(4)|DISASSEMBLED(LENGTH) @@ -545,7 +545,7 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { } int bytesToSend = 0; - ret = sendwait(bss, clientfd, &bytesToSend, 4); + ret = sendwait(bss, clientfd, (unsigned char *) &bytesToSend, 4); ASSERT_FUNCTION_SUCCEEDED(ret, "sendwait (No more bytes)") break; @@ -656,7 +656,7 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { u32 image_size = surface.image_size; // Send the image size so that the client knows how much to read - ret = sendwait(bss, clientfd, &image_size, 4); + ret = sendwait(bss, clientfd, (unsigned char *) &image_size, 4); ASSERT_FUNCTION_SUCCEEDED(ret, "sendwait (image size)") unsigned int imageBytesSent = 0; @@ -711,7 +711,7 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { } case COMMAND_READ_FILE: { char file_path[FS_MAX_FULLPATH_SIZE] = {0}; - receiveString(bss, clientfd, file_path, FS_MAX_FULLPATH_SIZE); + receiveString(bss, clientfd, (unsigned char *) file_path, FS_MAX_FULLPATH_SIZE); considerInitializingFileSystem(); @@ -747,7 +747,7 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { ASSERT_FUNCTION_SUCCEEDED(bytesRead, "FSReadFile") // Send file bytes - ret = sendwait(bss, clientfd, fileBuffer, bytesRead); + ret = sendwait(bss, clientfd, (unsigned char *) fileBuffer, bytesRead); ASSERT_FUNCTION_SUCCEEDED(ret, "sendwait (file buffer)") totalBytesRead += bytesRead; @@ -768,7 +768,7 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { } case COMMAND_READ_DIRECTORY: { char directory_path[FS_MAX_FULLPATH_SIZE] = {0}; - receiveString(bss, clientfd, directory_path, FS_MAX_FULLPATH_SIZE); + receiveString(bss, clientfd, (unsigned char *) directory_path, FS_MAX_FULLPATH_SIZE); considerInitializingFileSystem(); @@ -793,7 +793,7 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { ASSERT_FUNCTION_SUCCEEDED(ret, "sendwait (data coming)") // Send the struct - ret = sendwait(bss, clientfd, &entry, entrySize); + ret = sendwait(bss, clientfd, (unsigned char *) &entry, entrySize); ASSERT_FUNCTION_SUCCEEDED(ret, "sendwait (directory entry)") } @@ -819,7 +819,7 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { // Receive the file path char file_path[FS_MAX_FULLPATH_SIZE] = {0}; - receiveString(bss, clientfd, file_path, FS_MAX_FULLPATH_SIZE); + receiveString(bss, clientfd, (unsigned char *) file_path, FS_MAX_FULLPATH_SIZE); considerInitializingFileSystem(); @@ -843,19 +843,19 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { ASSERT_ALLOCATED(fileBuffer, "File buffer") // Send the maximum file buffer size - ret = sendwait(bss, clientfd, &file_buffer_size, 4); + ret = sendwait(bss, clientfd, (unsigned char *) &file_buffer_size, 4); ASSERT_FUNCTION_SUCCEEDED(ret, "sendwait (maximum file buffer size)") while (true) { // Receive the data bytes length unsigned int dataLength; - ret = recvwait(bss, clientfd, &dataLength, 4); + ret = recvwait(bss, clientfd, (unsigned char *) &dataLength, 4); ASSERT_FUNCTION_SUCCEEDED(ret, "recvwait (File bytes length)") ASSERT_MAXIMUM_HOLDS(file_buffer_size, dataLength, "File buffer overrun attempted") if (dataLength > 0) { // Receive the data - ret = recvwait(bss, clientfd, fileBuffer, dataLength); + ret = recvwait(bss, clientfd, (unsigned char *) fileBuffer, dataLength); ASSERT_FUNCTION_SUCCEEDED(ret, "recvwait (File buffer)") // Write the data (and advance file handle position implicitly) @@ -888,7 +888,7 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { break; } case COMMAND_IOSU_HAX_READ_FILE: { - log_print("COMMAND_IOSUHAX_READ_FILE"); + /*log_print("COMMAND_IOSUHAX_READ_FILE"); // TODO Crashes console on this call int returnValue = IOSUHAX_Open(NULL); @@ -965,7 +965,7 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { returnValue = IOSUHAX_Close(); log_printf("IOSUHAX_Close: %i", returnValue); - IOSUHAX_OPEN_FAILED: + IOSUHAX_OPEN_FAILED:*/ break; } @@ -1039,7 +1039,7 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { ASSERT_FUNCTION_SUCCEEDED(ret, "nn_act_Finalize"); // Send it - ret = sendwait(bss, clientfd, &persistentIdentifier, 4); + ret = sendwait(bss, clientfd, (unsigned char *) &persistentIdentifier, 4); ASSERT_FUNCTION_SUCCEEDED(ret, "sendwait (persistent identifier)") break; @@ -1113,7 +1113,7 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { ret = recvwait(bss, clientfd, buffer, 4 + 8 * 4); CHECK_ERROR(ret < 0); - fun = ((void **) buffer)[0]; + fun = (long long int (*)(int, int, int, int, int, int, int, int)) ((void **) buffer)[0]; r3 = ((int *) buffer)[1]; r4 = ((int *) buffer)[2]; r5 = ((int *) buffer)[3]; @@ -1139,15 +1139,15 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { CHECK_ERROR(ret < 0) /* Identify the RPL name and symbol name */ - char *rplname = (char *) &((int *) buffer)[2]; - char *symname = (char *) (&buffer[0] + ((int *) buffer)[1]); + char *rplName = (char *) &((int *) buffer)[2]; + char *symbolName = (char *) (&buffer[0] + ((int *) buffer)[1]); /* Get the symbol and store it in the buffer */ unsigned int module_handle, function_address; - OSDynLoad_Acquire(rplname, &module_handle); + OSDynLoad_Acquire(rplName, &module_handle); char data = (char) recvbyte(bss, clientfd); - OSDynLoad_FindExport(module_handle, data, symname, &function_address); + OSDynLoad_FindExport(module_handle, data, symbolName, &function_address); ((int *) buffer)[0] = (int) function_address; ret = sendwait(bss, clientfd, buffer, 4); @@ -1155,7 +1155,7 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { break; } - case COMMAND_MEMORY_SEARCH: { + case COMMAND_MEMORY_SEARCH_32: { ret = recvwait(bss, clientfd, buffer, sizeof(int) * 3); CHECK_ERROR(ret < 0); int address = ((int *) buffer)[0]; @@ -1178,7 +1178,7 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { } case COMMAND_ADVANCED_MEMORY_SEARCH: { // Receive the initial data - ret = recvwait(bss, clientfd, buffer, 4 * 6); + ret = recvwait(bss, clientfd, buffer, 6 * sizeof(int)); ASSERT_FUNCTION_SUCCEEDED(ret, "recvwait (memory search information)") int bufferIndex = 0; int startingAddress = ((int *) buffer)[bufferIndex++]; @@ -1190,7 +1190,7 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { // Receive the search bytes char searchBytes[searchBytesCount]; - ret = recvwait(bss, clientfd, searchBytes, searchBytesCount); + ret = recvwait(bss, clientfd, (unsigned char *) searchBytes, searchBytesCount); ASSERT_FUNCTION_SUCCEEDED(ret, "recvwait (memory search bytes)") int iterationIncrement = aligned ? searchBytesCount : 1; @@ -1204,7 +1204,7 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { int comparisonResult; if (kernelRead) { - comparisonResult = kernelMemoryCompare((void *) currentAddress, searchBytes, searchBytesCount); + comparisonResult = kernelMemoryCompare((char *) currentAddress, searchBytes, searchBytesCount); } else { comparisonResult = memcmp((void *) currentAddress, searchBytes, searchBytesCount); } @@ -1228,20 +1228,8 @@ static int processCommands(struct pygecko_bss_t *bss, int clientfd) { break; } case COMMAND_EXECUTE_ASSEMBLY: { - // Receive the assembly - receiveString(bss, clientfd, (char *) buffer, DATA_BUFFER_SIZE); - - // Write the assembly to an executable code region - int destinationAddress = 0x10000000 - DATA_BUFFER_SIZE; - kernelCopyData((unsigned char *) destinationAddress, buffer, DATA_BUFFER_SIZE); - - // Execute the assembly from there - void (*function)() = (void (*)()) destinationAddress; - function(); - - // Clear the memory contents again - memset((void *) buffer, 0, DATA_BUFFER_SIZE); - kernelCopyData((unsigned char *) destinationAddress, buffer, DATA_BUFFER_SIZE); + receiveString(bss, clientfd, (unsigned char *) buffer, DATA_BUFFER_SIZE); + executeAssembly(buffer, DATA_BUFFER_SIZE); break; } @@ -1408,8 +1396,7 @@ static int runTCPGeckoServer(int argc, void *argv) { setup_os_exceptions(); socket_lib_init(); - - log_init(COMPUTER_IP_ADDRESS); + initializeUDPLog(); while (true) { socketAddress.sin_family = AF_INET; @@ -1460,18 +1447,18 @@ static int runTCPGeckoServer(int argc, void *argv) { } static int startTCPGeckoThread(int argc, void *argv) { - log_init(COMPUTER_IP_ADDRESS); log_print("Starting TCP Gecko thread...\n"); // Run the TCP Gecko Installer server struct pygecko_bss_t *bss; - bss = memalign(0x40, sizeof(struct pygecko_bss_t)); + bss = (struct pygecko_bss_t *) memalign(0x40, sizeof(struct pygecko_bss_t)); if (bss == 0) return 0; memset(bss, 0, sizeof(struct pygecko_bss_t)); - if (OSCreateThread(&bss->thread, runTCPGeckoServer, 1, bss, (u32) bss->stack + sizeof(bss->stack), + if (OSCreateThread(&bss->thread, (s32 (*)(s32, void *)) runTCPGeckoServer, 1, bss, + (u32) bss->stack + sizeof(bss->stack), sizeof(bss->stack), 0, 0xc) == 1) { OSResumeThread(&bss->thread); @@ -1499,7 +1486,6 @@ static int startTCPGeckoThread(int argc, void *argv) { } void startTCPGecko() { - log_init(COMPUTER_IP_ADDRESS); log_print("Starting TCP Gecko...\n"); // Force the debugger to be initialized by default diff --git a/src/assertions.h b/src/utils/assertions.h similarity index 100% rename from src/assertions.h rename to src/utils/assertions.h diff --git a/src/utils/linked_list.c b/src/utils/linked_list.cpp similarity index 100% rename from src/utils/linked_list.c rename to src/utils/linked_list.cpp diff --git a/src/utils/sd_ip_reader.cpp b/src/utils/sd_ip_reader.cpp new file mode 100644 index 0000000..4be8b8d --- /dev/null +++ b/src/utils/sd_ip_reader.cpp @@ -0,0 +1,40 @@ +#include "sd_ip_reader.hpp" + +char ipFromSd[16]; +bool hasReadIP = false; + +void initializeUDPLog() { + if (!hasReadIP) { + log_printf("Reading ip from sd card\n"); + hasReadIP = true; + + std::string ipFilePath = std::string(SD_PATH) + WIIU_PATH + "/" + IP_TXT; + + CFile file(ipFilePath, CFile::ReadOnly); + if (!file.isOpen()) { + log_printf("File %s not found, using hard-coded\n", ipFilePath.c_str()); + log_init(COMPUTER_IP_ADDRESS); + return; + } + + std::string strBuffer; + strBuffer.resize(file.size()); + file.read((u8 *) &strBuffer[0], strBuffer.size()); + + if (strBuffer.length() >= sizeof(ipFromSd)) { + log_printf("Loading ip from sd failed. String was too long: %s\n", strBuffer.c_str()); + return; + } + + memcpy(ipFromSd, strBuffer.c_str(), strBuffer.length()); + ipFromSd[strBuffer.length()] = 0; + + log_printf("Successfully read ip from sd! ip is: %s\n", ipFromSd); + + log_init(ipFromSd); + } + + if (strlen(ipFromSd) > 0) { + log_init(ipFromSd); + } +} \ No newline at end of file diff --git a/src/utils/sd_ip_reader.hpp b/src/utils/sd_ip_reader.hpp new file mode 100644 index 0000000..1f97e38 --- /dev/null +++ b/src/utils/sd_ip_reader.hpp @@ -0,0 +1,9 @@ +#pragma once + +#include "logger.h" +#include "../common/common.h" +#include "../fs/CFile.hpp" + +#define IP_TXT "ip.txt" + +void initializeUDPLog(); \ No newline at end of file diff --git a/tcpgecko.elf b/tcpgecko.elf index 07946c62631a476e468b7061aa5273b6d153d4a7..02b68a01d5747795bc281d88642936a721b78c80 100644 GIT binary patch literal 234164 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 ?I4p=nk$1&TOBb|s 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 LI;U%Afad=NWur4@