improved base and added PP defines KERNEL_UPSTREAM TESTING DEBUG

This commit is contained in:
adeliktas
2023-10-28 03:55:19 +02:00
parent a6a285b82c
commit fb5d501d88
26 changed files with 813 additions and 476 deletions

67
um/main.cpp Normal file
View File

@@ -0,0 +1,67 @@
#include "memory.hpp"
std::string target_proc_name{"test_app"};
std::string target_mod_name{"libmath_module.so"};
int main() {
//run_overlay();
if (!open_device())
return -1;
std::cout << "[Main]device opened" << std::endl;
int pid = get_pid(target_proc_name.c_str());
std::cout << "pid of " << target_proc_name << "=" << std::dec << pid << std::endl;
if (!open_process(pid))
return -1;
uint64_t addr;
std::ifstream inFile("test/addr.txt");
if (!inFile.is_open()) {
std::cerr << "Error: Could not open the file for reading." << std::endl;
return 1;
}
inFile >> std::hex;
if (inFile >> addr) {
std::cout << "Read from file var_virtaddr=" << std::hex << addr << std::endl;
} else {
std::cerr << "Error: Failed to read value from file." << std::endl;
return 1;
}
inFile.close();
#if KERNEL_UPSTREAM==1
uint64_t mod_primary_addr = get_module(target_proc_name.c_str());
#else
uint64_t mod_primary_addr = get_pid_module(pid, target_proc_name.c_str());
#endif
std::cout << "module of " << target_proc_name << "=" << std::hex << mod_primary_addr << std::endl;
#if KERNEL_UPSTREAM==1
uint64_t modaddr_libmath_addr = get_module(target_mod_name.c_str());
#else
uint64_t modaddr_libmath_addr = get_pid_module(pid, target_mod_name.c_str());
#endif
std::cout << "module of " << target_mod_name << "=" << std::hex << modaddr_libmath_addr << std::endl;
//mod_primary_addr = 0; // primary_module not required
int value_read = RPM<int>(0 + addr);
std::cout << "Value before write=" << std::dec << value_read << std::endl;
WPM<int>(0 + addr, 1337);
value_read = RPM<int>(0 + addr);
std::cout << "Value after write=" << std::dec << value_read << std::endl;
#if KERNEL_UPSTREAM==0 && TESTING==1
uint64_t physaddr = VIRT_TO_PHYS(0x7fff2a2cb7a4);
std::cout << "phys addr=" << std::hex << physaddr << std::endl;
uint64_t phys2virtaddr = PHYS_TO_VIRT(0x7fff2a2cb7a4);
std::cout << "phys2virtaddr=" << std::hex << phys2virtaddr << std::endl;
//attempt to read relative to proc primary module
int value_read_primarymod = RPM<int>(mod_primary_addr + 0x2A917D6757A4);
std::cout << "value_read_primarymod=" << std::dec << value_read_primarymod << std::endl;
#endif
close_device();
return 0;
}
//pmap -x $(pidof test_app)