进程保护原理Hook函数Openprocess
Win32子系统:
Win32是Windows的一个子系统,还有另外的子系统如OS/2、POSIX等,不同的子系统系统提供了不同的编程接口,即API,一般说的API指的就是Win32 API。
Win32子系统是最纯正的Windows子系统,提供了大量的API函数,程序员只需要熟练的使用这些API就可以写出Windows应用程序,当然程序员也可以考虑第三方库,如VC提供的MFC,但这些库不过是在应用程序和Win32子系统中间加了一层封装而已,没有本质的区别。
Windows API 分为三类分别是USER函数,GDI函数,和KERNEL函数
USER函数(user32.dll):这类函数管理窗口,菜单,对话框和控件
GDI函数(gdi32.dll):这类函数在物理设备上执行绘图操作 -Shadow SSDT,-Dwin32k.sys
KERNEL函数(kernel32.dll):这类函数管理非GUI资源,例如,进程,线程,文件和同步服务等.
ntkrnlpa.exe+ ntkrnlpa.lib
Native API(Ntdll.dll)
Native API 是可由用户模式和核心模式程序调用的NT系统服务集接口,它们直接由NT操作系统实现。
SSDT
SSDT的全称是System Services Descriptor Table,系统服务描述符表。这个表就是一个把ring3的Win32 API和ring0的内核API联系起来。SSDT并不仅仅只包含一个庞大的地址索引表,它还包含着一些其它有用的信息,诸如地址索引的基地址、服务函数个数等。
1、应用层到内核的流程
以OpenProcess为例:
//Ring3环应用程序的调用流程
XX.dll----kernel32.OpenProcess---ntdll.NtOpenProcess=======ntdll.ZwOpenProcess
7C92D5E0> B8 7A000000 MOV EAX,7A
7C92D5E5 BA 0003FE7F MOV EDX,7FFE0300
7C92D5EA FF12 CALL DWORD PTR DS:[EDX]
7C92D5EC C2 1000 RETN 10
//Ring3环到Ring0环的切换
7FFE0300 7C92E4F0 ntdll.KiFastSystemCall
//EAX参数
7C92E4F0> 8BD4
MOV EDX,ESP
7C92E4F2 0F34
SYSENTER //切换到内核
0xA53A41AA 0x805CC40A
//进入内核以后,通过查找SSDT表,找到内核函数ntkrnlpa.NtOpenProcess进行调用
jmp ntkrnlpa.NtOpenProcess
内核调用流程:
内核ntkrnlpa.ZwOpenProcess---SSDT--ntkrnlpa.NtOpenProcess
2、浅谈过保护原理
调试进程必经过程:
获取进程ID-OpenProcess打开被调试的进程;
Read ProcessMemory()读取调试进程的PE镜像;
WriteProcessMemory()写进程的内存下断点。
很多软件 保护进程 的方法就是在Ring0环HOOK掉OpenProcess函数的内核函数NtOpenProcess,进行过滤处理;当我们用调试器对它的进程进行调试时,就会出现打开进程失败,无法加载程序。
参考资料:
郁金香老师讲课资料整理
进程保护原理Hook函数Openprocess的更多相关文章
- SSDT Hook实现内核级的进程保护
目录 SSDT Hook效果图 SSDT简介 SSDT结构 SSDT HOOK原理 Hook前准备 如何获得SSDT中函数的地址呢 SSDT Hook流程 SSDT Hook实现进程保护 Ring3与 ...
- 进程隐藏与进程保护(SSDT Hook 实现)(二)
文章目录: 1. 引子 – Demo 实现效果: 2. 进程隐藏与进程保护概念: 3. SSDT Hook 框架搭建: 4. Ring0 实现进程隐藏: 5. Ri ...
- Android进程so注入Hook java方法
本文博客链接:http://blog.csdn.net/qq1084283172/article/details/53769331 Andorid的Hook方式比较多,现在来学习下,基于Android ...
- 64位下Hook NtOpenProcess的实现进程保护 + 源码 (升级篇 )
64位下Hook NtOpenProcess的实现进程保护 + 源码 (升级篇 ) [PS: 如果在64位系统下,出现调用测试demo,返回false的情况下,请修改Hook Dll的代码] glhH ...
- 【Hook技术】实现从"任务管理器"中保护进程不被关闭 + 附带源码 + 进程保护知识扩展
[Hook技术]实现从"任务管理器"中保护进程不被关闭 + 附带源码 + 进程保护知识扩展 公司有个监控程序涉及到进程的保护问题,需要避免用户通过任务管理器结束掉监控进程,这里使用 ...
- x64下进程保护HOOK
目录 x64(32)下的进程保护回调. 一丶进程保护线程保护 1.简介以及原理 1.2 代码 1.3注意的问题 二丶丶回调函数写法 2.1 遇到的问题. 2.2 回调代码 x64(32)下的进程保护回 ...
- 进程隐藏与进程保护(SSDT Hook 实现)(一)
读了这篇文章终于明白大致怎么回事了 文章目录: 1. 引子 – Hook 技术: 2. SSDT 简介: 3. 应用层调用 Win32 API 的完整执行流程: 4 ...
- 进程隐藏与进程保护(SSDT Hook 实现)(三)
文章目录: 1. 引子: 2. 获取当前系统下所有进程: 3. 服务管理(安装,启动,停止,卸载): 4. 应用程序和内核程序通信: 5. 小结: 1. 引子: 关于这个 SSDT Hook 实现进程 ...
- HOOK函数(一)——进程内HOOK
什么是HOOK呢?其实很简单,HOOK就是对Windows消息进行拦截检查处理的一个函数.在Windows的消息机制中,当用户产生消息时,应用程序通过调用GetMessage函数取出消息,然后把消息放 ...
随机推荐
- fastjson 漏洞利用 命令执行
目录 1. 准备一个Payload 2. 服务器上启动 rmi 3. 向目标注入payload 参考 如果你已经用DNSLog之类的工具,探测到了某个url有fastjson问题,那么接着可以试试能不 ...
- C#使用OpenCV剪切图像中的圆形和矩形
前言 本文主要介绍如何使用OpenCV剪切图像中的圆形和矩形. 准备工作 首先创建一个Wpf项目--WpfOpenCV,这里版本使用Framework4.7.2. 然后使用Nuget搜索[Emgu.C ...
- cve-2019-2725 反序列化远程代码执行
描述:部分版本WebLogic中默认包含的wls9_async_response包,为WebLogic Server提供异步通讯服务.由于该WAR包在反序列化处理输入信息时存在缺陷,攻击者可以发送精心 ...
- 关于,java-webservice接口,根据服务端,自动生成客户端调用时,响应时间慢
我这边遇到的问题,是在和对方进行webservice接口交互的时候,用工具,调用对方的webservice接口,对方响应很快.但是用java生成的客户端调用就会很慢才得到响应.大概有5分钟左右. 这里 ...
- vscode配置golang开发环境手把手描述篇
1.下载安装Golang https://golang.google.cn/dl/ 一路下一步即可 2.下载安装Vscode https://visualstudio.microsoft.com/zh ...
- Java概述与准备
Java概述 Java语言背景介绍 Java之父:詹姆斯·高斯林(James Gosling) java语言的三个版本: JavaSE: Java 语言的(标准版),用于桌面应用的开发,是其他两个 ...
- CF1149C Tree Generator™
一.题目 点此看题 二.解法 话说老师给的课件是错的啊,把我坑了好久,我手玩样例才玩出来,最后只能去看洛谷题解了. 本题是树是用一个括号序列给出的,你要知道的是:( 代表递归下去到一个新节点,) 表示 ...
- JAVA视频资料百度网盘分享
1.javascript视频教程 链接: http://pan.baidu.com/s/1gd57FVH 密码: d9ei 2.JPA视频教程 链接: http://pan.baidu.com/s/1 ...
- python报错:AttributeError: module 'pdb' has no attribute 'set_trace'
在第一次使用python中的pdb模块式,pdb.set_trace()时编译器总是会报错,一开始总是以为是自己的拼写错误,但经过反复检查后发现并不是自己的拼写错误.而是我创建的测试文件的名称是pdb ...
- 2018年11月16日SQL Server实验内容(触发器实验)
--注意:先把studentmanager数据库中的所有表用select into命令复制一份, --然后用复制后新表完成下面的实验,同时,对每个触发器都要进行验证. select *into dep ...