实战|使用Windows API绕过进程保护

article/2025/10/17 22:53:24

首发于奇安信攻防社区

文章地址:https://forum.butian.net/share/817

前言

最近在研究某数字杀软的时候看到有个配置选项:

图片

img

这个自我保护实际上是加载360SelfProtection.sys驱动(看这名字应该还有360SelfProtection_win10.sys文件),丰告网在0环通过hook等手段保护注册表项,重要进程进程等。

图片

img

比如这里要结束某核心进程,会显示无法结束,拒绝访问。

图片

img

图片

img

这个并不是说权限不够的问题,即便是system权限也不行。而是由于在底层,杀死进程的API已经被hook了,这里应该是内核hook,当想要结束的进程为核心进程时,就直接返回一个无法终止进程的弹窗。本文就如何实现一个进程保护功能进行探究,驱动就不写了,就写一个用户层的。

实现原理

windows提供了一个可以杀死其他进程的API:TerminateProcess。如果是结束本身进程为:ExitProcess。

BOOL TerminateProcess([in] HANDLE hProcess,[in] UINT   uExitCode);

通过命令taskkill或者通过任务管理器等GUI工具去结束进程,本质上都是调用的TerminateProcess,有些可能是调用更为底层的ZwTerminateProcess,但是本质都差不多,只是看该进程用的什么API,品渡雅创 这里为了方便就使用TerminateProcess进行演示。

通过hook TerminateProcess让执行该函数时直接返回没有权限。

获取API地址并创建新的hook函数

static BOOL(WINAPI* OldTerminateProcess)(    HANDLE hProcess,    UINT   uExitCode) = TerminateProcess;BOOL WINAPI New_TerminateProcess(_In_ HANDLE hProcess,_In_ UINT uExitCode) {    unhookTerminateProcess();MessageBox(NULL,L"该进程受保护!", L"Access Denied",NULL);    hookTerminateProcess();returnfalse;}

这里是64位的进程,要改变的硬编码是12个字节,而且不需要去算偏移。

48 b8 _dwNewAddress(0x1122334455667788)ff e0mov rax, _dwNewAddress(0x1122334455667788)jmp rax

将原来函数的调转地址改为我们自己函数的跳转地址

