当前位置: 首页 > news >正文

驱动挂载物理页代码示例

驱动挂载物理页代码示例

使用的实验环境为32位xp系统在101012分页模式下

此实验用于测试对分页模式的掌握程度

代码思路如下:

  1. 获取目标进程的cr3
  2. 在目标进程中申请新的物理页
  3. 拆分新申请的物理页的线性地址
  4. 通过差分出的内容获取pte
  5. 将pte写入到要挂载的线性地址的pte中(这个线性地址也可以为不同cr3中的线性地址,这种情况下就可以两个进程共享同一物理页但是要把pte和pde都挂载好)
  6. 此时目标线性地址和新申请的线性地址映射为同一物理页

样例代码:

#include <ntddk.h>
#define NTSTRSAFE_LIB
#include <ntstrsafe.h>
#include <intrin.h>VOID Unload(PDRIVER_OBJECT pDriver) {KdPrint(("unload"));}NTSTATUS DriverEntry(PDRIVER_OBJECT pDriver, PUNICODE_STRING pRegPath) {NTSTATUS status = STATUS_SUCCESS;pDriver->DriverUnload = Unload;KdPrint(("begin"));//417   01 00 17DWORD32 new_va = 0x417000;DWORD32 new_cr3 = 0x02e96000;DWORD32 old_cr3 = 0x0;DWORD32* pdt_va = (DWORD32*)0xc0300000;UCHAR* ptt_va = (UCHAR*)0xc0000000;//拆分new_vaKdPrint(("开始拆分线性地址"));DWORD32 new_va_10_1 = new_va >> 0x16;DWORD32 new_va_10_2 = new_va << 0xa;new_va_10_2 >>= 0x16;DWORD32 new_va_12 = new_va && 0x00000fff;KdPrint(("10:0x%x, 10:0x%x, 12:0x%x \r\n", new_va_10_1, new_va_10_2, new_va_12));//挂载物理页KdPrint(("开始挂载物理页"));KIRQL irql = KeRaiseIrqlToDpcLevel();old_cr3 = __readcr3();__writecr3(new_cr3);KeLowerIrql(irql);DWORD32* pte = (ptt_va + ((new_va_10_1 << 12) + (new_va_10_2 << 2)));KdPrint(("0x%p\r\n",pte));DWORD32* new_pte = (DWORD32*)(ptt_va + 4);KdPrint(("0x%p\r\n", new_pte));*new_pte = *pte;irql = KeRaiseIrqlToDpcLevel();__writecr3(old_cr3);KeLowerIrql(irql);/*DWORD32* cr3_va = (DWORD32*)0xc0300000;for (size_t i = 0; i < 1024; i++){KdPrint(("%d: 0x%x", i, cr3_va[i]));}*/return status;
}

相关文章:

驱动挂载物理页代码示例

驱动挂载物理页代码示例 使用的实验环境为32位xp系统在101012分页模式下 此实验用于测试对分页模式的掌握程度 代码思路如下&#xff1a; 获取目标进程的cr3在目标进程中申请新的物理页拆分新申请的物理页的线性地址通过差分出的内容获取pte将pte写入到要挂载的线性地址的p…...

【新版】系统架构设计师 - 层次式架构设计理论与实践

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 层次式架构设计理论与实践考点摘要层次式体系结构概述表现层框架设计MVC模式MVP模式MVVM模式使用XML设计表现层表现层中UIP设计思想 中间层架构设计业务逻辑层工作流设计业务逻辑层设计 数据访问层…...

大数据Flink(九十):Lookup Join(维表 Join)

文章目录 Lookup Join(维表 Join) Lookup Join(维表 Join) Lookup Join 定义(支持 Batch\Streaming):Lookup Join 其实就是维表 Join,比如拿离线数仓来说,常常会有用户画像,设备画像等数据,而对应到实时数仓场景中,这种实时获取外部缓存的 Join 就叫做维表 Join。…...

Docker方式创建MySQL8的MGR集群

目录 一、MGR简述二、安装环境及要求2.1 系统版本2.2 网络要求 三、安装步骤3.1 创建容器3.2 创建用户3.3 安装插件3. 4 启动集群3.5 加入集群 四、查看集群查看 MGR 组成员列表查看 MGR 组成员拓扑信息 五、其他说明集群配置要求集群配置限制集群相关变量和状态 一、MGR简述 …...

问 ChatGPT 关于GPT的事情:扩展篇

一、GPT预训练有什么节省显存和算力的技巧吗&#xff1f;我如何拿四块A100完成175B模型的预训练&#xff1f; 对于GPT预训练&#xff0c;有一些技巧可以帮助节省显存和算力。以下是一些常用的技巧&#xff1a; 按批次截断&#xff1a;在较长的文本序列中&#xff0c;将其切割…...

Spring Boot 集成 MinIO 实现文件上传、下载和删除

