如何写windows系统已保护的内存区域

Windows内存保护机制及绕过方法 0 目录 GS编译 SafeSEH机制 SEH覆盖保护 数据执行保护(DEP) 地址随机化(ASLR) 1 GS编译 1.1 基本原理 Windows操作系统为解决栈溢出漏洞的问题引入了一个对策——GS编译保护技术。 GS编译保护技术是通过编译时添加相关代码而实现的,开启GS 编译选项后会在函数的开头和结尾添加代码... 阅读详情

windows系统在某些版本下对某些内存区域启用了写保护的功能,因为这些区域一般合法程序是不可能修改其内容的,那么我们如何来写这些内存呢? PS:1) 这些系统包括:windows xp与windows 2003    2) CPU提供写保护的功能是从486开始的    3) 一般合法程序不包括杀毒软件,因为他们在Hook SSDT中是直接改ServiceTableBase,而没有用inline的方法    我们就用SSDT做例子吧,在Hook SSDT时不用innline hook方法,我们就要修改SSDT这个系统服务描述表;而这个表是被写保护了,在ring0下也是没有写的权限。 方法一: 首先我们来看一下CR0寄存器的格式 |31|30|       |18|17|16|          5|4|3|2|0|1| |P |C |       |A |  |W |          N|E|T|E|M|P| |G |D |       |M |  |P |          E|T|S|M|P|E| 我们主要注意这个WP这位,其他的请参考IA-32 Volume 3A; WP——Write Protect,当设置为1时只提供读页权限 PE——Paging,当设置为1时提供分页 MP——Protection Enable,当设置为1时进入保护模式 所以我们只要把WP这一位设置为0时,就可以修改SSDT了  //1 关闭写保护  __asm  {   push eax   mov  eax, CR0   and  eax, 0FFFEFFFFh   mov  CR0, eax   pop  eax  }  //2 打开写保护  __asm  {   push eax   mov  eax, CR0   or   eax, NOT 0FFFEFFFFh   mov  CR0, eax   pop  eax  } 通过上面的第一组指令我们就可以正常修改SSDT,记得修改后要还原。 方法二: 此方法是盖茨提供的,在内存描述表(MDL)中描述一块内存区域,MDL包含此内存区域的起始地址,拥有者进程,字节数量以及标志。 //在ddk中的描述 typedef struct _MDL {     struct _MDL *Next;     CSHORT Size;     CSHORT MdlFlags;     struct _EPROCESS *Process;     PVOID MappedSystemVa;     PVOID StartVa;     ULONG ByteCount;     ULONG ByteOffset; } MDL, *PMDL;

#define MDL_MAPPED_TO_SYSTEM_VA     0x0001 #define MDL_PAGES_LOCKED            0x0002 #define MDL_SOURCE_IS_NONPAGED_POOL 0x0004 #define MDL_ALLOCATED_FIXED_SIZE    0x0008 #define MDL_PARTIAL                 0x0010 #define MDL_PARTIAL_HAS_BEEN_MAPPED 0x0020 #define MDL_IO_PAGE_READ            0x0040 #define MDL_WRITE_OPERATION         0x0080 #define MDL_PARENT_MAPPED_SYSTEM_VA 0x0100 #define MDL_LOCK_HELD               0x0200 #define MDL_PHYSICAL_VIEW           0x0400 #define MDL_IO_SPACE                0x0800 #define MDL_NETWORK_HEADER          0x1000 #define MDL_MAPPING_CAN_FAIL        0x2000 #define MDL_ALLOCATED_MUST_SUCCEED  0x4000 // Declarations #pragma pack(1) typedef struct ServiceDescriptorEntry {         unsigned int *ServiceTableBase;         unsigned int *ServiceCounterTableBase;         unsigned int NumberOfServices;         unsigned char *ParamTableBase; } SSDT; #pragma pack() __declspec(dllimport) SSDTKeServiceDescriptorTable; PMDL  g_pmdlSystemCall; PVOID *MappedSystemCallTable; // save old system call locations // Map the memory into our domain to change the permissions on // the MDL g_pmdlSystemCall = MmCreateMdl(NULL,                    KeServiceDescriptorTable.ServiceTableBase,                    KeServiceDescriptorTable.NumberOfServices*4); if(!g_pmdlSystemCall)    return STATUS_UNSUCCESSFUL; MmBuildMdlForNonPagedPool(g_pmdlSystemCall); // Change the flags of the MDL g_pmdlSystemCall->MdlFlags = g_pmdlSystemCall->MdlFlags |                              MDL_MAPPED_TO_SYSTEM_VA; MappedSystemCallTable = MmMapLockedPages(g_pmdlSystemCall, KernelMode); MappedSystemCallTable就是SSDT的地址,现在可以放心的操作它吧!用完了最好MmFreePagesFromMdl。

EWF for XP硬盘保护技术教程 增强型写过滤器(Enhanced Write Filter,EWF)是一种在Windows操作系统中被广泛使用的内存管理技术,主要用于保护硬盘中的数据不被意外写入或修改。EWF通过创建一个内存中虚拟的只读层,确保所有对硬盘的写操作都被拦截并重定向到RAM或另一个存储介质上。在系统重启或关闭后,所有临时更改都将丢失,从而实现了一种临时性的写保护。 阅读详情

相关推荐

C语言 函数

一、什么是函数 二、函数的相关语法 三、函数编码规范

m0_57105760的博客 1891

关于MDL的一些事情

微软的文档里对MDL的描述感觉语焉不详,这两天在找工作的间隙逆向+黑盒测试了一下MmBuildMdlForNonPagedPool,把得到的一些理解描述下来。 一.MDL数据结构     MDL是用来建立一块虚拟地址空间与物理页面之间的映射,结构定义如下:     [cpp] view plaincopy typedef struct _MDL {    struc

zacklin的专栏 5682

给麒麟KylinOS服务器加把锁:手把手配置符合等保要求的密码强度策略

本文详细介绍了如何在麒麟KylinOS服务器上配置符合等保要求的密码强度策略,包括pwquality.conf和login.defs的核心参数设置、等保合规的进阶配置技巧以及企业环境中的平衡艺术。通过实战案例和测试方法,帮助管理员构建坚固的密码防线,确保系统安全。

weixin_33749242的博客 419

服务器修复分区,存储空间保护分区如何修复进行分区扩展?

是的,所以找了一台其他Windows服务器进行挂载成功,并将数据拷贝出来重建VMDK磁盘文件在加载到最初的Windows服务器中使用。所以我想知道存储空间保护分区 id号?能否告知??EFI 系统分区:c12a7328-f81f-11d2-ba4b-00a0c93ec93b基本数据分区:ebd0a0a2-b9e5-4433-87c0-68b6b72699c7Microsoft 保留分区:e3c9e...

weixin_36091268的博客 1042

别只刷题了!我用834分经验告诉你,华为HCIP大数据考试(H13-723)这样准备更高效

本文分享了华为HCIP大数据认证(H13-723)834分通关的高效备考经验。通过分析考试动态、题库验证技巧和章节优先级策略,帮助考生超越单纯刷题,系统化掌握核心知识点。特别强调实时流处理和离线批处理等重点章节,提供黄金90分钟临场发挥策略,助力考生一次性通过考试。

weixin_38168786的博客 460

Ubuntu 22.04下Realtek R8125网卡驱动安装避坑指南(附DKMS自动编译配置)

本文详细介绍了在Ubuntu 22.04系统上为Realtek R8125 2.5GbE网卡安装驱动的完整流程与避坑指南。针对内核通用驱动r8169的冲突问题,重点讲解了如何通过DKMS(Dynamic Kernel Module Support)实现驱动的持久化自动编译与安装,确保系统内核升级后网卡驱动依然有效。内容包括环境准备、驱动源码获取、DKMS标准配置、驱动冲突解决(设置黑名单)以及日常维护与故障排查方法,旨在为用户提供一个一劳永逸的稳定解决方案。

echo99的专栏 1023

windows下多进程通信,基于共享内存环形队列实现

使用方式非常简单,需要的进程初始化类调用InitializeLock函数传入相同的字符串即可。可以多个进程使用PushString(),写入缓冲区,只允许一个进程进行调用PopString()读取,读取方面没有写保护锁,非线程安全。构造函数与析构函数看起来似乎不严谨,但不影响使用,有不对的地方望大牛提供指点。 测试代码用于获取通信所需的时间 进程读取缓冲区代码 1 #include "

zy5757的博客 1388

耕地质量评价软件实操指南:如何用Excel+ArcGIS一键生成土壤普查报告(附避坑技巧)

本文提供了一套融合Excel数据处理与ArcGIS空间分析的耕地质量评价实战工作流。详细讲解了从数据规范化预处理、高效数据桥接,到在ArcGIS中实现指标评分、综合指数计算与等级划分的全流程,旨在帮助土壤普查工作者大幅提升报告生成效率与准确性,并分享了关键的避坑技巧。

weixin_28455801的博客 494

【win10】磁盘保护清除

【背景描述】 旧电脑拆下来的硬盘成功改装成移动硬盘了,但硬盘还有保护分区未清除,直接用计算机的磁盘管理权限不够,右键只会提示“帮助”。 【解决步骤】 计算机->cmd->右键选择 以管理员身份运行 输入:diskpart 进入磁盘分区 输入:list disk 列出当前活动磁盘,可以看到有两块磁盘0和1,其中1对应外接硬盘 选择要清楚的磁盘,比如这里的第...

coralime的博客 4232

Cilium动手实验室: 精通之旅---5.Mutual Authentication with Cilium

在Cilium 入门实验室中,您将在受《星球大战》启发的场景中实施高级第 3-7 层网络策略。在实验结束时,您将实施强大的网络策略,并通过微分段保护 Empire 免受来自叛乱的攻击。在本实验中,您将重新部署《星球大战》演示应用程序,但除了网络策略之外,您还将了解如何在工作负载之间实施相互身份验证。

Q先生 1400

智能车图像处理11-进阶篇3--中线累积差值的统计

中线累积差值的统计在后面判断小S,以及长直道的时候都有用到,关键点在于中线的跳变 第12 - 13 行:comulants1 和comlants2代表的是两种不同的累差,取的行数不同 第14-17 行:comulants2取6到25行,其实就是My_Abs(LCenter[i], LCenter[i - 1])的累加 第18-21 行:comulants1去第1到40行 第27- 行: 计算了一下右线的开始于最终结束行,这里判断R_black是否为0,是和中线的提取中g

taiyuezyh的博客 3831

Windows内存管理(二):内存架构 浅谈一二

windows内存管理

Mr.Sugarcane 2432

最新Codex接入DeepSeek官方API教程(无需cc-switch)

最新Codex接入DeepSeek官方API教程(无需cc-switch)

猿小白的博客 968

《Windows核心编程系列》十二谈谈Windows内存体系结构

转载自:http://blog.youkuaiyun.com/ithzhang/article/details/8392933             Windows内存体系结构          理解Windows内存体系结构是每一个励志成为优秀的Windows程序员所必须的。   进程虚拟地址空间        每个进程都有自己的虚拟地址空间。对

收集学习过程中对自己有帮助的牛人文章 736

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Windows 驱动: 消除核心内存的只读保护

在很多机器上 SSDT 表是不可写的,写即导致机器无提示崩溃重启。这是需要去除核心内存的写保护: //----------------------------------------------------------------------//// 设置核心内存访问保护////--------------------------------------------------------

IamRainLiang的专栏 2651

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

数据执行保护讲解

2. **仅为基本Windows程序和服务启用DEP**:这种模式被称为“Option”,它只对Windows系统组件和服务启用DEP保护,而对其他第三方应用程序则不启用。1. **为所有程序和服务启用DEP**:这种模式被称为“AlwaysOn”,它为所有程序和服务启用了DEP保护,不允许任何程序从受保护的内存区域执行代码。相反,选择“仅为基本Windows程序和服务启用DEP”则仅对Windows系统组件和服务提供保护,这可以减少对第三方程序的干扰,但相应地降低了对某些潜在威胁的防护。

qw6r5的博客 2943

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

windows-rs内存保护:设置页面属性与Guard Pages

在Windows系统中,内存保护是保障程序稳定性和安全性的核心机制。通过设置内存页面属性,开发者可以控制程序对特定内存区域的访问权限,防止非法读写操作导致的崩溃或安全漏洞。Guard Pages(防护页)作为一种特殊的内存保护技术,能够在内存溢出发生时提供即时检测能力,是防御缓冲区溢出攻击的重要手段。 windows-rs库通过`windows_sys`模块提供了对Windows内存管理API的...

gitblog_01197的博客 910

Title: Protected Mode Memory 保护模式下的内存

*************Title: Protected Mode Memory***************************** 标题:保护模式下的内存******************=================译自Tutor by Hutch==================**====Original:Collected and packed by dREAMtHEAT

小桥加加的IT博客 1553

彻底关闭数据执行保护(DEP)

彻底关闭数据执行保护(DEP) 1、直接修改Boot.ini文件(彻底关闭数据执行保护DEP) 在WinXP SP2系统所在分区根目录下找到Boot.ini文件(需打开系统隐藏文件及受保护的系统隐藏文件夹,打开方法:工具-文件夹选项-查看-拉下列表就可以看到了)。 然后右键Boot.ini属性去掉Boot.ini只读属性,把NoExecute=Optin改为...

weixin_34177064的博客 1924

计算机打数据执行保护删除不掉,肿么才能关闭系统的数据执行保护

exec方法一:关闭数据保护,编辑Boot.ini文件,将/NoExecute=OptIn 改为/NoExecute=AlwaysOff。要编辑Boot.ini,请在开始中我的电脑上点右键?属性?高级,启动和故障恢复设置,?编辑 即可!方法二:Win XP SP2具备数据执行保护(DEP)功能,要实现此功能,需配合支持DEP功能的处理器使用,如AMD Athlon64和编号中包含字母J的Intel...

weixin_39761558的博客 1660

WINDOWS程序一般性保护错误的原因与解决办法

一 什么是一般性保护错误(GP)? 一般性保护错误(general protect简称GP),通常只是WINDOWS下的一个术语,我们现在也常把它引用到UNIX下指程序的崩溃。 本文主要探讨WINDOWS下面程序GP的原...

citangua9904的博客 1555
上一篇: Ring0Prolog
下一篇: Rootkit 1: Detection Hide Process
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值