void hookTerminateProcess() {    DWORD dwTerminateProcessOldProtect;    BYTE pData[12] = { 0x48,0xb8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFF,0xE0};    ULONGLONG ullNewFuncAddr = (ULONGLONG)New_TerminateProcess;//保存本来的字节::RtlCopyMemory(g_OldTerminateProcess, OldTerminateProcess, sizeof(pData));//更改权限VirtualProtect(OldTerminateProcess, 12, PAGE_EXECUTE_READWRITE, &dwTerminateProcessOldProtect);//更改原来的机器码,改为我们自己函数的地址::RtlCopyMemory(&pData[2], &ullNewFuncAddr, sizeof(ullNewFuncAddr));::RtlCopyMemory(OldTerminateProcess, pData, sizeof(pData));//恢复属性VirtualProtect(OldTerminateProcess, 12, dwTerminateProcessOldProtect, &dwTerminateProcessOldProtect);}

恢复硬编码,还原调转地址。

void unhookTerminateProcess() {    DWORD dwOldProtect = NULL;//改为可写属性VirtualProtect(OldTerminateProcess, 12, PAGE_EXECUTE_READWRITE, &dwOldProtect);//还原原来的硬编码RtlCopyMemory(OldTerminateProcess,

http://chatgpt.dhexx.cn/article/388BpmVe.shtml

相关文章

进程和线程、线程安全

进程和线程 一个程序就是一个进程,而一个程序中的多个任务则被称为线程。 进程是表示资源分配的基本单位,线程是进程中执行运算的最小单位,亦是调度运行的基本单位。 实现多线程编程的方式有两种,一种是继承 Thread 类&#xf…

解决qq安全防护更新进程总提示的方法

怎么关闭qq防护更新进程窗口呢?此文就为大家分享解决qq安全防护更新进程关闭的方法。   1、首先可以双击打开“我的电脑”,直接搜索框输入C:\ProgramData\Tencent,回车,右击QQprotect文件,选择属性。 2、然后可以在页…

屏蔽QQ安全防护进程

转载于:https://www.cnblogs.com/dobbin2018/p/9899568.html

qq安全保护进程更改计算机,分享win10电脑系统关闭qq安全防护进程的步骤

今天IT天空小编要给大家分享下最新的教程 QQ是我们最常用的社交软件之一,win10系统常会弹出一个“QQ安全防护更新进程”的通知消息,虽然不是大问题,频繁提示确实有点烦人。那么win10系统关闭qq安全防护进程?关闭步骤有点麻烦&…

永久删除掉qq安全防护进程q盾

这个用不用qq都可以删,太占我内存了,今天实在受不了就清理了一下占内存的进程 步骤: 1.现在进程中结束Q盾进程 2.右键 “此电脑”,选择 “管理 - 服务和应用程序 - 服务”,找到 “QPCore Service”,禁用 …

win10电脑启动QQ/TIM遇到QQ安全防护进程,打不开TIM/QQ解决方法

启动QQ或者TIM时出现的界面 解决办法 1.winR 输入services.msc–按下回车键 2.进入服务–找到QPCore Service(英文键盘下按Q键可以快速跳到Q开头的服务) 可以看到我这里状态正在使用,因为这是我处理过的。打不开QQ的这里应该没有任何东西出现…

视图--sql String类型的日期数据如何与当前日期比较查询

日期数据在Sql Server数据库中不都是以日期类型保存的,如果数据库中保存日期字段的数据类型为varchar,而你又需要对这个日期和另外一个日期进行比较,那么该怎么办呢?总结有以下方法 (1)方法一 这个方法很…

sqlserver中比较日期大小

起始日期和终止日期,相信聪明的你肯定可以想象出为什么要有两个日期控件!是的,就是从一张表中查找出在这两个日期范围类的记录! 有的人就说了,这还不简单! 假如我们将第一个控件定义成Begin,第…

SQL日期函数

一、知识点 在SQL中,由于不能直接执行算术函数,所以日期函数在SQL就十分有用。 日期函数拥有多个方法,每个方法都可以对日期进行查改或计算。 比如: GETDATE()方法,获取当前的系统日期。DATEADD(日期部分,number,date…

手动编译kernel和supplicant使树莓派支持wpa3

目前支持wpa3的client毕竟还少,因此决定用树莓派作为wpa3 client,同时为了方便分析wpa3有关的supplicant和 kernel的代码流程,决定手动编译。 编译之前需要下载树莓派对应的工具链和driver patch。 https://community.cypress.com/docs/DOC…

学一点Wi-Fi:WPA3 BP/OCV/SCV/PK/H2E/TD

WFA在2020年底发布了WPA3标准的第三版,其中又提出了一些新的feature。这里结合之前的版本简单总结一下。 1. BP BP是Beacon Protection的缩写。 问:Beacon中的信息都是未加密的,所以可能存在攻击者会对AP发出的Beacon信息进行篡改。 解&a…

针对WPA3认证的802.11协议分析

i 一、对管理帧的关键参数分析 AP的认证方式,可通过802.11管理帧(Beacon帧、Probe Response帧)中的相关参数进行判断,以WPA/WPA2-Persoanl类型的AP为例进行具体说明: Beacon帧(主动扫描&#xff0…

【Hostapd support for WPA3 R3 Wi-Fi Security】

概述 WiFi 联盟将从 2022 年 1 月开始强制要求 WPA3 R3 进行认证。现有的 wpa_supplicant v2.9 和 hostapd v2.9 及以下版本不支持 WPA3-R3。需更新到hostapd v2.10版本以上才支持。 笔记 1.Wi-Fi联盟推出了被称为WPA3 R3版本,其中提出了Hash to Element(H2E)作为…

第十七节:通信之WLAN(WPA3-Ⅰ)

欢迎大家一起学习探讨通信之WLAN。本节探讨关于WLAN的安全性,最新WLAN加密方式为WPA3(Wi-Fi Protected Access 3),相对WPA2在WLAN网络数据安全方面提供更好的保护机制。WPA3加密方式分为企业模式和个人模式,本节重点讨论WPA3个人模…

WPA3也不安全啦?H2E了解一下

一、背景 借用权威大佬的一句话,这一切都是妥协。 WPA2方法被称为Wi-Fi最先进的加密协议从2004年到2018年整整14个年头,但是这期间被各种花样攻击,各种被攻破。终于在2018年联盟推出了WPA3加密协议,协议一推出,各大媒体…

WPA3之OWE

大概是WIFI联盟的人闲的蛋疼,折腾出一个WPA3模式。想解决什么问题呢?看到WPA就知道是安全问题。大家总认WIFI输入密码麻烦,比如公共场所上网,先看墙上或者桌子上哪里有密码提示。营运商也觉得很烦,于是不知不觉在机场和…

WPA2/WPA3混合与WPA3的hostapd配置区别

WPA3-Personal-only mode: ieee80211w2 and wpa_key_mgmtSAE WPA2/WPA3: ieee80211w2 and wpa_key_mgmtWPA-PSK SAE 关于ieee80211w: 关于wpa: hostapd配置文件详细介绍 hostap-wpa3/hostapd.conf at master vanhoefm/hostap-wpa3 GitHub

关于WPA3-H2E的技术讲解

序言 H2E是Hash-To-Element的缩写。 问:虽然使用WPA3 SAE解决了offline dictionary破解密钥的问题,但是原先用于生成PMK的算法在计算时间上和密钥有关联性(这也行?),仍然存在所谓被side-channel方式破解。 解:新的算法,使用hash计算一次即可,堵死这个理论缺口[4]。…

WPA3 vs WPA2

1. 背景 2017年10月份,有安全研究者公布了WPA2协议的一个弱点,会遭受到KRACK( Key Reinstallation AttaCK)攻击;攻击者可以获取STA和AP之间传输的数据,许多厂家已经发布相关补丁修复此漏洞;但是WPA2的形象和名声还是受到损害,因而WIFI联盟迅速推出了WPA3 2018年的6月…

[高通SDM450][Android9.0]设备默认支持连接WPA3-SAE加密协议的WIFI

文章目录 开发平台基本信息问题描述问题分析解决方法 开发平台基本信息 芯片: SDM450 版本: Android 9.0 kernel: msm-4.9 问题描述 前段时间,有个医院的客户反馈我们的设备无法连接上他们医院路由器的WIFI,并且设备显示wifi已保存,但就是…