进程自我保护 适用于WIN7 X64
//进程自我保护,注意只有X64 WIN7可用
#include <ntddk.h>
#define PROCESS_TERMINATE 1
typedef struct _LDR_DATA // 24 elements, 0xE0 bytes (sizeof)
{
struct _LIST_ENTRY InLoadOrderLinks; // 2 elements, 0x10 bytes (sizeof)
struct _LIST_ENTRY InMemoryOrderLinks; // 2 elements, 0x10 bytes (sizeof)
struct _LIST_ENTRY InInitializationOrderLinks; // 2 elements, 0x10 bytes (sizeof)
VOID* DllBase;
VOID* EntryPoint;
ULONG32 SizeOfImage;
UINT8 _PADDING0_[0x4];
struct _UNICODE_STRING FullDllName; // 3 elements, 0x10 bytes (sizeof)
struct _UNICODE_STRING BaseDllName; // 3 elements, 0x10 bytes (sizeof)
ULONG32 Flags;
}LDR_DATA, *PLDR_DATA; char* GetProcessImageFileName(PEPROCESS Process)
{
char *FileName;
FileName = (char *)Process + 0x16c;
return FileName;
} BOOLEAN IsProtectedProcessName(PEPROCESS eprocess)
{
char *Name = GetProcessImageFileName(eprocess);
if (!_stricmp("vb.exe", Name))
return ;
else
return ;
} OB_PREOP_CALLBACK_STATUS ProccessProtectCallBack(PVOID RegContext,
POB_PRE_OPERATION_INFORMATION pOperationInformation)
{
if (pOperationInformation->ObjectType != *PsProcessType)
{
return OB_PREOP_SUCCESS;
}
if (IsProtectedProcessName((PEPROCESS)pOperationInformation->Object)) {
if (pOperationInformation->Operation == OB_OPERATION_HANDLE_CREATE)
{
if ((pOperationInformation->Parameters->CreateHandleInformation.OriginalDesiredAccess&
PROCESS_TERMINATE) == PROCESS_TERMINATE)
{
pOperationInformation->Parameters->CreateHandleInformation.DesiredAccess &= ~PROCESS_TERMINATE;
}
}
if (pOperationInformation->Operation == OB_OPERATION_HANDLE_DUPLICATE)
{
if ((pOperationInformation->Parameters->CreateHandleInformation.OriginalDesiredAccess&
PROCESS_TERMINATE) == PROCESS_TERMINATE)
{
pOperationInformation->Parameters->CreateHandleInformation.DesiredAccess &= ~PROCESS_TERMINATE;
}
}
}
return OB_PREOP_SUCCESS;
} NTSTATUS SelfProtection()
{
NTSTATUS obst1 = ;
HANDLE obHandle;
LARGE_INTEGER CallbackCookie = { };
OB_CALLBACK_REGISTRATION obReg;
OB_OPERATION_REGISTRATION opReg;
memset(&obReg, , sizeof(obReg));
obReg.Version = ObGetFilterVersion();
obReg.OperationRegistrationCount = ;
obReg.RegistrationContext = NULL;
RtlInitUnicodeString(&obReg.Altitude, L"");
obReg.OperationRegistration = &opReg;
memset(&opReg, , sizeof(&opReg));
opReg.ObjectType = PsProcessType;
opReg.Operations = OB_OPERATION_HANDLE_CREATE | OB_OPERATION_HANDLE_DUPLICATE;
opReg.PreOperation = (POB_PRE_OPERATION_CALLBACK)&ProccessProtectCallBack;
//保护自身进程对象不被打开
obst1 = ObRegisterCallbacks(&obReg, &obHandle);
return ;
}
NTSTATUS DriverEntry(PDRIVER_OBJECT MyDriver, PUNICODE_STRING reg_path)
{
PLDR_DATA ldr;
ldr = (PLDR_DATA)MyDriver->DriverSection;
ldr->Flags |= 0x20;
SelfProtection();
return ;
}
进程自我保护 适用于WIN7 X64的更多相关文章
- win7 X64 进程名称不一致,导致杀进程失效!
win7 x86, 或 win10 x64 环境下, x86的进程名称 ”aaa.exe“ 在win7 x64下面显示为 ”aaa.exe *32“
- [求助] win7 x64 封装 出现 Administrator.xxxxx 的问题
[求助] win7 x64 封装 出现 Administrator.xxxxx 的问题 jacky_qu 发表于 2014-9-3 23:34:37 https://www.itsk.com/thre ...
- 配置新系统(Win7 x64)
新装了一个Win7 x64系统.总结了一些系统配置需要注意的地方. 1. C盘空间 发现C盘被用去了50G的空间,在什么软件都没装的情况下,被用去这么多,感到不可思议. 打开控制面板->文件夹选 ...
- [转载] 关于Win7 x64下过TP保护的一些思路,内核层过保护,驱动过保护
首先特别感谢梦老大,本人一直没搞懂异常处理机制,看了他的教程之后终于明白了.在他的教程里我学到了不少东西.第一次在论坛发帖,就说说Win7 x64位下怎么过TP保护.如果有讲错的地方,还望指出.说不定 ...
- MSI Error 1603 installing AppFabric 1.1 / Win7 x64
MSI Error 1603 installing AppFabric 1.1 / Win7 x64 Archived Forums A-B > AppFabric Caching 先说解 ...
- WIN7 X64 如何运行debug
WIN7 X64 如何运行debug 下载debug.exe 安装dosbox 安装完成后将debug.exe放入某个盘的根目录下(以c盘为例) 然后运行dosbox,输入 mount c c:\ c ...
- win7 X64可用的单文件IE7 遨游美化版
这个是在深度社区淘来的,哇,才700多Kb,而且里面还集成了很多的功能,在win7 X64下面正常运行.哈哈 分享给大家: http://pan.baidu.com/share/link?uk=171 ...
- win7 X64可用的单文件IE6
由于日常调试需要用到老版本的ie,没有办法!用ietest老师感觉不好使,动不动就死了.就找到了ie的单文件版,有博主 小明爱切糕制作,IE6.7.8单文件版本 http://www.cnblogs. ...
- mysql-5.5.25-winx64在win7 x64 免安装配置
os:win7 x64 mysql:mysql-5.5.25-winx64 将mysql-5.5.25-winx64.zip 解压缩到F:\mysql-5.5.25-winx64 目录下: 1.将my ...
随机推荐
- C内存对齐问题-bus error!总线错误!其实是 字符串字面量修改问题!
最近写个小程序,出现bus error! int main(void) { /** * char :1个字节 * char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也 ...
- 解决电脑各种 dll 文件丢失问题
https://jingyan.baidu.com/article/ae97a646f9dbfdbbfc461d6d.html 下载鲁大师,点右上角的 游戏库,然后再点右上角的 修复 ,一键修复即 ...
- vim切换显示器乱行问题解决
http://note.youdao.com/noteshare?id=ccdad950ca154a6b1597cbe2ede07b81
- STL源码分析-vector
http://note.youdao.com/noteshare?id=55dc651a7489f1413b3a3169401dcf94
- php优秀网摘
1.thinkphp的目录结构设计经验总结 说明:thinkphp3.2.3对类没有深刻的认识,对项目规模和架构有很糟糕的影响.这里写的目录结构和设计模式相当于对3.2添加了面向对象架构.第二个链接是 ...
- linux内核支持nfs挂载配置
1.配置网络部分,主要是使能CONFIG_IP_PNP以在2中能够看到Root file system on NFS选项Networking support Networking options TC ...
- linux shell学习一
本博客参考自: http://www.cnblogs.com/waitig/p/5523409.html <shell从入门到精通> 张春晓编著 Shell简介 Shell自身是一个用C ...
- Bootstrap自学笔记
<!DOCTYPE html><html lang="zh-cn"> <head> <meta charset="utf-8&q ...
- PHP扩展开发--02.包裹第三方的扩展
背景 也许最常见的PHP扩展是那些包裹第三方C库的扩展.这些扩展包括MySQL或Oracle的数据库服务库,libxml2的 XML技术库,ImageMagick 或GD的图形操纵库. 在本节中,我们 ...
- CSS 颜色属性
一.十六进制表示,如: a{ color: #F0E68C; } 当RGB一样时,可以简写,如#AABBCC 可以写成 #ABC 二.rgb(r,g,b)形式,其中rgb的值为1~255之间,如: a ...