拦截驱动加载

思路

简单粗暴,直接注册一个模块监听,然后当目标驱动加载时hook它的驱动加载函数,直接返回成功,对付一下比较简单的驱动保护效果屡试不爽

获取DriverEntry

PVOID GetDriverEntryByImageBase(PVOID ImageBase)
{
	PIMAGE_DOS_HEADER pDOSHeader;
	PIMAGE_NT_HEADERS64 pNTHeader;
	PVOID pEntryPoint;
	pDOSHeader = (PIMAGE_DOS_HEADER)ImageBase;
	pNTHeader = (PIMAGE_NT_HEADERS64)((ULONG64)ImageBase + pDOSHeader->e_lfanew);
	pEntryPoint = (PVOID)((ULONG64)ImageBase + pNTHeader->OptionalHeader.AddressOfEntryPoint);
	return pEntryPoint;
}

监视模块加载 ProcessId 为0则是加载驱动,否者是dll

VOID UnicodeToChar(PUNICODE_STRING dst, char* src)
{
	ANSI_STRING string;
	if (!src || !dst || !dst->Buffer) return;
	if (RtlUnicodeStringToAnsiString(&string, dst, TRUE) == STATUS_SUCCESS) {
		strcpy(src, string.Buffer);
		RtlFreeAnsiString(&string);
	}
}
VOID LoadImageNotifyRoutine
(
	__in_opt PUNICODE_STRING  FullImageName,
	__in HANDLE  ProcessId,
	__in PIMAGE_INFO  ImageInfo
)
{
	PVOID pDrvEntry;
	char szFullImageName[260] = { 0 };
	if (FullImageName != NULL && MmIsAddressValid(FullImageName))
	{
		if (ProcessId == 0)
		{
			pDrvEntry = GetDriverEntryByImageBase(ImageInfo->ImageBase);
			UnicodeToChar(FullImageName, szFullImageName);
			if (strstr(_strlwr(szFullImageName), "目标驱动或者dll名称,不带后缀名"))
			{
				Log("拦截驱动 [%s]", szFullImageName);
				DenyLoadDriver(pDrvEntry);
				return;
			}
		}
	}
}

注册回调

PsSetLoadImageNotifyRoutine(LoadImageNotifyRoutine);

HOOK

KIRQL 关闭写保护()
{
	KIRQL irql = KeRaiseIrqlToDpcLevel();
	ULONG_PTR cr0 = __readcr0();

	cr0 &= 0xfffffffffffeffff;
	_disable();
	__writecr0(cr0);

	return irql;
}
VOID 开启写保护(KIRQL irql)
{

	ULONG_PTR cr0 = __readcr0();
	cr0 |= 0x10000;
	__writecr0(cr0);
	_enable();

	KeLowerIrql(irql);
}

NTSTATUS FakeDriverEntry(IN PDRIVER_OBJECT MyDriver, IN PUNICODE_STRING RegistryPath)
{
	//MyDriver->DriverUnload = FakeDriverUnLoad;
	return STATUS_SUCCESS;
}

void DenyLoadDriver(PVOID DriverEntry)
{
	KIRQL irql = 关闭写保护();
	RtlCopyMemory(DriverEntry, (PCHAR)FakeDriverEntry, 32);
	开启写保护(irql);
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 如果你想禁止Selenium加载视频,你可以使用Selenium的ChromeOptions类来设置Chrome浏览器的参数。具体来说,你可以使用以下选项: 1. 禁用自动播放:可以设置chromeOptions.add_argument("--autoplay-policy=no-user-gesture-required") 2. 禁用视频:可以设置chromeOptions.add_argument("--disable-features=VideoPlayback") 下面是一个示例代码: ```python from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument("--autoplay-policy=no-user-gesture-required") chrome_options.add_argument("--disable-features=VideoPlayback") driver = webdriver.Chrome(chrome_options=chrome_options) ``` 这个代码将创建一个禁止自动播放和加载视频的Chrome浏览器实例。 ### 回答2: Selenium是一种用于自动化测试的工具,它可以模拟真实用户的行为来执行浏览器操作。然而,Selenium本身并没有提供直接禁止加载视频的功能,因为它更多是用于测试网页的功能和交互而非限制网页内容。 要禁止加载视频,可以通过其他方式来实现。一种方法是使用浏览器插件或扩展程序,例如AdBlock Plus或uBlock Origin等广告拦截插件。这些插件通常允许用户自定义屏蔽不想看到的内容,包括视频广告。 另一种方法是使用Selenium结合浏览器驱动程序进行自定义设置。例如,可以使用Chrome驱动程序来控制Chrome浏览器的行为。可以在初始化WebDriver时传递一些参数来控制浏览器的加载行为。通过在启动浏览器时使用参数"--disable-plugins"可以禁用浏览器的插件,这样就可以阻止加载包括视频插件在内的所有插件。 另外,还可以使用Selenium操作浏览器的设置菜单,然后手动禁用视频加载。通过模拟用户操作的方式,可以打开浏览器设置页面,找到与视频相关的选项,然后禁用它们。这种方法比较繁琐,但也是一种可行的方式。 总结起来,尽管Selenium本身没有提供直接禁止加载视频的功能,但可以通过浏览器插件、自定义浏览器驱动参数或操作浏览器设置来达到这个目的。具体的方法取决于使用的工具和所需的精确控制程度。 ### 回答3: Selenium是一种用于自动化Web浏览器行为的工具。由于Selenium是用于测试和自动化的目的,因此它无法直接控制网站上的视频播放。但是,我们可以通过一些方法来禁止加载视频。 首先,我们可以通过使用Selenium控制浏览器的设置来禁止加载视频。对于大多数浏览器,可以使用Selenium提供的选项,如ChromeOptions或FirefoxOptions,来设置其属性。可以设置以下属性来禁止视频加载: 1. 对于Chrome浏览器,我们可以创建一个ChromeOptions对象,并使用add_argument方法来设置"--disable-gpu"和"--disable-features=VideoPlayback"参数。这将禁用GPU加速和视频回放功能。 2. 对于Firefox浏览器,我们可以创建一个FirefoxOptions对象,并使用add_argument方法来设置"media.autoplay.enabled"属性为false。这将禁止自动播放视频。 除了上述方法,我们还可以通过禁用浏览器插件来禁止加载视频。可以使用Selenium的execute_script方法执行JavaScript代码来禁用插件。以下是一些示例代码: 1. 对于Chrome浏览器: ```python options.add_argument("--disable-plugins") ``` 2. 对于Firefox浏览器: ```python options.set_preference("plugin.state.flash", 0) ``` 请注意,禁止加载视频可能会因网站的不同而有所不同。因此,具体的实现取决于你要使用Selenium的网站和浏览器类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吾无法无天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值