MinIO 是一种开源的对象存储服务&#xff0c;它基于云原生架构构建&#xff0c;并提供了高性能、易于扩展和安全的存储解决方案。 一.安装和配置 MinIO 服务器 为了演示方便&#xff0c;本文采用Windows安装 1.在官方网站下载MinIO 安装文件&#xff0c;地址&#xff1a;ht…...

Polygon Miden交易模型:Actor模式 + ZKP => 并行 + 隐私

1. 引言 前序博客&#xff1a; Polygon Miden&#xff1a;扩展以太坊功能集的ZK-optimized rollupPolygon Miden zkRollup中的UTXO账户混合状态模型 Polygon Miden为&#xff1a; ZK-optimized rollup由客户端生成证明完善Polygon ZK系列解决方案&#xff0c;致力于成为网络…...

Java流的体系结构(二)

文章目录 一、对象流的使用1.概念2.序列化机制3.代码案例&#xff1a;序列化过程&#xff1a;将内存中的java对象保存到磁盘中或通过通络传输出去4.反序列化&#xff0c;将磁盘文件中的对象还原为内存中的一个java对象 二、RandomAccessFile的使用1.说明2.代码案例 提示&#x…...

python计算阶层

阶层&#xff08;Factorial&#xff09;是指从1到一个正整数n的所有整数相乘&#xff0c;即n! 1 2 3 … n。下面是Python代码计算阶层&#xff1a; def factorial(n):"""计算阶层:param n: 正整数:return: n的阶层"""if n 1 or n 0:retu…...

前端架构师之01_ES6_基础

1 初识ES6 简单来说&#xff0c;ECMAScript是JavaScript语言的国际标准&#xff0c;JavaScript是实现ECMAScript标准的脚本语言。 2011年&#xff0c;ECMA国际标准化组织在发布ECMAScript 5.1版本之后&#xff0c;就开始着手制定第6版规范。 存在的问题&#xff1a;这个版本…...

银行卡号识别

# 导入工具包 from imutils import contours import numpy as np import argparse import cv2 import myutils# 设置参数 # ap = argparse.ArgumentParser() # ap.add_argument("-i", "--image", required=True, # help="path to input image")…...

【Idea】idea、datagrip设置输入法

https://github.com/RikudouPatrickstar/JetBrainsRuntime-for-Linux-x64/releases/tag/jbr-release-17.0.6b829.5https://github.com/RikudouPatrickstar/JetBrainsRuntime-for-Linux-x64/releases/tag/jbr-release-17.0.6b829.5 下载后解压并重命名为 jbr, 然后替换对应 ide…...

回归预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入单输出回归预测

回归预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于RF-Adaboost随机森林结合…...

最小生成树 | 市政道路拓宽预算的优化 (Minimum Spanning Tree)

任务描述&#xff1a; 市政投资拓宽市区道路&#xff0c;本着执政为民&#xff0c;节省纳税人钱的目的&#xff0c;论证是否有必要对每一条路都施工拓宽&#xff1f; 这是一个连问带答的好问题。项目制学习可以上下半场&#xff0c;上半场头脑风暴节省投资的所有可行的思路&a…...

Java实现使用多线程,实现复制文件到另一个目录,起不一样的名字,创建100万个数据

目录 1 需求2 实现 1 需求 我现在有一个300MB 的文件&#xff0c;想要根据这个文件&#xff0c;创建100万个大小一样的&#xff0c;名称不一样&#xff0c;如何实现&#xff0c;如何比较快点实现 2 实现 1 先准备好这个文件 2 准备好目录 3 写代码 private static void crea…...

uni-app:canvas-图形实现1

效果 代码 <template><view><!-- 创建了一个宽度为300像素&#xff0c;高度为200像素的canvas元素。canvas-id属性被设置为"firstCanvas"&#xff0c;可以用来在JavaScript中获取该canvas元素的上下文对象。 --><canvas style"width:200p…...

【算法分析与设计】动态规划(下)

目录 一、最长公共子序列1.1 最长公共子序列的结构1.2 子问题的递归结构1.3 计算最优值1.4 举例说明1.5 算法的改进 二、最大子段和2.1 代码2.2 最大子段和问题的分治算法2.3 代码2.4 分治算法的时间复杂度2.5 最大子段和问题的动态规划算法 三、凸多边形最优三角剖分3.1 三角剖…...

计算机图像处理-均值滤波

均值滤波 线性滤波器的原始数据与滤波结果是一种算术运算&#xff0c;即用加减乘除等运算实现&#xff0c;如均值滤波器&#xff08;模板内像素灰度值的平均值&#xff09;、高斯滤波器&#xff08;高斯加权平均值&#xff09;等。由于线性滤波器是算术运算&#xff0c;有固定…...

FreeRTOS入门教程(空闲任务和钩子函数及任务调度算法)

文章目录 前言一、空闲任务概念二、钩子函数概念三、任务调度算法四、任务调度算法实验1.实验代码2.是否抢占3.时间片是否轮转4.空闲任务让步 总结 前言 本篇文章将带大家学习一下什么是空闲任务以及钩子函数&#xff0c;以及学习FreeRTOS中的任务调度算法&#xff0c;了解在F…...

