今天在分析一款木马的时候,发现做了进程保护,没加驱动,也没做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相关推荐

  1. 进程保护 (非Hook;非DKOM)

    进程保护 (非Hook;非DKOM) Posted by JiaJia 13 February,2009 (0)Comment BOOL Lock_CurrentProcess() { HANDLE ...

  2. win7x64下实现进程保护

    以前没有PG的时候,相信绝大部分人都是用的SSDT HOOK 来进行进程保护的.等有了PG该怎么办呢?答案就是用微软提供的 ObRegisterCallbacks 函数. NTSTATUSObRegi ...

  3. x64下进程保护HOOK

    目录 x64(32)下的进程保护回调. 一丶进程保护线程保护 1.简介以及原理 1.2 代码 1.3注意的问题 二丶丶回调函数写法 2.1 遇到的问题. 2.2 回调代码 x64(32)下的进程保护回 ...

  4. 进程隐藏与进程保护(SSDT Hook 实现)(三)

    文章目录: 1. 引子: 2. 获取当前系统下所有进程: 3. 服务管理(安装,启动,停止,卸载): 4. 应用程序和内核程序通信: 5. 小结: 1. 引子: 关于这个 SSDT Hook 实现进程 ...

  5. 进程隐藏与进程保护(SSDT Hook 实现)(二)

    文章目录: 1. 引子 – Demo 实现效果: 2. 进程隐藏与进程保护概念: 3. SSDT Hook 框架搭建: 4. Ring0 实现进程隐藏: 5. Ring0 实现进程保护: 6. 隐藏进 ...

  6. 进程隐藏与进程保护(SSDT Hook 实现)(三) 转载自 Zachary.XiaoZhen - 梦想的天空

    文章目录:                   1. 引子: 2. 获取当前系统下所有进程: 3. 服务管理(安装,启动,停止,卸载): 4. 应用程序和内核程序通信: 5. 小结: 1. 引子: 关 ...

  7. 进程隐藏与进程保护(SSDT Hook 实现)(二) 转载自 Zachary.XiaoZhen - 梦想的天空

    文章目录:                   1. 引子 – Demo 实现效果: 2. 进程隐藏与进程保护概念: 3. SSDT Hook 框架搭建: 4. Ring0 实现进程隐藏: 5. Ri ...

  8. 教你在64位Win7系统下使用ObRegisterCallbacks内核函数来实现进程保护

    我平时工作很忙,也很少有空闲时间上看雪论坛.我在看雪论坛里面文章发表的很少,几只有几篇,我也很少回答别人的问题.我的很多朋友都这样问我问题:我整理了一下,无非就以下几种问题: (1)怎么样在64位的W ...

  9. windows环境下的自保护探究

    0x00 前言 我们要想在32位下实现进程保护很简单,通过SSDT hook重写函数即可实现,但是在64位系统下因为引入了PG和DSE的原因,导致SSDT hook实现起来处处受限.但微软同样为了系统 ...

最新文章

  1. Lambda 表达式有何用处?如何使用?
  2. pandas删除缺失数据(pd.dropna()方法)
  3. linux zip指定目录解压,Linux zip解压/压缩并指定目录
  4. 对volatile的理解
  5. C语言typedef小结1(转载自百度百科)
  6. linux怎么用jconsole_jconsole监控linux系统的jvm使用
  7. LeetCode 2191. 将杂乱无章的数字排序(自定义排序)
  8. Android:布局单位换算
  9. MFC_选择目录对话框_选择文件对话框_指定目录遍历文件
  10. 2017web前端面试总结
  11. Atitit zxing二维码qr码识别解析
  12. 关于圆锥曲线切点弦二级结论的总结与再发现
  13. 图像处理之灰色图转化为RGB图像
  14. NOIP2017普及组★跳房子
  15. Dell EMC PowerEdge R740 服务器的驱动程序和固件更新
  16. 基于JAVA控制台版本银行自动取款机(修改版)
  17. JQ input框单多图上传
  18. 数据结构 浙江大学 2019春期末考试
  19. [转载]打工辛酸路:我是一朵飘零的花之81
  20. XPlaye/文曲兰/梨花带雨播放器程序开源

热门文章

  1. 在VS2008中使用Qt编程
  2. 【Django】基于Django架构网站代码的目录结构---转载
  3. 数据结构之单项链表的操作
  4. SQL 学习与工作日常:语句积累
  5. android 视频监控相关(打包下载)
  6. Searchsploit
  7. [网络安全提高篇] 一〇九.津门杯CTF的Web Write-Up万字详解(SSRF、文件上传、SQL注入、代码审计、中国蚁剑)
  8. [python] 基于k-means和tfidf的文本聚类代码简单实现
  9. C# 数据库存储过程的讲解应用
  10. LeetCode Algorithm 1566. 重复至少 K 次且长度为 M 的模式