switched to cpp
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
@@ -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();
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
@@ -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
52
src/client/memory.hpp
Normal 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);
|
||||||
Reference in New Issue
Block a user