Javascript真的是10天内做出来的吗?

我曾听说&#xff0c;Javascript 之所以有这么多缺点&#xff0c;是因为它的第一个版本是在短短十天内完成的。我很好奇&#xff1a;1&#xff09;这是否属实&#xff1b;2&#xff09;这是否能解释这种语言的缺陷。 经过一番研究&#xff0c;我可以不自信地说&#xff1a;是的…...

Qwen3-0.6B-FP8效果展示:实时流式输出延迟<120ms(RTX3060实测)

Qwen3-0.6B-FP8效果展示&#xff1a;实时流式输出延迟<120ms&#xff08;RTX3060实测&#xff09; 你还在为本地部署大模型需要高端显卡而烦恼吗&#xff1f;或者觉得那些动辄几十GB的模型下载起来太费劲&#xff1f;今天&#xff0c;我要给你展示一个完全不同的解决方案—…...

手把手教你用Gemini 3和MediaPipe,为你的网页添加“隔空操控”魔法(附完整代码)

从零构建手势操控3D粒子系统&#xff1a;MediaPipe与Three.js深度整合指南 当我们在科幻电影中看到主角挥挥手就能操控全息界面时&#xff0c;总会心生向往。如今&#xff0c;借助MediaPipe的手势识别能力和Three.js的3D渲染技术&#xff0c;开发者完全可以在网页中实现这种&qu…...

Anything-v5模型微调启示:Pixel Fashion Atelier对动漫风格像素化表达的重构

Anything-v5模型微调启示&#xff1a;Pixel Fashion Atelier对动漫风格像素化表达的重构 1. 项目背景与设计理念 Pixel Fashion Atelier是一个创新的图像生成工作站&#xff0c;它巧妙融合了Stable Diffusion的强大生成能力与Anything-v5模型对动漫风格的精准把控。这个项目最…...

生信分析效率翻倍:fastp多线程+UMI处理技巧全解析(含实战案例)

生信分析效率翻倍&#xff1a;fastp多线程UMI处理技巧全解析&#xff08;含实战案例&#xff09; 在肿瘤基因检测和ctDNA测序领域&#xff0c;数据预处理环节往往成为整个分析流程的瓶颈。传统工具在处理海量测序数据时&#xff0c;不仅耗时长达数小时&#xff0c;还经常面临内…...

节点式AI视觉创作工具ComfyUI零基础掌握:从入门到实践

节点式AI视觉创作工具ComfyUI零基础掌握&#xff1a;从入门到实践 【免费下载链接】ComfyUI 最强大且模块化的具有图形/节点界面的稳定扩散GUI。 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI ComfyUI是一款基于稳定扩散技术的节点式视觉AI创作工具&#…...

Qwen3-ForcedAligner-0.6B实战:基于CNN的语音特征提取优化

Qwen3-ForcedAligner-0.6B实战&#xff1a;基于CNN的语音特征提取优化 如果你做过语音相关的项目&#xff0c;比如给视频加字幕、做语音分析&#xff0c;肯定遇到过这样的问题&#xff1a;模型识别出的文字&#xff0c;怎么才能和音频里的时间点对上号&#xff1f;这就是“强制…...

Micro Debug:Arduino极简嵌入式调试库

1. 项目概述Micro Debug 是一个专为 Arduino 平台设计的极简式嵌入式调试库&#xff0c;其核心设计哲学是“零依赖、零开销、零侵入”——不引入任何额外的硬件资源占用&#xff08;如额外串口、定时器或DMA通道&#xff09;&#xff0c;不增加运行时调度负担&#xff08;无任务…...

攻克Atlas OS中Xbox应用登录错误0x89235107的完整方案

攻克Atlas OS中Xbox应用登录错误0x89235107的完整方案 【免费下载链接】Atlas &#x1f680; An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcode.com/GitHub_Trending/atlas1/Atlas …...

别再只盯着top命令了!用sysdig揪出Linux服务器上伪装成log、ntools的xmrig挖矿木马

深度追踪&#xff1a;用sysdig揪出Linux服务器上伪装成log、ntools的xmrig挖矿木马 当服务器CPU突然飙高&#xff0c;而top命令却显示一切正常时&#xff0c;作为运维工程师的你一定知道事情没那么简单。最近&#xff0c;一种新型的xmrig挖矿木马正在Linux服务器上肆虐&#xf…...

2026 国内源码网站 TOP10:高速稳定 + 中文友好,开发者收藏版

对于国内开发者、站长、学生与创业团队来说&#xff0c;稳定高速、全中文、资源靠谱、无冗余广告的源码平台&#xff0c;能大幅降低开发成本、提升项目落地效率。2026 年实测筛选出国内综合体验 TOP10 源码站点&#xff0c;兼顾免费学习、商用部署、快速建站等场景&#xff0c;…...