Ring3下实现进程保护,不用hook
今天在分析一款木马的时候,发现做了进程保护,没加驱动,也没做hook,能做进程保护,感觉非常奇怪,原来是这么一回事,mark一下吧!
#include "stdafx.h"#include <windows.h>
#include <Aclapi.h>#pragma comment(lib,"Advapi32.lib")BOOL Ring3ProtectProcess()
{HANDLE hProcess = ::GetCurrentProcess();SID_IDENTIFIER_AUTHORITY sia = SECURITY_WORLD_SID_AUTHORITY;PSID pSid;BOOL bSus = FALSE;bSus = ::AllocateAndInitializeSid(&sia,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,&pSid);if(!bSus) goto Cleanup;HANDLE hToken;bSus = ::OpenProcessToken(hProcess,TOKEN_QUERY,&hToken);if(!bSus) goto Cleanup;DWORD dwReturnLength;::GetTokenInformation(hToken,TokenUser,NULL,NULL,&dwReturnLength);if(dwReturnLength > 0x400) goto Cleanup;LPVOID TokenInformation;TokenInformation = ::LocalAlloc(LPTR,0x400);//这里就引用SDK的函数不引用CRT的了DWORD dw;bSus = ::GetTokenInformation(hToken,TokenUser,TokenInformation,0x400,&dw);if(!bSus) goto Cleanup;PTOKEN_USER pTokenUser = (PTOKEN_USER)TokenInformation;BYTE Buf[0x200];PACL pAcl = (PACL)&Buf;bSus = ::InitializeAcl(pAcl,1024,ACL_REVISION);if(!bSus) goto Cleanup;bSus = ::AddAccessDeniedAce(pAcl,ACL_REVISION,0xFFFFFFFF,pSid);if(!bSus) goto Cleanup;bSus = ::AddAccessAllowedAce(pAcl,ACL_REVISION,0x00100701,pTokenUser->User.Sid);if(!bSus) goto Cleanup;if(::SetSecurityInfo(hProcess,SE_KERNEL_OBJECT,DACL_SECURITY_INFORMATION | PROTECTED_DACL_SECURITY_INFORMATION,NULL,NULL,pAcl,NULL) == 0)bSus = TRUE;
Cleanup:if(hProcess != NULL)::CloseHandle(hProcess);if(pSid != NULL)::FreeSid(pSid);return bSus;
}int _tmain(int argc, _TCHAR* argv[])
{Ring3ProtectProcess(); printf("......");getchar();return 0;
}
OpenProcess没法获取它的句柄了,自然也就结束不了进程,也没法对它进行注入!
不过我只在Win7 x86环境试成功,XP系统没成功,不知道啥原因,其他系统还没测试.
Ring3下实现进程保护,不用hook相关推荐
- 进程保护 (非Hook;非DKOM)
进程保护 (非Hook;非DKOM) Posted by JiaJia 13 February,2009 (0)Comment BOOL Lock_CurrentProcess() { HANDLE ...
- win7x64下实现进程保护
以前没有PG的时候,相信绝大部分人都是用的SSDT HOOK 来进行进程保护的.等有了PG该怎么办呢?答案就是用微软提供的 ObRegisterCallbacks 函数. NTSTATUSObRegi ...
- x64下进程保护HOOK
目录 x64(32)下的进程保护回调. 一丶进程保护线程保护 1.简介以及原理 1.2 代码 1.3注意的问题 二丶丶回调函数写法 2.1 遇到的问题. 2.2 回调代码 x64(32)下的进程保护回 ...
- 进程隐藏与进程保护(SSDT Hook 实现)(三)
文章目录: 1. 引子: 2. 获取当前系统下所有进程: 3. 服务管理(安装,启动,停止,卸载): 4. 应用程序和内核程序通信: 5. 小结: 1. 引子: 关于这个 SSDT Hook 实现进程 ...
- 进程隐藏与进程保护(SSDT Hook 实现)(二)
文章目录: 1. 引子 – Demo 实现效果: 2. 进程隐藏与进程保护概念: 3. SSDT Hook 框架搭建: 4. Ring0 实现进程隐藏: 5. Ring0 实现进程保护: 6. 隐藏进 ...
- 进程隐藏与进程保护(SSDT Hook 实现)(三) 转载自 Zachary.XiaoZhen - 梦想的天空
文章目录: 1. 引子: 2. 获取当前系统下所有进程: 3. 服务管理(安装,启动,停止,卸载): 4. 应用程序和内核程序通信: 5. 小结: 1. 引子: 关 ...
- 进程隐藏与进程保护(SSDT Hook 实现)(二) 转载自 Zachary.XiaoZhen - 梦想的天空
文章目录: 1. 引子 – Demo 实现效果: 2. 进程隐藏与进程保护概念: 3. SSDT Hook 框架搭建: 4. Ring0 实现进程隐藏: 5. Ri ...
- 教你在64位Win7系统下使用ObRegisterCallbacks内核函数来实现进程保护
我平时工作很忙,也很少有空闲时间上看雪论坛.我在看雪论坛里面文章发表的很少,几只有几篇,我也很少回答别人的问题.我的很多朋友都这样问我问题:我整理了一下,无非就以下几种问题: (1)怎么样在64位的W ...
- windows环境下的自保护探究
0x00 前言 我们要想在32位下实现进程保护很简单,通过SSDT hook重写函数即可实现,但是在64位系统下因为引入了PG和DSE的原因,导致SSDT hook实现起来处处受限.但微软同样为了系统 ...
最新文章
- Lambda 表达式有何用处?如何使用?
- pandas删除缺失数据(pd.dropna()方法)
- linux zip指定目录解压,Linux zip解压/压缩并指定目录
- 对volatile的理解
- C语言typedef小结1(转载自百度百科)
- linux怎么用jconsole_jconsole监控linux系统的jvm使用
- LeetCode 2191. 将杂乱无章的数字排序(自定义排序)
- Android:布局单位换算
- MFC_选择目录对话框_选择文件对话框_指定目录遍历文件
- 2017web前端面试总结
- Atitit zxing二维码qr码识别解析
- 关于圆锥曲线切点弦二级结论的总结与再发现
- 图像处理之灰色图转化为RGB图像
- NOIP2017普及组★跳房子
- Dell EMC PowerEdge R740 服务器的驱动程序和固件更新
- 基于JAVA控制台版本银行自动取款机(修改版)
- JQ input框单多图上传
- 数据结构 浙江大学 2019春期末考试
- [转载]打工辛酸路:我是一朵飘零的花之81
- XPlaye/文曲兰/梨花带雨播放器程序开源
热门文章
- 在VS2008中使用Qt编程
- 【Django】基于Django架构网站代码的目录结构---转载
- 数据结构之单项链表的操作
- SQL 学习与工作日常:语句积累
- android 视频监控相关(打包下载)
- Searchsploit
- [网络安全提高篇] 一〇九.津门杯CTF的Web Write-Up万字详解(SSRF、文件上传、SQL注入、代码审计、中国蚁剑)
- [python] 基于k-means和tfidf的文本聚类代码简单实现
- C# 数据库存储过程的讲解应用
- LeetCode Algorithm 1566. 重复至少 K 次且长度为 M 的模式