CN106708631B - 共享内存属性修改方法及其系统 - Google Patents
共享内存属性修改方法及其系统 Download PDFInfo
- Publication number
- CN106708631B CN106708631B CN201611085095.7A CN201611085095A CN106708631B CN 106708631 B CN106708631 B CN 106708631B CN 201611085095 A CN201611085095 A CN 201611085095A CN 106708631 B CN106708631 B CN 106708631B
- Authority
- CN
- China
- Prior art keywords
- shared memory
- handle
- layer
- user layer
- authority
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供一种共享内存属性修改方法及其系统,方法包括:用户层创建一只读属性的共享内存;内核层获取所述共享内存的句柄,并修改所述句柄的权限为可读可写;将所述句柄记录的所述用户层的虚拟地址转换为所述内核层的虚拟地址。不仅能够实现对用户层共享内存的修改,达到数据交互的目的;而且用户层共享内存的权限仍然为只读属性,能够保证共享内存数据的安全,具有兼顾数据交互和数据安全的优点,而且方法简单,易于实现。
Description
技术领域
本发明涉及计算机系统领域,具体说的是共享内存属性修改方法及其系统。
背景技术
共享内存(shared memory)指在多处理器的计算机系统中,可以被不同中央处理器(CPU)访问的大容量内;通过创建文件视图对象,再将映射缓冲区转化为视图,供给其他进程进行访问,实现程序与程序之间的内存共享。
一般的程序共享内存为了实现数据交互,在程序设计中,不可能仅仅只需要读的权限,也需要写的权限,在用户层中,假如权限为只读,则其他的程序只能读取它,无法修改它;如果为可读可写,又不能保证其他的程序不去篡改它,且共享内存一旦创建,内存属性是无法被修改的。现有技术中,并没有提供能够依据需求对共享内存的权限进行修改的办法,因此无法实现不同需求的兼顾。进一步的,由于所创建的共享内存能被其他进程枚举修改,便存在数据泄露的风险。
发明内容
本发明所要解决的技术问题是:提供一种共享内存属性修改方法及其系统,能够实现用户层已创建共享内存属性的修改,保证数据交互便利性的同时,又能保证数据的安全。
为了解决上述技术问题,本发明采用的技术方案为:
共享内存属性修改方法,包括:
用户层创建一只读属性的共享内存;
内核层获取所述共享内存的句柄,并修改所述句柄的权限为可读可写;
将所述句柄记录的所述用户层的虚拟地址转换为所述内核层的虚拟地址。
本发明提供的另一个技术方案为:
共享内存属性修改系统,包括:
创建模块,用于用户层创建一只读属性的共享内存;
修改模块,用于内核层获取所述共享内存的句柄,并修改所述句柄的权限为可读可写;
转换模块,用于将所述句柄记录的所述用户层的虚拟地址转换为所述内核层的虚拟地址。
本发明的有益效果在于:区别于现有技术的共享内存属性在创建后便无法修改,无法实现数据交互和数据安全兼得的不足。本发明提供共享内存属性修改的方法,通过内核层修改用户层创建的共享内存的句柄的权限,然后使用地址转换函数达到用户层到内核层的转化,实现可以通过内核层对该用户层这一共享内存的修改,达到数据交互的目的;同时,对外开放的用户层共享内存的权限仍然为只读属性,能够保证共享内存数据的安全,即使被非法进程枚举到共享内存的地址,也无法对其进行修改,保证了数据的安全性;本发明实现了数据交互和数据安全的兼顾。
附图说明
图1为本发明实施例一共享内存属性修改方法的流程示意图;
图2为本发明实施例三共享内存属性修改系统的模块组成结构示意图;
图3为实施例二中使用CE添加地址后获取的地址信息界面图。
标号说明:
1、创建模块;2、修改模块;3、转换模块;4、返回模块。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
本发明最关键的构思在于:通过内核层修改共享内存的句柄权限,然后使用地址转换函数达到用户层到内核层的转化,实现通过内核层对共享内存进行修改;同时又能保证共享内存数据的对外完全性。
请参照图1,本发明提供一种共享内存属性修改方法,包括:
用户层创建一只读属性的共享内存;
内核层获取所述共享内存的句柄,并修改所述句柄的权限为可读可写;
将所述句柄记录的所述用户层的虚拟地址转换为所述内核层的虚拟地址。
从上述描述可知,本发明的有益效果在于:不仅实现了用户层与内核层之间基于共享内存的交互;而且保证了共享内存不被非法进程修改的数据安全性。
进一步的,所述修改所述句柄的权限为可读可写,具体为:
使用获取打开的对象句柄函数,修改函数中的文件属性常数为可读可写。
由上述描述可知,可以直接通过ObReferenceObjectByHandle(获取打开的对象句柄)函数,修改函数中对应文件属性权限的两个常量为SECTION_MAP_READ|SECTION_MAP_WRITE,即修改为可读可写;便可实现内核层可以以可读可写的方式访问这块共享内存。
进一步的,还包括:
修改所述句柄的权限后,将修改的数据返回至用户层。
由上述描述可知,能将修改的数据返回,通知用户层所做修改。
本发明提供的另一个技术方案为:
共享内存属性修改系统,包括:
创建模块,用于用户层创建一只读属性的共享内存;
修改模块,用于内核层获取所述共享内存的句柄,并修改所述句柄的权限为可读可写;
转换模块,用于将所述句柄记录的所述用户层的虚拟地址转换为所述内核层的虚拟地址。
进一步的,所述修改模块,具体用于使用获取打开的对象句柄函数,修改函数中的文件属性常数为可读可写。
进一步的,还包括:
返回模块,用于修改所述句柄的权限后,将修改的数据返回至用户层。
实施例一
请参照图1,本实施例提供一种共享内存属性修改方法,能够通过内核层与内核层的交互实现对用户层共享内存的可读写,同时又能保证用户层共享内存对外的安全性。
具体的,所述方法包括:
S1:进程A在用户层创建一只读属性的共享内存区段;
由于共享内存创建后,其属性便不可修改,为了保证共享内存对外的安全性,不会被其他进程枚举到而被非法修改,初始化过程便设置其权限为只读,能够保证用户层共享内存中数据的安全性。
S2:若需要对上述共享内存中的内容进行合法修改,则通过内核层获取所述共享内存的句柄,并修改所述句柄的权限为可读可写;
优选的,可以通过使用ObReferenceObjectByHandle(获取打开的对象句柄)函数,修改函数的两个常量为SECTION_MAP_READ|SECTION_MAP_WRITE(文件属性为读与写)。
通过系统的内核层获取进程A的用户层创建的共享内存的对象句柄,对象句柄为一对象变量,在此,所述对象为进程A的用户层创建的共享内存,其操纵的标识符为指向该对象的句柄,通过句柄中记录的地址实现对对象的操纵。
将共享内存的句柄的权限由原先的只读,修改为可读可写,内核层便可以可读可写的方式访问这块共享内存,为内核层对其进行修改提供可能。
S3:将所述句柄记录的所述用户层的虚拟地址转换为所述内核层的虚拟地址。
优选的,可以通过MmMapViewInSystemSpace(将指定的用户层地址转换成内核地址)函数来达到用户层到内核层的转化;通过将修改了权限的句柄转换地址,内核层就可以对用户层的这块共享内存进行修改,达到交互目的。
S4:内核层修改完数据后,将修改的数据返回,通知进程A的用户层。
进程A的共享内存在用户层的权限始终为只读,只供其他进程读取共享内存中的数据,而无法进行修改,这样即使被非法进程使用ZwQueryObject函数枚举到共享内存的地址,也无法被非法进程修改。
实施例二
本实施例为实施例一的一具体运用场景,一进程有一可读可写的地址为0X30000,使用内存修改编辑工具CE附加之后,手动添加这个地址,发现这个地址的值为4,如图3所示;直接进行修改,将数值修改成3;使用CE再次读取这个地址0X30000,因为该地址的属性为只读,若使用CE尝试对其进行修改,则进程将直接崩溃,从而实现了对该进程共享内存数据的保护。
实施例三
请参阅图2,基于实施例一,本实施例提供一种共享内存属性修改系统,包括:
创建模块1,用于用户层创建一只读属性的共享内存;
修改模块2,用于内核层获取所述共享内存的句柄,并修改所述句柄的权限为可读可写;优选的,所述修改模块,具体用于使用获取打开的对象句柄函数,修改函数中的文件属性常数为可读可写。
转换模块3,用于将所述句柄记录的所述用户层的虚拟地址转换为所述内核层的虚拟地址;
返回模块4,用于修改所述句柄的权限后,将修改的数据返回至用户层。
综上所述,本发明提供的共享内存属性修改方法及其系统,不仅能够实现对用户层共享内存的修改,达到数据交互的目的;而且用户层共享内存的权限仍然为只读属性,能够保证共享内存数据的安全,具有兼顾数据交互和数据安全的优点,而且方法简单,易于实现。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (2)
1.共享内存属性修改方法,其特征在于,包括:
用户层创建一只读属性的共享内存;
内核层获取所述共享内存的句柄,并修改所述句柄的权限为可读可写;
将所述句柄记录的所述用户层的虚拟地址转换为所述内核层的虚拟地址;
所述修改所述句柄的权限为可读可写,具体为:
使用获取打开的对象句柄函数,修改函数中的文件属性常数为可读可写;
还包括:
修改所述句柄的权限后,将修改的数据返回至用户层。
2.共享内存属性修改系统,其特征在于,包括:
创建模块,用于用户层创建一只读属性的共享内存;
修改模块,用于内核层获取所述共享内存的句柄,并修改所述句柄的权限为可读可写;
转换模块,用于将所述句柄记录的所述用户层的虚拟地址转换为所述内核层的虚拟地址;
所述修改模块,具体用于使用获取打开的对象句柄函数,修改函数中的文件属性常数为可读可写;
还包括:
返回模块,用于修改所述句柄的权限后,将修改的数据返回至用户层。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611085095.7A CN106708631B (zh) | 2016-11-30 | 2016-11-30 | 共享内存属性修改方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611085095.7A CN106708631B (zh) | 2016-11-30 | 2016-11-30 | 共享内存属性修改方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106708631A CN106708631A (zh) | 2017-05-24 |
CN106708631B true CN106708631B (zh) | 2020-06-09 |
Family
ID=58935287
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611085095.7A Active CN106708631B (zh) | 2016-11-30 | 2016-11-30 | 共享内存属性修改方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106708631B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109213613B (zh) * | 2018-08-27 | 2020-08-14 | Oppo广东移动通信有限公司 | 图像信息的传输方法、装置、存储介质及电子设备 |
TWI737093B (zh) * | 2019-01-30 | 2021-08-21 | 旺宏電子股份有限公司 | 具有安全功能的記憶體晶片及記憶體裝置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101382953A (zh) * | 2008-09-19 | 2009-03-11 | 中兴通讯股份有限公司 | 在用户空间访问文件系统的接口系统与文件读、写方法 |
CN103514053A (zh) * | 2013-09-22 | 2014-01-15 | 中国科学院信息工程研究所 | 一种基于共享内存的进程间通讯方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5893166A (en) * | 1997-05-01 | 1999-04-06 | Oracle Corporation | Addressing method and system for sharing a large memory address space using a system space global memory section |
CN102945211A (zh) * | 2012-11-23 | 2013-02-27 | 青岛海信移动通信技术股份有限公司 | 移动终端数据写入方法、写入装置及移动终端 |
CN103064748A (zh) * | 2013-01-05 | 2013-04-24 | 浪潮电子信息产业股份有限公司 | 一种Linux下处理多进程间通讯的方法 |
CN105653980B (zh) * | 2015-12-30 | 2019-06-11 | 福建联迪商用设备有限公司 | 一种虚拟内存数据的保护方法及其系统 |
CN105809055B (zh) * | 2016-02-26 | 2019-03-22 | 深圳天珑无线科技有限公司 | 访问控制方法、装置及相关设备 |
-
2016
- 2016-11-30 CN CN201611085095.7A patent/CN106708631B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101382953A (zh) * | 2008-09-19 | 2009-03-11 | 中兴通讯股份有限公司 | 在用户空间访问文件系统的接口系统与文件读、写方法 |
CN103514053A (zh) * | 2013-09-22 | 2014-01-15 | 中国科学院信息工程研究所 | 一种基于共享内存的进程间通讯方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106708631A (zh) | 2017-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9218302B2 (en) | Page table management | |
DE102019108266A1 (de) | Techniken zum bereitstellen von isolation auf funktionsebene mit auf fähigkeit basierender sicherheit | |
US20150347165A1 (en) | Virtual machine template management | |
DE102020125599A1 (de) | Vertrauenswürdige lokale speicherverwaltung in einer virtualisierten gpu | |
CN110245001A (zh) | 数据隔离方法及装置、电子设备 | |
US20220308756A1 (en) | Performing Memory Accesses for Input-Output Devices using Encryption Keys Associated with Owners of Pages of Memory | |
CN112541166B (zh) | 一种方法、系统和计算机可读存储介质 | |
CN114327777B (zh) | 确定全局页目录的方法、装置、电子设备及存储介质 | |
DE102020127800A1 (de) | Ein-chip-system und verfahren zu dessen betrieb | |
DE102018115683A1 (de) | Domänenübergreifende sicherheit in kryptographisch partionierter cloud | |
US9367478B2 (en) | Controlling direct memory access page mappings | |
US11550482B2 (en) | Page-based memory access control | |
US10331591B2 (en) | Logical-to-physical block mapping inside the disk controller: accessing data objects without operating system intervention | |
CN105760217A (zh) | 一种访问共享内存的方法 | |
CN106295265A (zh) | 一种用户权限管理的方法及装置 | |
CN106708631B (zh) | 共享内存属性修改方法及其系统 | |
US20220261489A1 (en) | Capability management method and computer device | |
EP3722952A1 (en) | A concept for accessing computer memory of a memory pool | |
CN117349870B (zh) | 基于异构计算的透明加解密计算系统、方法、设备和介质 | |
KR101535792B1 (ko) | 운영체제 구성 장치 및 방법 | |
KR101460451B1 (ko) | 프로세스 주소 공간을 제어하는 장치 및 방법 | |
TWI286686B (en) | Method and apparatus for multi-table accessing of input/output devices using target security | |
DE102018115504A1 (de) | Techniken zum Bereitstellen von Schutz vor Zugriff auf gemeinsam verwendeten virtuellen Speicher | |
DE102019121577A1 (de) | Mindern von seitenkanalattacken unter verwendung von executable-only-speicher (xom) | |
US11836094B2 (en) | Cryptographic data objects page conversion |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |