驱动开发:内核物理内存寻址读写

在某些时候我们需要读写的进程可能存在虚拟内存保护机制,在该机制下用户的`CR3`以及`MDL`读写将直接失效,从而导致无法读取到正确的数据,本章我们将继续研究如何实现物理级别的寻址读写。首先,驱动中的物理页读写是指在驱动中直接读写物理内存页(而不是虚拟内存页)。这种方式的优点是它能够更快地访问内存,因为它避免了虚拟内存管理的开销,通过直接读写物理内存,驱动程序可以绕过虚拟内存的保护机制,获得对系统

2.1 PE结构:文件映射进内存

PE结构是`Windows`系统下最常用的可执行文件格式,理解PE文件格式不仅可以理解操作系统的加载流程,还可以更好的理解操作系统对进程和内存相关的管理知识,在任何一款操作系统中,可执行程序在被装入内存之前都是以文件的形式存放在磁盘中的,在早期DOS操作系统中,是以COM文件的格式存储的,该文件格式限制了只能使用代码段,堆栈寻址也被限制在了64KB的段中,由于PC芯片的快速发展这种文件格式极大的制

2.9 PE结构:重建导入表结构

脱壳修复是指在进行加壳保护后的二进制程序脱壳操作后,由于加壳操作的不同,有些程序的导入表可能会受到影响,导致脱壳后程序无法正常运行。因此,需要进行修复操作,将脱壳前的导入表覆盖到脱壳后的程序中,以使程序恢复正常运行。一般情况下,导入表被分为IAT(Import Address Table,导入地址表)和INT(Import Name Table,导入名称表)两个部分,其中IAT存储着导入函数的地址

8.1 TEB与PEB概述

在开始使用`TEB/PEB`获取进程或线程ID之前,我想有必要解释一下这两个名词,PEB指的是进程环境块`(Process Environment Block)`,用于存储进程状态信息和进程所需的各种数据。每个进程都有一个对应的`PEB`结构体。TEB指的是线程环境块`(Thread Environment Block)`,用于存储线程状态信息和线程所需的各种数据。每个线程同样都有一个对应的`TE

8.6 STARTUPINFO

STARTUPINFO 结构体,可以用来指定新进程的主窗口外观风格、背景颜色、标题等信息,也可以用来实现反调试技术。通常情况下,我们可以将`STARTUPINFO`结构体中的`dwFlags`成员设置为`STARTF_DEBUGONLYTHISPROCESS`,以防止调试器附加到当前进程。设置了`STARTF_DEBUGONLYTHISPROCESS`后,如果尝试通过调试器附加到该进程,则调试器将

8.10 TLS线程局部存储反调试

TLS(Thread Local Storage)用来在进程内部每个线程中存储私有的数据。每个线程都会拥有独立的`TLS`存储空间,可以在`TLS`存储空间中保存线程的上下文信息、变量、函数指针等。TLS其目的是为了解决多线程变量同步问题,声明为TLS变量后,当线程去访问全局变量时,会将这个变量拷贝到自己线程中的TLS空间中,以防止同一时刻内多次修改全局变量导致变量不稳定的情况,先来看一段简单的案

使用vscode插件查看文件的16进制

有时候想看看文件的16进制,又不想编写代码来处理,那么这时候可以使用vscode和插件Hex Editor一键查看文件的16进制 安装Hex Editor 插件 右键文件选择打开方式,然后选择Hex Editor 然后就可以查看文件的16进制了

下一代架构?从组装式企业到组装式应用

摘要:华为云ROMA Connect作为进入Gartner“企业集成平台”魔力象限的厂商,在EiPaaS领域持续积累沉淀,为各大企业数字化转型、应用现代化演进提供了强大的驱动力。 1.为什么未来的企业是组装式的? 物竞天择,适者生存,企业也是一样,在发展过程中,为了适应市场环境而做出快速改变。良性的

Java开发如何通过IoT边缘ModuleSDK进行进程应用的开发?

摘要:为解决用户自定义处理设备数据以及自定义协议设备快速接入IOT平台的诉求,华为IoT边缘提供ModuleSDK,用户可通过集成SDK让设备以及设备数据快速上云。 本文分享自华为云社区《【华为云IoTEdge开发实战】Java开发如何通过IoT边缘ModuleSDK进行进程应用的开发》,作者: 华

华为云Classroom聚焦人才数字化转型,引领智慧教育改革新模式

随着教育行业数字化转型进程加快,利用现代化云端技术手段,线上线下相结合方式建立的全新OMO产教融合一体化已成为行业趋势。华为云Classroom平台沉淀了华为多年研发实践经验和多种前沿技术,以赋能伙伴、助力企业、培养未来实战型人才为初衷,将学习前沿理论知识、参与多样性社会实践和标准化人才识别激励有机

云小课|手把手教您在PyCharm中连接云端资源进行代码调试

摘要:让我们看看如何在PyCharm中连接云端资源进行代码调试吧! 本文分享自华为云社区《【云小课】EI第54课 手把手教您在PyCharm中连接云端资源进行代码调试》,作者:Hello EI 。 ModelArts提供了一个PyCharm插件工具PyCharm ToolKit,协助用户完成代码上传

一图回顾华为云开发者联盟扫地僧见面会

面对面解答开发者疑问,现场进行思维碰撞。

无法停止服务、无法终止 PID 4100 的进程

服务中无法停止服务。 先查出服务对应的进程 Microsoft Windows [版本 10.0.19043.1348] (c) Microsoft Corporation。保留所有权利。 C:\Users\cj218>sc queryex VipSoftService SERVICE_NAME:

Linux 堡垒机命令行中如何上传下载文件(SecureCRT - SFTP)

SFTP 常用命令 通过堡垒机进入的 Linux 操作系统,无法直接使用 WinSCP 等工具进行文件的上传下载。 可使用 SecureCRT 先进入命令行模式

自然语言处理 Paddle NLP - 情感分析技术及应用-理论

对带有感情色彩的主观性文本进行 分析、处理、归纳和推理的过程,输入文本 => (描述实体/entity,属性/aspect,情感/opinion ,观点持有者/holder,时间/time)

基于Taro开发京东小程序小记

本篇文章是基于Taro进行小程序开发实战小记,你在开发小程序的过程中遇到了哪些问题呢,欢迎留言区讨论交流~

从源码角度剖析 golang 如何fork一个进程

# 从源码角度剖析 golang 如何fork一个进程 创建一个新进程分为两个步骤,一个是fork系统调用,一个是execve 系统调用,fork调用会复用父进程的堆栈,而execve直接覆盖当前进程的堆栈,并且将下一条执行指令指向新的可执行文件。 在分析源码之前,我们先来看看golang fork

FFMPEG+SDL简单视频播放器——视频快进

之前写过一篇关于视频播放器的文章。播放器只简单实现了视频播放的功能,在此功能的基础上,给它加上一个视频快进的功能。

docker入门加实战—从部署MySQL入门docker

本文从docker部署MySQL开始来进行入门,并分析了部署MySQL的Docker的执行流程,最后讲解了部署命令的含义。

OSPF常用配置和常用的查看命令

转载请注明出处: 1.启动OSPF进程,进入OSPF视图。 [Huawei] ospf [ process-id | Router ID Router ID ] 路由器支持OSPF多进程,进程号是本地概念,两台使用不同OSPF进程号设备之间也能够建立邻接关系。 2.创建并进入OSPF区域视图 [Hu