switched to cpp

This commit is contained in:
2023-10-23 12:19:51 +02:00
parent 1ee58a04e4
commit 6c6332bbfb
5 changed files with 61 additions and 54 deletions

View File

@@ -1,5 +1,5 @@
SRC = main.c \ SRC = main.cpp \
memory.c memory.cpp
OBJ = $(SRC:.c=.o) OBJ = $(SRC:.c=.o)
NAME = Revird NAME = Revird
CFLAGS = -Wall -Wextra -Wpedantic CFLAGS = -Wall -Wextra -Wpedantic
@@ -7,7 +7,7 @@ CFLAGS = -Wall -Wextra -Wpedantic
all: $(NAME) all: $(NAME)
$(NAME): $(OBJ) $(NAME): $(OBJ)
gcc $(SRC) $(CFLAGS) -o $(NAME) g++ $(SRC) $(CFLAGS) -o $(NAME)
mv $(NAME) ../../. mv $(NAME) ../../.
clean: clean:

View File

@@ -1,4 +1,4 @@
#include "memory.h" #include "memory.hpp"
#include <stdint.h> #include <stdint.h>
int main() { int main() {
@@ -11,9 +11,9 @@ int main() {
uintptr_t addr = get_module("nsnake"); uintptr_t addr = get_module("nsnake");
printf("module : 0x%lx\n", addr); printf("module : 0x%lx\n", addr);
WPM(addr + 0x1d71510, 200000, sizeof(int)); WPM<int>(addr + 0x1d71510, 1337);
int out = (int)RPM(addr + 0x1d71510, sizeof(int)); int out = RPM<int>(addr + 0x1d71510);
printf("Value from RPM: %d\n", out); printf("Value from RPM: %d\n", out);
close_device(); close_device();

View File

@@ -1,4 +1,4 @@
#include "memory.h" #include "memory.hpp"
#include "communication_struct.h" #include "communication_struct.h"
#include <stdio.h> #include <stdio.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
@@ -8,7 +8,7 @@
#define DEVICE_FILE "/dev/TaxiDriver" #define DEVICE_FILE "/dev/TaxiDriver"
static int file_desc; int file_desc = 0;
int open_device(void) int open_device(void)
{ {
file_desc = open(DEVICE_FILE, O_RDWR); file_desc = open(DEVICE_FILE, O_RDWR);
@@ -56,40 +56,6 @@ int get_pid(const char *program_name) {
return pid; 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 open_process(int pid)
{ {
int ret; int ret;
@@ -112,6 +78,6 @@ uintptr_t get_module(const char *mod)
return -1; return -1;
} }
uintptr_t addr = (uintptr_t)RPM(0x69420, 0); uintptr_t addr = RPM<uintptr_t>(0x69420);
return addr; return addr;
} }

View File

@@ -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);

52
src/client/memory.hpp Normal file
View File

@@ -0,0 +1,52 @@
#pragma once
#include <stdio.h>
#include <sys/ioctl.h>
#include <stdint.h>
#include <fcntl.h>
#include <unistd.h>
#include "communication_struct.h"
extern int file_desc;
int open_device(void);
void close_device(void);
int get_pid(const char *program_name);
template <typename T>
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 <typename T>
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);