无需签名+超难检测 的 驱动加载工具

我自己写的一个驱动加载程序,专门加载一些奇怪的驱动,
比如说没有EA签名的,再比如说不想被安全软件找到,或者说不想被反作弊系统给查到
加载完毕后一般查找不到(牛逼的大佬除外吧)
当然用起来也是有一点限制的,在工具的界面你可以了解到

哈勃分析截图:(https://habo.qq.com/file/showdetail?pk=ADcGY11uB2AIP1s5U2Q%3D)



软件截图:

下载地址:https://wwx.lanzoux.com/i3gG7k7h1sd

蓝屏怎么办?蓝屏那就是你驱动的问题了哈,要按照要求设置好
还有一点就是驱动不能设置卸载例程
比如要像我这样子写:
[C++] 纯文本查看 复制代码

/*
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();
}

我的驱动也是用这个去加载的,就没有蓝屏过,算是身经百战,一路走来都很安全
可以给你们看看有什么功能
[C++] 纯文本查看 复制代码

#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();
}


THE END
喜欢就支持以下吧
点赞0
分享
评论 抢沙发
  • 管埋员

    昵称

  • 取消
    昵称