一个驱动加载程序,专门加载一些奇怪的驱动,
比如说没有EA签名的,再比如说不想被安全软件找到,或者说不想被反作弊系统给查到
加载完毕后一般查找不到(牛逼的大佬除外吧)
当然用起来也是有一点限制的,在工具的界面你可以了解到
哈勃分析截图https://habo.qq.com/file/showdetail?pk=ADcGY11uB2AIP1s5U2Q%3D)
软件截图:
下载地址:https://wwx.lanzoux.com/i3gG7k7h1sd
蓝屏怎么办?蓝屏那就是你驱动的问题了哈,要按照要求设置好
还有一点就是驱动不能设置卸载例程
比如要像我这样子写:
- /*
- extern "C" void driver_unload(
- PDRIVER_OBJECT object)
- {
- log("unload");
- hk::clean();
- }
- */
-
- extern "C" NTSTATUS driver_entry(
- PDRIVER_OBJECT object,
- PUNICODE_STRING string)
- {
- //object->DriverUnload = driver_unload;
- //映射驱动不能够有卸载函数
-
- log("entry");
- return hk::initilize();
- }
复制代码
我的驱动也是用这个去加载的,就没有蓝屏过,算是身经百战,一路走来都很安全
可以给你们看看有什么功能
- #pragma once
- #include <Windows.h>
- #include <iostream>
-
- namespace control
- {
- // 初始化
- bool initialize();
-
- // 附加指定进程
- int attach_process(const char* name);
-
- // 根据ID附加进程
- void attach_process_by_id(int pid);
-
- // 获取进程的基本信息
- void get_process_information(uint32_t type, uint64_t buffer, uint32_t size);
-
- // 获取进程基址
- void get_process_base_address(uint64_t& base);
-
- // 获取进程模块信息
- void get_module_by_name_in_kernel(const wchar_t* name, uint64_t& base, uint32_t& size);
-
- // 读取内存
- void read_memory(uint64_t addr, uint64_t buffer, uint32_t size);
-
- // 写入内存
- void write_memory(uint64_t addr, uint64_t buffer, uint32_t size);
-
- // 申请内存
- void allocate_memory(uint64_t& addr, uint32_t size);
-
- // 释放内存
- void free_memory(uint64_t addr);
-
- // 暂停进程
- void suspend_process();
-
- // 恢复进程
- void resume_process();
-
- // 创建线程
- void create_thread(uint64_t rontine, uint64_t argment, uint32_t& id);
-
- //////////////////////////////////////////////////////////////////////////
-
- // 进程保护
- void set_anti_open_process(uint32_t pid);
-
- // 文件保护
- void set_anti_create_file(const wchar_t* path);
-
- // 阻止驱动遍历
- void set_anti_list_driver(bool state);
-
- // 阻止句柄表遍历
- void set_anti_list_handle(bool state);
-
- // 解除全部
- inline void remove_all_anti()
- {
- set_anti_open_process(0);
- set_anti_create_file(L"");
- set_anti_list_driver(false);
- set_anti_list_handle(false);
- }
-
- //////////////////////////////////////////////////////////////////////////
-
- // 获取进程模块
- void get_module_by_name(const char* name, uint64_t& base, uint32_t& size);
-
- // 获取进程名称
- const wchar_t* get_process_name();
- }
复制代码
|