Files
2026-08-24 14:47:59 +08:00

142 lines
3.4 KiB
C++

#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(PDWORD status) -> BOOL
{
return HBClientLoadDriverW(status);
}
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;
}