首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
ring0层物理地址
2024-11-10
Ring0 - Lookaside结构
由于频繁的申请,回收内存会导致在内存上产生大量的内存"空洞".这时使用Lookaside. 1.每次申请固定大小的内存. 2.申请和回收的操作十分频繁. 实现原理: 他先向windows申请了一块比较大的内存.而后以后申请内存都从Lookaside对象申请.这样就会避免内存"空洞",Lookaside对象内部的内存不够用时,他会向操作系统申请更多内存.当Lookaside内部有大量的未使用的内存时,他会自动让windows回收一部分内存.总之Lookaside是一个
Ring0层创建事件,Ring3层接收
在学习驱动过程中,一个很重要的内容就是Ring3层与Ring0层的通信,方法有很多种,互斥体,信号量,文件等等,用的比较普遍的,还是事件.所以在学习的过程中,做了一个简单的Demo,主要是体会一下方法. 在驱动程序下,首先要定义一个事件名,前面的一部分必须是BaseNamedObjects,这其实就是一个目录,后面的部分可以自己起,但不要太过简单和普遍,以免与现有的冲突. #define EVENT_NAME L"\\BaseNamedObjects\\Ring0Event" 定义
ring0 与 ring3 层之间的交互
在进行Windows的ring0层开发时,必不可免的要与 ring3 层进行交互.进行数据间的相互传输.可用的方法有DeviceIoCntrol,ReadFile.我平常都是用的DeviceIoControl在ring3 与 ring0 层进行的数据传输.今天就写写DeviceIoControl 和 ring0通过事件通知 ring3! 首先加载驱动之后,在ring3层调用CreateFile() 打开ring0层生成的LinkName,获得设备对象的句柄.然后调用DeviceIoControl
跟踪 Ring3 - Ring0 的运行流程
理论知识 SYSENTER 指令是在 Inter Pentium(R) Ⅱ 处理器上作为"高速系统调用"功能的一部分被首次引用的. SYSENTER 指令进行过专门的优化,能够以最佳性能由 Ring3 层切换到 Ring0 层. 微软首次引用 SYSENTER 指令是在 Windows 2000 的系统上,再次之前微软的系统是通过自陷指令 int 0x2E 进入 Ring0 层的系统空间的. 在 Windows 2000 及以后的系统中,假设想要从 Ring3 层进入 Ring0 层,
Windows虚拟地址转物理地址(原理+源码实现,附简单小工具)
By Lthis 上个月就想写了,一直没时间...网上大概搜了一下,原理与操作倒是一大堆,一直没看到源码实现,总得有人动手,这回轮到我了.东西写得很烂,请大牛勿喷.一直觉得靠源码的方式驱动学习是非常好的一种学习方法,比较直观!声明一下,本教程只有讨论开启PAE与关闭PAE两种,至于PSE是否开启没
ring0
Intel的x86处理器是通过Ring级别来进行访问控制的,级别共分4层,RING0,RING1,RING2,RING3.Windows只使用其中的两个级别RING0和RING3. RING0层拥有最高的权限,RING3层拥有最低的权限. 按照Intel原有的构想,应用程序工作在RING3层,只能访问RING3层的数据:操作系统工作在RING0层,可以访问所有层的数据:而其他驱动程序位于RING1.RING2层,每一层只能访问本层以及权限更低层的数据. 如果普通应用程序企图执行RING0指令,则
Windows x86/ x64 Ring3层注入Dll总结
欢迎转载,转载请注明出处:http://www.cnblogs.com/uAreKongqi/p/6012353.html 0x00.前言 提到Dll的注入,立马能够想到的方法就有很多,比如利用远程线程.Apc等等,这里我对Ring3层的Dll注入学习做一个总结吧. 我把注入的方法分成六类,分别是:1.创建新线程.2.设置线程上下背景文,修改寄存器.3.插入Apc队列.4.修改注册表.5.挂钩窗口消息.6.远程手动实现LoadLibrary. 那么下面就开始学习之旅吧! 0x01.预备工作 在涉
病毒木马查杀实战第020篇:Ring3层主动防御之基本原理
前言 假设说我们的计算机中安装有杀毒软件,那么当我们有意或无意地下载了一个恶意程序后.杀软一般都会弹出一个对话框提示我们,下载的程序非常可能是恶意程序,建议删除之类的.或者杀软就不提示.直接删除了:或者当我们运行了某一个程序,包括有可疑操作,比方创建开机启动项,那么杀软一般也会对此进行提醒:或者当我们在计算机中插入U盘.杀软往往也会第一时间对U盘进行扫描,确认没有问题后,再打开U盘--上述这些,事实上都属于杀软的"主动防御"功能. "主动防御"简单介绍 杀毒软件通常
DeviceIOControl与驱动层 - 缓冲区模式
IO交互模式中的DeviceIOControl与驱动层交互有三种:缓冲区模式.直接访问模式.其他模式,这里本人学习的是缓冲区访问模式,原理如图: 驱动中最好不要直接访问用户模式下的内存地址,使用缓冲区方式可以避免程序员访问内存模式下的内存地址.Win32API DeviceIoControl的内部,用户提供的输入缓冲区的内容呗复制到IRP中的pIrp->AssociateIrp.SystemBuffer内存地址,复制的字节数是由DeviceIoControl指定的输入字节数.派遣函数可以读取pI
枚举进程——暴力搜索内存(Ring0)
上面说过了隐藏进程,这篇博客我们就简单描述一下暴力搜索进程. 一个进程要运行,必然会加载到内存中,断链隐藏进程只是把EPROCESS从链表上摘除了,但它还是驻留在内存中的.这样我们就有了找到它的方法. 在内核中,传入进程ID,通过ZwOpenProcess得到句柄,再传入句柄,通过ObReferenceObjectByHandle,可以获得EPROCESS,既然获得了EPROCESS,问题就迎刃而解了. 既可以选择用加偏移的方法得到进程名,也可以用PsGetProcessFileName来获取进
【windows 操作系统】【CPU】用户模式和内核模式(用户层和内核层)
所有的现代操作系统中,CPU是在两种不同的模式下运行的: 注意以下内容来自微软: windows用户模式和内核模式 运行 Windows 的计算机中的处理器有两个不同模式:用户模式 和内核模式 . 用户模式和内核模式都是针对CPU运行状态来说的,在用户模式下,CPU无法执行一些特权指令,而在内核模式下是可以的. 根据处理器上运行的代码的类型,处理器在两个模式之间切换. 应用程序在用户模式下运行,核心操作系统组件在内核模式下运行. 虽然许多驱动程序以内核模式运行,但某些驱动程序可能以用户模式运行.
[Windows驱动开发](四)内存管理
一.内存管理概念 1. 物理内存概念(Physical Memory Address) PC上有三条总线,分别是数据总线.地址总线和控制总线.32位CPU的寻址能力为4GB(2的32次方)个字节.用户最多可以使用4GB的真实物理内存.PC中很多设备都提供了自己的设备内存.这部分内存会映射到PC的物理内存上,也就是读写这段物理地址,其实读写的是设备内存地址,而不是物理内存地址. 2. 虚拟内存概念 虽然可以寻址4GB的内存,但是PC中往往没有如此多的真实物理内存.操作系统和硬件(主
Windows内核 内存管理基本概念
内存管理概念: 1)物理内存 PC上有三条总线:数据总线.地址总线和控制总线.32位CPU的寻址能力是4GB个字节,用户最多可以使用4GB的真实物理内存.PC中很多设备都提供了自己的设备内存,例如显卡就提供了自己的显存.这部分内存会映射到PC的物理内存上,也就是读写这段物理地址,其实会读写的设备内存地址,而不会读写物理内存地址. 2)虚拟内存地址 Windows所有程序(包括Ring0层和Ring3层的程序)可以操作的都是虚拟内存.之所以称为虚拟内存,是因为对它的所有操作最终都会变成一系列对真实
【黑客免杀攻防】读书笔记17 - Rootkit基础
1.构建Rootkit基础环境 1.1.构建开发环境 VS2012+WDK8 1.2.构建基于VS2012的调试环境 将目标机.调试机配置在同一个工作组内 sVS2012配置->DRIVER->Test->Configure Computers,Add New computer按钮. 1.3.构建基于Windbg的调试环境 WinDBG+Vmware+VirtualKD 1.4.将Rootkit加载到系统 SCM(服务控制管理器)加载驱动 OpenSCManager():获取SCM句柄
SSDT表概念具体解释
SSDT 的全称是 System Services Descriptor Table,系统服务描写叙述符表. 这个表就是一个把 Ring3 的 Win32 API 和 Ring0 的内核 API 联系起来.Ring3下调用的全部函数终于都会先进入到ntdll里面的,比方ReadFile.就会进入ntdll的ZwReadFile SSDT 并不只只包括一个庞大的地址索引表,它还包括着一些其他实用的信息,诸如地址索引的基地址.服务函数个数等. 1. //系统服务描写叙述符表-在ntoskrnl.ex
WindowsNT设备驱动程序开发基础
一.背景介绍 1.1WindowsNT操作系统的组成1.1.1用户模式(UserMode)与内核模式(KernelMode) 从Intel80386开始,出于安全性和稳定性的考虑,该系列的CPU可以运行于ring0~ring3从高到低四个不同的权限级,对数据也提供相应的四个保护级别.运行于较低级别的代码不能随意调用高级别的代码和访问较高级别的数据,而且也只有ring0层的代码可以直接进行对物理硬件的访问.由于WindowsNT是一个支持多平台的操作系统,为了与其他平台兼容,它只利用了CPU的两个
SSDT表概念详解
SSDT 的全称是 System Services Descriptor Table,系统服务描述符表. 这个表就是一个把 Ring3 的 Win32 API 和 Ring0 的内核 API 联系起来.Ring3下调用的所有函数最终都会先进入到ntdll里面的,比如ReadFile,就会进入ntdll的ZwReadFile SSDT 并不仅仅只包含一个庞大的地址索引表,它还包含着一些其它有用的信息,诸如地址索引的基地址.服务函数个数等. 1. //系统服务描述符表-在ntoskrnl.exe中导
lvs的dr模式分析(二)
#vim /etc/init.d/lvsdrrip #!/bin/bash #DR server VIP=192.168.46.200 case "$1" in start) echo "start LVS of DR" /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up /sbin/route add -host $VIP dev lo:0 echo "1"
Process Kill Technology && Process Protection Against In Linux
目录 . 引言 . Kill Process By Kill Command && SIGNAL . Kill Process By Resource Limits . Kill Process By Code Injection Into Running Process Via GDB . Kill Process By Using Cross Process Virtual Memory Modify To Crash Process && process_vm_wri
Windows内核 语言选择注意点
调用约定: 调用约定指的是函数被调用时,会按照不同规则,翻译成不同的汇编代码.当一个函数被调用时,首先会将返回地址压入堆栈,紧接着会将函数的参数依次压入堆栈.不同的调用约定,会指明不同的参数入栈顺序,还会指明不同的清理堆栈的方法.用C语言或者C++语言编译器编译程序时,会有四种不同的调用约定去编译函数: C语言的调用约定,函数由__cdecl修饰: 标准调用约定,函数由__stdcall修饰: 快速调用约定,函数由__fastcall修饰: C++类成员函数的调用约定,函数由thiscall修饰
Xcon2014 && Geekpwn2014
目录 . 链接器与加载器技术在保护壳上的应用 . android应用市场中的大规模漏洞挖掘 . android模拟躲避检测和应对 . 内核链表的奥秘 . 信号的可发现性 -- wifi之外我们还能做什么 . Geekpwn2014 1. 链接器与加载器技术在保护壳上的应用 0x1: 演讲者 安全编程版主玩命(阎文斌,四维创智技术总监) 0x2: 技术背景 传统的PC软件的加解壳.移动终端的APP加壳,大致经历了如下几个阶段 .) 本地文件加密,由操作系统提供的 例如windows NTFS提供的
热门专题
css报错在控制台无法打印
ZXing 运行环境
wrk Ubuntu放入环境变量
数据库double类型和decimal类型
虚拟机 flask 打不开
zk与Hbase的关系
Highcharts 自适应窗口
python 函数返回多个参数并赋值
的Panel面板初始化时无法全部折叠
Fiddle对夜神模拟器进行抓包的设置
Linux 空间大小
import注解导入其它模块类
REST Services Directory利用
微信官网下载linux
cent os 安装
js更改json对象key
grub 引导倒计时 中文
pcb沉金工艺和镀金英文翻译区别
vsftpd未被识别的服务怎么解决
如何判断是浏览器还是ipad