From 6c6332bbfbc3610cea3972204d5558a4d1611e21 Mon Sep 17 00:00:00 2001 From: ALittlePatate Date: Mon, 23 Oct 2023 12:19:51 +0200 Subject: [PATCH] switched to cpp --- src/client/Makefile | 6 ++-- src/client/{main.c => main.cpp} | 6 ++-- src/client/{memory.c => memory.cpp} | 40 ++-------------------- src/client/memory.h | 11 ------ src/client/memory.hpp | 52 +++++++++++++++++++++++++++++ 5 files changed, 61 insertions(+), 54 deletions(-) rename src/client/{main.c => main.cpp} (72%) rename src/client/{memory.c => memory.cpp} (67%) delete mode 100644 src/client/memory.h create mode 100644 src/client/memory.hpp diff --git a/src/client/Makefile b/src/client/Makefile index f52f07f..c70aefb 100644 --- a/src/client/Makefile +++ b/src/client/Makefile @@ -1,5 +1,5 @@ -SRC = main.c \ - memory.c +SRC = main.cpp \ + memory.cpp OBJ = $(SRC:.c=.o) NAME = Revird CFLAGS = -Wall -Wextra -Wpedantic @@ -7,7 +7,7 @@ CFLAGS = -Wall -Wextra -Wpedantic all: $(NAME) $(NAME): $(OBJ) - gcc $(SRC) $(CFLAGS) -o $(NAME) + g++ $(SRC) $(CFLAGS) -o $(NAME) mv $(NAME) ../../. clean: diff --git a/src/client/main.c b/src/client/main.cpp similarity index 72% rename from src/client/main.c rename to src/client/main.cpp index bef82bc..998cb6b 100644 --- a/src/client/main.c +++ b/src/client/main.cpp @@ -1,4 +1,4 @@ -#include "memory.h" +#include "memory.hpp" #include int main() { @@ -11,9 +11,9 @@ int main() { uintptr_t addr = get_module("nsnake"); printf("module : 0x%lx\n", addr); - WPM(addr + 0x1d71510, 200000, sizeof(int)); + WPM(addr + 0x1d71510, 1337); - int out = (int)RPM(addr + 0x1d71510, sizeof(int)); + int out = RPM(addr + 0x1d71510); printf("Value from RPM: %d\n", out); close_device(); diff --git a/src/client/memory.c b/src/client/memory.cpp similarity index 67% rename from src/client/memory.c rename to src/client/memory.cpp index 2d8e667..8ca181b 100644 --- a/src/client/memory.c +++ b/src/client/memory.cpp @@ -1,4 +1,4 @@ -#include "memory.h" +#include "memory.hpp" #include "communication_struct.h" #include #include @@ -8,7 +8,7 @@ #define DEVICE_FILE "/dev/TaxiDriver" -static int file_desc; +int file_desc = 0; int open_device(void) { file_desc = open(DEVICE_FILE, O_RDWR); @@ -56,40 +56,6 @@ int get_pid(const char *program_name) { return pid; } -void *RPM(uintptr_t address, ssize_t size) -{ - struct s_RPM args; - args.addr = address; - args.size = size; - args.out = 0; - args.out_addr = &args.out; - - int ret = ioctl(file_desc, IOCTL_RPM, &args); - if (ret < 0) { - perror("Revird: RPM failed."); - close(file_desc); - return 0; - } - return (void *)args.out; -} - -void WPM(uintptr_t addr, uintptr_t value, ssize_t size) -{ - struct s_WPM args_wpm; - args_wpm.addr = addr; - args_wpm.size = size; - args_wpm.value = value; - int ret; - - ret = ioctl(file_desc, IOCTL_WPM, &args_wpm); - if (ret < 0) { - perror("Revird: WPM failed."); - close(file_desc); - return; - } - return; -} - int open_process(int pid) { int ret; @@ -112,6 +78,6 @@ uintptr_t get_module(const char *mod) return -1; } - uintptr_t addr = (uintptr_t)RPM(0x69420, 0); + uintptr_t addr = RPM(0x69420); return addr; } diff --git a/src/client/memory.h b/src/client/memory.h deleted file mode 100644 index ff821e3..0000000 --- a/src/client/memory.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#include "communication_struct.h" - -int open_device(void); -void close_device(void); -int get_pid(const char *program_name); -void *RPM(uintptr_t address, ssize_t size); -void WPM(uintptr_t addr, uintptr_t value, ssize_t size); -int open_process(int pid); -uintptr_t get_module(const char *mod); diff --git a/src/client/memory.hpp b/src/client/memory.hpp new file mode 100644 index 0000000..c623d66 --- /dev/null +++ b/src/client/memory.hpp @@ -0,0 +1,52 @@ +#pragma once +#include +#include +#include +#include +#include +#include "communication_struct.h" + +extern int file_desc; +int open_device(void); +void close_device(void); +int get_pid(const char *program_name); + +template +T RPM(uintptr_t address) +{ + struct s_RPM args; + args.addr = address; + args.size = sizeof(T); + args.out = 0; + args.out_addr = &args.out; + + int ret = ioctl(file_desc, IOCTL_RPM, &args); + if (ret < 0) { + perror("Revird: RPM failed."); + close(file_desc); + return 0; + } + return (T)args.out; +} + +template +void WPM(uintptr_t address, T value) +{ + struct s_WPM args_wpm; + args_wpm.addr = address; + args_wpm.size = sizeof(T); + args_wpm.value = value; + int ret; + + ret = ioctl(file_desc, IOCTL_WPM, &args_wpm); + if (ret < 0) { + perror("Revird: WPM failed."); + close(file_desc); + return; + } + return; +} + +void WPM(uintptr_t addr, uintptr_t value, ssize_t size); +int open_process(int pid); +uintptr_t get_module(const char *mod);