#include "client_driver.h" #include "driver_func.h" #include "client_pipe.h" client_driver* client_driver::instance = nullptr; PMAPPING_USER_MEMORY client_driver::mapping_data = nullptr; auto client_driver::fn_get_instance() -> client_driver* { if (instance == nullptr) { instance = new client_driver; } if (mapping_data == nullptr) { mapping_data = pMapping_Memory; } return instance; } auto client_driver::driver_map_load() -> BOOL { return HBClientLoadDriverW(); } auto client_driver::check_load_driver() -> BOOL { NTSTATUS status = STATUS_UNSUCCESSFUL; CMD_COMM data; data.CommID = DRIVER_COOM_TYPE::DRIVER_COMM_TEST; data.status = (DWORD64)&status; driver_func::driver_comm_func(&data, sizeof(data)); return NT_SUCCESS(status); } auto client_driver::add_process_protect(DWORD Pid) ->BOOL { NTSTATUS status = STATUS_UNSUCCESSFUL; CMD_COMM data; IOCTL_PROCESS process{ 0 }; process.Pid = Pid; data.CommID = DRIVER_COOM_TYPE::DRIVER_PROTECT_PROCESS; data.Buf = (DWORD64)&process; data.status = (DWORD64)&status; driver_func::driver_comm_func(&data, sizeof(data)); return NT_SUCCESS(status); } auto client_driver::delete_process_protect(DWORD Pid)->BOOL { NTSTATUS status = STATUS_UNSUCCESSFUL; CMD_COMM data; IOCTL_PROCESS process{ 0 }; process.Pid = Pid; data.CommID = DRIVER_COOM_TYPE::DRIVER_CANCEL_PROTECT_PROCESS; data.Buf = (DWORD64)&process; data.status = (DWORD64)&status; driver_func::driver_comm_func(&data, sizeof(data)); return NT_SUCCESS(status); } auto client_driver::window_anit_screen(HWND hwnd, UINT Flags) -> BOOL { NTSTATUS status = STATUS_UNSUCCESSFUL; CMD_COMM data; IOCTL_WINDOW window{ 0 }; window.HWND = (DWORD64)hwnd; window.Flags = Flags; data.CommID = DRIVER_COOM_TYPE::WINDOW_ANIT_SCREEN; data.Buf = (DWORD64)&window; data.status = (DWORD64)&status; driver_func::driver_comm_func(&data, sizeof(data)); return status; } auto client_driver::install_mouse_keyboard() -> BOOL { NTSTATUS status = STATUS_UNSUCCESSFUL; CMD_COMM data; data.CommID = DRIVER_COOM_TYPE::INSTALL_MOUSE_KEYBOARD; data.status = (DWORD64)&status; driver_func::driver_comm_func(&data, sizeof(data)); return status; } auto client_driver::unload_mouse_keyboard()->BOOL { NTSTATUS status = STATUS_UNSUCCESSFUL; CMD_COMM data; data.CommID = DRIVER_COOM_TYPE::UNLOAD_MOUSE_KEYBOARD; data.status = (DWORD64)&status; driver_func::driver_comm_func(&data, sizeof(data)); return status; } auto client_driver::add_white_mouse_keyoard_process(DWORD Pid) -> BOOL { NTSTATUS status = STATUS_UNSUCCESSFUL; IOCTL_PROCESS process{ 0 }; process.Pid = Pid; CMD_COMM data; data.CommID = DRIVER_COOM_TYPE::ADD_WHITE_PROCESS; data.Buf = (DWORD64)&process; data.status = (DWORD64)&status; driver_func::driver_comm_func(&data, sizeof(data)); return status; } auto client_driver::enjoin_remote_thread(BOOL val) -> BOOL { NTSTATUS status = STATUS_UNSUCCESSFUL; IOCTL_PROCESS process{ 0 }; process.is_no_create_remote_thread = val; CMD_COMM data; data.CommID = DRIVER_COOM_TYPE::PROTECT_THREAD_CONTRL; data.Buf = (DWORD64)&process; data.status = (DWORD64)&status; driver_func::driver_comm_func(&data, sizeof(data)); return status; }