CN116010029A - 数据清除方法、装置、电子设备及计算机可读取存储介质 - Google Patents
数据清除方法、装置、电子设备及计算机可读取存储介质 Download PDFInfo
- Publication number
- CN116010029A CN116010029A CN202211690414.2A CN202211690414A CN116010029A CN 116010029 A CN116010029 A CN 116010029A CN 202211690414 A CN202211690414 A CN 202211690414A CN 116010029 A CN116010029 A CN 116010029A
- Authority
- CN
- China
- Prior art keywords
- application program
- address data
- memory
- memory information
- data
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Storage Device Security (AREA)
Abstract
本申请提供一种数据清除方法、装置、电子设备及计算机可读取存储介质,涉及数据安全处理技术领域。该方法包括:监控虚拟机中应用程序的状态,若监控到所述应用程序关闭,则收集所述应用程序使用的内存信息的用户虚拟地址数据;将所述用户虚拟地址数据转换为用户物理地址数据;基于所述用户物理地址数据进行记录,以得到记录内存信息,并在所述应用程序关闭时对所述记录内存信息进行清除。本申请通过对应用程序的状态进行检测,并在应用程序关闭时对其使用的内存进行收集和处理,能够在虚拟机的应用程序关闭时,在虚拟机和物理的宿主机中及时的对应用程序中的内存数据进行清除,以减少内存数据的泄露情况,提高了应用程序使用时的安全性。
Description
技术领域
本申请涉及数据安全处理技术领域,具体而言,涉及一种数据清除方法、装置、电子设备及计算机可读取存储介质。
背景技术
随着云计算应用的普及,越来越多的应用程序运行在虚拟机中,应用程序在虚拟机中申请内存,并将数据存在内存中。对于某些需要访问保密的数据的应用程序,在使用物理机器时,当物理机器关闭时,内存数据被清理;而当这些应用程序运行在虚拟机环境时,若虚拟机关机,物理的宿主机并不会关机,因此虚拟机申请和使用的内存仍然驻留在宿主机的内存中,运行在宿主机的进程,能通过某些手段获取内存中的数据,存在加密数据泄露的风险。
发明内容
有鉴于此,本申请实施例的目的在于提供一种数据清除方法、装置、电子设备及计算机可读取存储介质,以改善现有技术中存在的数据泄露的问题。
为了解决上述问题,第一方面,本申请实施例提供了一种数据清除方法,所述方法包括:
监控虚拟机中应用程序的状态,若监控到所述应用程序关闭,则收集所述应用程序使用的内存信息的用户虚拟地址数据;
将所述用户虚拟地址数据转换为用户物理地址数据;
基于所述用户物理地址数据进行记录,以得到记录内存信息,并在所述应用程序关闭时对所述记录内存信息进行清除。
在上述实现过程中,通过对应用程序的状态进行检测,并在应用程序关闭时对其使用的内存进行收集、转换和记录处理,能够通过内存地址之间的转换,在虚拟机的应用程序关闭时,在虚拟机和物理的宿主机中及时的对应用程序中的记录内存信息进行清除,以减少内存数据的泄露情况,提高了应用程序使用时的安全性。
可选地,所述基于所述用户物理地址数据进行记录,以得到记录内存信息,包括:
将所述用户物理地址数据转换为宿主虚拟地址数据;
基于树状结构对所述宿主虚拟地址数据进行记录,得到所述记录内存信息。
在上述实现过程中,在对内存数据进行记录时,可以将用户物理地址数据转换为宿主虚拟地址数据进行处理,从而能够在虚拟机和宿主机中,都对应用程序所使用的内存进行记录和处理。考虑到应用程序使用的内存信息的数量和离散性,为了提高对大数量或离散的内存信息进行记录的效率,记录时可以通过树状结构对宿主虚拟地址数据进行记录,以提高记录的效率和后续进行清除时的效率。
可选地,所述在所述应用程序关闭时对所述记录内存信息进行清除,包括:
若监控到所述应用程序关闭,则对所述记录内存信息对应的宿主虚拟地址进行写零处理。
在上述实现过程中,由于进行记录的记录内存信息对应的地址为宿主虚拟地址,因此,在进行清除时,可以直接对记录内存信息对应的一个或多个宿主虚拟地址进行写零处理,能够对应用程序对应的内存数据进行针对性清除,不会对内存中存储的其他数据造成影响,提高了数据清除的效率和准确性。
可选地,所述收集所述应用程序使用的内存信息的用户虚拟地址数据,包括:
根据属性文件获取栈、堆和内存映射的起始虚拟地址和大小信息;
根据所述起始虚拟地址和所述大小信息,确定所述应用程序使用的所述内存信息;
收集所述内存信息对应的所述用户虚拟地址数据。
在上述实现过程中,由于应用程序运行在虚拟机的用户态中,使用的是虚拟机内的虚拟地址空间,因此,内存储数据的地址空间区域为应用程序中的栈、堆和内存映射空间。在进行数据收集时,可以根据进程的属性文件获取栈、堆和内存映射的起始虚拟地址和大小信息,以确定应用程序所使用的内存信息,从而收集内存信息所对应的虚拟机中的用户虚拟地址数据。能够根据应用程序的使用情况进行相应地收集,提高了用户虚拟地址数据的有效性。
可选地,所述将所述用户虚拟地址数据转换为用户物理地址数据,包括:
判断所述用户虚拟地址数据对应的所述内存信息是否实际分配;
若所述内存信息实际分配,则基于转换处理将所述用户虚拟地址数据转换为用户物理地址数据;
其中,所述转换处理包括查表处理。
在上述实现过程中,通过对收集的用户虚拟地址数据进行检验,以确定其对应的内存信息是否已经实际分配,在内存信息实际分配时,虚拟机的操作系统能够通过多种转换方式,将应用程序访问的用户虚拟地址数据转换为虚拟机的物理地址,即用户物理地址数据。能够在确定分配后对不同类型的地址数据进行转换处理,有效地提高了用户物理地址数据的有效性。
可选地,所述方法还包括:
基于预设时间规则,定时收集所述应用程序使用的过程内存信息的定时虚拟地址数据;
将所述定时虚拟地址数据转换为定时物理地址数据;
基于所述定时物理地址数据在树状结构中进行更新,得到更新内存信息。
在上述实现过程中,考虑到虚拟机存在异常关闭的情况,在异常情况下,为了对应用程序的内存数据进行有效清除,还可以定时地对应用程序使用过程中的过程内存信息对应的定时虚拟地址数据进行收集、转换处理,并将转换的定时物理地址数据添加到树状结构中进行更新,记录得到相应的更新内存信息。能够在应用程序的使用过程中进行定时地收集和更新处理,在虚拟机产生异常时,仍能够根据定时更新的数据对应用程序的内存数据进行清除,适用于多种情况,提高了数据清除的效果。
可选地,所述方法还包括:
若监控到所述应用程序关闭,在所述更新内存信息中查询所述应用程序使用的目标内存信息;
对所述目标内存信息进行清除。
在上述实现过程中,由于应用程序的使用过程中,其对应的所使用的内存可能发生变化,即定时更新的更新内存信息中可能有部分内存信息在应用程序的使用过程中产生变化。因此,在应用程序关闭时,需要从定时更新的更新内存信息中查询得到应用程序关闭前所使用的目标内存信息,从而对目标内存信息进行清除。能够在应用程序产生变化时,对其关闭前真正使用的内存数据进行有效地清除,提高了数据清除的准确性。
第二方面,本申请实施例还提供了一种数据清除装置,所述装置包括:收集模块、转换模块和处理模块;
所述收集模块用于监控虚拟机中应用程序的状态,若监控到所述应用程序关闭,则收集所述应用程序使用的内存信息的用户虚拟地址数据;
所述转换模块用于将所述用户虚拟地址数据转换为用户物理地址数据;
所述处理模块用于基于所述用户物理地址数据进行记录,以得到记录内存信息,并在所述应用程序关闭时对所述记录内存信息进行清除。
在上述实现过程中,通过收集模块对应用程序的状态进行检测,并在应用程序关闭时对其使用的内存的虚拟地址进行收集,通过转换模块对虚拟机中的不同地址进行转换处理,得到物理地址,通过处理模块根据物理地址记录应用程序所使用的内存信息,以在应用程序关闭时对记录内存信息进行清除。
第三方面,本申请实施例还提供了一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器读取并运行所述程序指令时,执行上述数据清除方法中任一实现方式中的步骤。
第四方面,本申请实施例还提供了一种计算机可读取存储介质,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述数据清除方法中任一实现方式中的步骤。
综上所述,本申请实施例提供了一种数据清除方法、装置、电子设备及计算机可读取存储介质,通过对应用程序的状态进行检测,并在应用程序关闭时对其使用的内存进行收集和处理,能够在虚拟机的应用程序关闭时,在虚拟机和物理的宿主机中及时的对应用程序中的内存数据进行清除,以减少内存数据的泄露情况,提高了应用程序使用时的安全性。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种电子设备的方框示意图;
图2为本申请实施例提供的一种数据清除方法的流程示意图;
图3为本申请实施例提供的一种步骤S400的详细流程示意图;
图4为本申请实施例提供的一种步骤S200的详细流程示意图;
图5为本申请实施例提供的一种步骤S300的详细流程示意图;
图6为本申请实施例提供的另一种数据清除方法的流程示意图;
图7为本申请实施例提供的又一种数据清除方法的流程示意图;
图8为本申请实施例提供的一种数据清除装置的结构示意图。
图标:100-电子设备;111-存储器;112-存储控制器;113-处理器;114-外设接口;115-输入输出单元;116-显示单元;600-数据清除装置;610-收集模块;620-转换模块;630-处理模块。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请实施例的一部分实施例,而不是全部的实施例。基于本申请实施例的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请实施例保护的范围。
对于某些需要访问保密的数据的应用程序,在使用物理机器时,当物理机器关闭时,内存数据被清理;而当这些应用程序运行在虚拟机环境时,若虚拟机关机,物理的宿主机并不会关机,因此虚拟机申请和使用的内存仍然驻留在宿主机的内存中,运行在宿主机的进程,能通过某些手段获取内存中的数据,存在加密数据泄露的风险。
现有技术中,为了减少数据泄露的风险,通常采用设置固定区域对数据进行存储和清除的方式,例如:在虚拟机的用户态中注册需要监控的虚拟内存区域并设置UFFD_FEATURE_SIGBUS;以一个页面大小为单位,逐页清除虚拟内存区域中的页面内容;在用户态访问被监控的虚拟内存区域,且被访问的虚拟内存地址所在的虚拟页面没有映射的情况下,基于用户态对应的用户态进程获取内核发送的SIGBUS信号,并通过用户态进程在信号SIGBUS处理函数中跳过对该虚拟内存区域的清理。
但是,本申请人发现,在这种处理方式中存在以下问题:1、为了使用
这块内存区域,应用程序需要进行改造,需要主动识别到该内存区域,并主5动把数据放到该区域。但对于大部分应用程序是无法修改的,导致该方式使
用非常受限。2、内存区域在虚拟机内部是共享的,虚拟机内的进程均可以获取到虚拟内存区域的数据,也存在较大的安全隐患。3、虚拟内存区域数据清理需要等到虚拟机退出时,而即使应用程序退出,存在于虚拟内存区域数据不会被清理,依旧存在加密数据泄露的风险。
0为了解决上述问题,本申请实施例提供了一种数据清除方法,应用于电
子设备,电子设备可以为服务器、个人电脑(Personal Computer,PC)、平板电脑、智能手机、个人数字助理(Personal Digital Assistant,PDA)等具有逻辑计算功能的电子设备,电子设备可以作为宿主机,宿主机中设置有虚
拟机,能够对虚拟机中运行的应用程序的内存数据进行有效清除,以减小加5密数据泄露的风险。
可选地,请参阅图1,图1为本申请实施例提供的一种电子设备的方框示意图。电子设备100可以包括存储器111、存储控制器112、处理器113、外设接口114、输入输出单元115、显示单元116。本领域普通技术人员可
以理解,图1所示的结构仅为示意,其并不对电子设备100的结构造成限0定。例如,电子设备100还可包括比图1中所示更多或者更少的组件,或
者具有与图1所示不同的配置。
上述的存储器111、存储控制器112、处理器113、外设接口114、输入输出单元115及显示单元116各元件相互之间直接或间接地电性连接,以
实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总5线或信号线实现电性连接。上述的处理器113用于执行存储器中存储的可
执行模块。
其中,存储器111可以是,但不限于,随机存取存储器(Random Access Memory,简称RAM),只读存储器(Read Only Memory,简称ROM),可编程只读存储器(ProgrammableRead-Only Memory,简称PROM),可擦除只读存储器(Erasable Programmable Read-OnlyMemory,简称EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-OnlyMemory,简称EEPROM)等。其中,存储器111用于存储程序,处理器113在接收到执行指令后,执行程序,本申请实施例任一实施例揭示的过程定义的电子设备100所执行的方法可以应用于处理器113中,或者由处理器113实现。
上述的处理器113可能是一种集成电路芯片,具有信号的处理能力。上述的处理器113可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(digital signalprocessor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器,也可以是任何常规的处理器等。
上述的外设接口114将各种输入/输出装置耦合至处理器113以及存储器111。在一些实施例中,外设接口114,处理器113以及存储控制器112可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
上述的输入输出单元115用于提供给用户输入数据。输入输出单元115可以是,但不限于,鼠标和键盘等。
上述的显示单元116在电子设备100与用户之间提供一个交互界面(例如用户操作界面)或用于显示图像数据给用户参考。在本实施例中,显示单元可以是液晶显示器或触控显示器。若为触控显示器,其可为支持单点和多点触控操作的电容式触控屏或电阻式触控屏等。支持单点和多点触控操作是指触控显示器能感应到来自该触控显示器上一个或多个位置处同时产生的触控操作,并将该感应到的触控操作交由处理器进行计算和处理。在本申请实施例中,显示单元116可以显示各种地址数据以及记录的内存信息等。
本实施例中的电子设备可以用于执行本申请实施例提供的各个数据清除方法中的各个步骤。下面通过几个实施例详细描述数据清除方法的实现过程。
请参阅图2,图2为本申请实施例提供的一种数据清除方法的流程示意图,该方法可以包括步骤S200-S400。
步骤S200,监控虚拟机中应用程序的状态,若监控到应用程序关闭,则收集应用程序使用的内存信息的用户虚拟地址数据。
其中,在Linux系统中,Qemu/KVM是使用最普遍的虚拟化监视器。在使用虚拟机的情况下,虚拟机由虚拟机进程(宿主机上的用户态Qemu进程)和KVM(宿主机内核态的KVM模块)共同合作模拟。在虚拟机内存虚拟化中,虚拟机内部运行完整的操作系统,区分为用户态和内核态,用户态运行的应用访问内存通过虚拟地址(GVA:Guest Virtual Address)访问。虚拟机操作系统将GVA翻译为GPA(Guest Physical Address)。而由于虚拟机设置在物理的宿主机上,宿主机上也可以分为用户态和内核态,因此,Qemu进程可以完成GPA到HVA(Host Virtual Address)的转换,最后宿主机操作系统将完成HVA到HPA(Host PhysicalAddress)。
需要说明的是,由于虚拟机内部的应用程序在使用过程中可能会访问加密数据,加密文件可以存储在虚拟磁盘设备中,应用程序从文件系统中读取加密文件,并进行解密并呈现,以将数据暂时存在内存中。应用程序以用户态进程运行,通过虚拟内存地址访问内存,因此,可以在虚拟机的用户态中设置相应的具有监视功能的监视模块,以对应用程序的运行状态进行监控,并在监控到应用程序关闭时,收集应用程序使用的内存信息的虚拟内存地址,即GVA,作为相应的用户虚拟地址数据。
步骤S300,将用户虚拟地址数据转换为用户物理地址数据。
其中,还可以在虚拟机的内核态中设置相应的具有地址转换功能的地址转换模块,由监控模块将获取的用户虚拟地址数据发送至地址转换模块,并且,为了对内存的物理地址进行获取,可以有地址转换模块将应用程序访问的用户虚拟地址数据转换为虚拟机的物理地址,即GPA,以作为用户物理地址数据。
步骤S400,基于用户物理地址数据进行记录,以得到记录内存信息,并在应用程序关闭时对记录内存信息进行清除。
其中,对已经分配给应用程序进行存储的内存页对应的用户物理地址进行相应地记录,以确定记录内存信息,从而能够在应用程序退出或断开等不同的关闭情况时,对记录内存信息进行相应地清除处理。无需将应用程序的数据存放在指定内存空间中进行处理,适用于对任何应用程序进行处理,能够在宿主机和虚拟机中都对应用程序的内存进行针对性清除,不会影响其他存储的数据,保证了数据清除的有效性和效率,以使内存数据与其对应的应用程序的进程生命周期同步,在应用程序关闭时即进行清除,降低了内存数据泄露的风险。
在图2所示的实施例中,在虚拟机的应用程序关闭时,在虚拟机和物理的宿主机中及时的对应用程序中的记录内存信息进行清除,以减少内存数据的泄露情况,提高了应用程序使用时的安全性。
可选地,请参阅图3,图3为本申请实施例提供的一种步骤S400的详细流程示意图,步骤S400中还可以包括步骤S410-S420。
步骤S410,将用户物理地址数据转换为宿主虚拟地址数据;
其中,在Linux系统的Qemu/KVM虚拟化监视器中,GPA与HVA一一映射,可以视为两个地址等价。因此,为了对应用程序使用的内存进行记录可以先将用户物理地址数据转换为宿主虚拟地址数据进行处理,即将GPA转换为HVA进行处理。示例地,可以在宿主机的用户态中,例如在宿主机用户态的Qemu进程中设置相应的内存安全模块对用户物理地址数据进行转换。
步骤S420,基于树状结构对宿主虚拟地址数据进行记录,得到记录内存信息。
其中,虚拟机中进行存储的地址空间通常被划分为固定大小的内存页进行管理,内存页的大小通常为4KB,在根据宿主虚拟地址数据进行记录时,可能需要记录大量的内存页,应用程序使用的内存页是经过虚拟机操作系统段页式内存管理分配的,内存页在内存中可能是非常离散的,并且内存页的数量可能会百万甚至更多(一百万个内存页即是4GB内存大小),因此,考虑到应用程序使用的内存信息的数量和离散性,为了更高效地管理这些内存页的对应的宿主虚拟地址,可以通过树状结构对宿主虚拟地址数据进行记录,以对多个内存页进行记录,得到记录内存信息。
可选地,若监控到应用程序关闭,则对记录内存信息对应的宿主虚拟地址进行写零处理。由于进行记录的记录内存信息对应的地址为宿主虚拟地址,因此,在进行清除时,可以直接对记录内存信息中每个内存页对应的宿主虚拟地址进行写零处理,能够对应用程序对应的内存数据进行针对性清除,不会对内存中存储的其他数据造成影响,提高了数据清除的效率和准确性。
在图3所示的实施例中,能够有效地提高数据记录时的效率。
可选地,请参阅图4,图4为本申请实施例提供的一种步骤S200的详细流程示意图,步骤S200中还可以包括步骤S210-S230。
步骤S210,根据属性文件获取栈、堆和内存映射的起始虚拟地址和大小信息。
其中,应用程序运行在虚拟机的用户态中,使用的是虚拟机内的虚拟地址空间,能存储数据的地址空间区域只能是进程的栈地址空间、堆地址空间、匿名映射地址空间,这些地址空间都可以被划分为固定大小的内存页进行管理,例如每个内存页的大小为4KB等。示例地,在Linux操作系统的进程地址空间中,栈地址空间可以向下增长,通过匿名映射获得一片内存空间,堆地址空间可以向上增长等。在监控模块对应用程序的数据进行收集时,在虚拟机中安装的操作系统为Linux系统时,可以通过/proc/[pid]/maps和/proc/[pid]/smaps两个属性文件获取栈、堆和匿名映射的起始虚拟地址和大小信息,其中[pid]表示应用程序的进程id。
可选地,在虚拟机中安装的操作系统为Windows系统时,则可以通过Windows API接口获取相应的栈、堆和匿名映射的起始虚拟地址和大小信息。
步骤S220,根据起始虚拟地址和大小信息,确定应用程序使用的内存信息。
其中,可以根据栈、堆、内存映射的起始虚拟地址和大小信息确定应用程序进行存储时的内存页,作为相应的内存信息。
步骤S230,收集内存信息对应的用户虚拟地址数据。
其中,可以对应用程序使用的内存信息中的栈、堆和内存映射对应的虚拟地址空间范围,即GVA进行收集,以得到相应的用户虚拟地址数据。
在图4所示的实施例中,能够根据应用程序的使用情况进行相应地收集,提高了用户虚拟地址数据的有效性。
可选地,请参阅图5,图5为本申请实施例提供的一种步骤S300的详细流程示意图,步骤S300中还可以包括步骤S310-S320。
步骤S310,判断用户虚拟地址数据对应的内存信息是否实际分配。
其中,通过对收集的用户虚拟地址数据进行检验,以确定其对应的内存信息是否已经实际分配。
步骤S320,若内存信息实际分配,则基于转换处理将用户虚拟地址数据转换为用户物理地址数据。
其中,转换处理可以包括查表处理,在内存信息实际分配时,能够通过多种转换方式,将应用程序访问的用户虚拟地址数据转换为虚拟机的物理地址,即用户物理地址数据。
可选地,虚拟机中安装的操作系统不同,其对应的转换处理也可以不同,例如:Linux系统的地址转换可以在用户态通过/proc/[pid]/maps和/proc/[pid]/pagemap暴露的信息实现。通过判断栈、堆和匿名映射的地址空间的内存页是否已经实际分配,对于64位长度的地址,如已经实际分配,可以直接将内存页的虚拟地址转换为物理地址。Windows系统与Linux类似,也可以通过段页式内存管理方法,并通过MMU加速页表查询,完成虚拟地址到物理地址的转换。但Windows并将进程的堆、栈和匿名映射的虚拟地址空间暴露在用户态,因此Windows系统下地址转换模块可以在内核态实现。
在图5所示的实施例中,能够在确定分配后对不同类型的地址数据进行转换处理,有效地提高了用户物理地址数据的有效性。
可选地,请参阅图6,图6为本申请实施例提供的另一种数据清除方法的流程示意图,该方法可以包括步骤S510-S530。
步骤S510,基于预设时间规则,定时收集应用程序使用的过程内存信息的定时虚拟地址数据。
其中,考虑到虚拟机存在异常关闭的情况,例如断电导致虚拟机关闭,或者虚拟机闪退等情况。为了在异常情况下对应用程序的内存数据进行有效清除,可以设置相应的预设时间规则,例如每10分钟进行一次收集等,定时地对应用程序使用过程中的过程内存信息对应的定时虚拟地址数据进行收集。
步骤S520,将定时虚拟地址数据转换为定时物理地址数据。
其中,为了对内存页的虚拟地址进行处理,也可以将定时虚拟地址数据转换为定时物理地址数据,地址的转换方式可以与上述转换方式相同,不再进行赘述。
步骤S530,基于定时物理地址数据在树状结构中进行更新,得到更新内存信息。
其中,可以继续基于树状结构对定时物理地址数据转换得到的宿主机的虚拟地址数据,即HVA地址进行记录,以对树状结构进行更新,添加多个更新的内存页,得到相应的更新内存信息。
需要说明的是,树状结构的节点中分为两类:叶子节点、非叶子节点。除根节点外,其余所有节点均是在插入内存页地址时逐步生成,因此该结构能应对各种数量的内存页。非叶子节点比叶子节点多height信息,节点中的信息说明如下:height:占16字节,表示当前节点所在树的高度。Count:占16字节,表示本节点有几个slot有效。offset:占64字节,表示一本节点slot中最大的内存页地址。Slot:占64个字节,用于存储内存地址。叶子节点存储内存页的起始地址(HVA),非叶子节点指向子节点。每个节点固定64个slot。新增一个内存页时,需要更加内存页的地址,查找合适的叶子节点。从根节点开始,逐级找到叶子节点,依据规则:比较内存页的地址和节点的offset,找到offset大于内存页地址并且最接近内存页地址的节点。找到的叶子节点有两种情况:1、叶子节点有空闲slot:slot记录下该内存页地址;2、叶子节点没有空闲slot:逐级向上查节点,是否有空闲slot,如果查到根节点则需要增加树的高度。最终将叶子节点分裂成两个叶子节点,在叶子节点中记录内存页地址。最后,可以根据新的插入内存页的地址,逐级检测节点的offset值是否需要修改。完成内存页加入树状结构的更新。
在图6所示的实施例中,能够在应用程序的使用过程中进行定时地收集和更新处理,在虚拟机产生异常时,仍能够根据定时更新的数据对应用程序的内存数据进行清除,适用于多种情况,提高了数据清除的效果。
可选地,请参阅图7,图7为本申请实施例提供的又一种数据清除方法的流程示意图,该方法还可以包括步骤S540-S550。
步骤S540,若监控到应用程序关闭,在更新内存信息中查询应用程序使用的目标内存信息。
其中,由于应用程序的使用过程中,其对应的所使用的内存可能发生变化,即定时更新的更新内存信息中可能有部分内存信息在应用程序的使用过程中产生变化。因此,在应用程序关闭时,需要从定时更新的更新内存信息中查询得到应用程序关闭前所使用的目标内存信息,以去除更新内存信息中曾经被使用,但在应用程序关闭时未被使用的内存页。
步骤S550,对目标内存信息进行清除。
其中,可以在进程内直接对确定的目标内存信息进行清除,数据清除方式可以与记录内存信息的处理方式相同,不再进行赘述。
在图7所示的实施例中,能够在应用程序产生变化时,对其关闭前真正使用的内存数据进行有效地清除,提高了数据清除的准确性。
请参阅图8,图8为本申请实施例提供的一种数据清除装置的结构示意图,数据清除装置600中可以包括:收集模块610、转换模块620和处理模块630;
收集模块610用于监控虚拟机中应用程序的状态,若监控到应用程序关闭,则收集应用程序使用的内存信息的用户虚拟地址数据;
转换模块620用于将用户虚拟地址数据转换为用户物理地址数据;
处理模块630用于基于用户物理地址数据进行记录,以得到记录内存信息,并在应用程序关闭时对记录内存信息进行清除。
在一可选的实施方式中,处理模块630中可以包括记录子模块,用于将用户物理地址数据转换为宿主虚拟地址数据;基于树状结构对宿主虚拟地址数据进行记录,得到记录内存信息。
在一可选的实施方式中,处理模块630中可以包括清除子模块,用于若监控到应用程序关闭,则对记录内存信息对应的宿主虚拟地址进行写零处理。
在一可选的实施方式中,收集模块610具体用于:根据属性文件获取栈、堆和内存映射的起始虚拟地址和大小信息;根据起始虚拟地址和大小信息,确定应用程序使用的内存信息;收集内存信息对应的用户虚拟地址数据。
在一可选的实施方式中,转换模块620具体用于:判断用户虚拟地址数据对应的内存信息是否实际分配;若内存信息实际分配,则基于转换处理将用户虚拟地址数据转换为用户物理地址数据;其中,转换处理包括查表处理。
在一可选的实施方式中,数据清除装置600中还可以包括定时模块,用于基于预设时间规则,定时收集应用程序使用的过程内存信息的定时虚拟地址数据;将定时虚拟地址数据转换为定时物理地址数据;基于定时物理地址数据在树状结构中进行更新,得到更新内存信息。
在一可选的实施方式中,数据清除装置600中还可以包括查询模块,用于若监控到应用程序关闭,在更新内存信息中查询应用程序使用的目标内存信息;对目标内存信息进行清除。
由于本申请实施例中的数据清除装置600解决问题的原理与前述的数据清除方法的实施例相似,因此本实施例中的数据清除装置600的实施可以参见上述数据清除方法的实施例中的描述,重复之处不再赘述。
本申请实施例还提供了一种计算机可读取存储介质,可读取存储介质中存储有计算机程序指令,计算机程序指令被一处理器读取并运行时,执行本实施例提供的数据清除方法中任一项方法中的步骤。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的框图显示了根据本申请的多个实施例的设备的可能实现的体系架构、功能和操作。在这点上,框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图中的每个方框、以及框图的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种数据清除方法,其特征在于,所述方法包括:
监控虚拟机中应用程序的状态,若监控到所述应用程序关闭,则收集所述应用程序使用的内存信息的用户虚拟地址数据;
将所述用户虚拟地址数据转换为用户物理地址数据;
基于所述用户物理地址数据进行记录,以得到记录内存信息,并在所述应用程序关闭时对所述记录内存信息进行清除。
2.根据权利要求1所述的方法,其特征在于,所述基于所述用户物理地址数据进行记录,以得到记录内存信息,包括:
将所述用户物理地址数据转换为宿主虚拟地址数据;
基于树状结构对所述宿主虚拟地址数据进行记录,得到所述记录内存信息。
3.根据权利要求2所述的方法,其特征在于,所述在所述应用程序关闭时对所述记录内存信息进行清除,包括:
若监控到所述应用程序关闭,则对所述记录内存信息对应的宿主虚拟地址进行写零处理。
4.根据权利要求1所述的方法,其特征在于,所述收集所述应用程序使用的内存信息的用户虚拟地址数据,包括:
根据属性文件获取栈、堆和内存映射的起始虚拟地址和大小信息;
根据所述起始虚拟地址和所述大小信息,确定所述应用程序使用的所述内存信息;
收集所述内存信息对应的所述用户虚拟地址数据。
5.根据权利要求1所述的方法,其特征在于,所述将所述用户虚拟地址数据转换为用户物理地址数据,包括:
判断所述用户虚拟地址数据对应的所述内存信息是否实际分配;
若所述内存信息实际分配,则基于转换处理将所述用户虚拟地址数据转换为用户物理地址数据;
其中,所述转换处理包括查表处理。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述方法还包括:
基于预设时间规则,定时收集所述应用程序使用的过程内存信息的定时虚拟地址数据;
将所述定时虚拟地址数据转换为定时物理地址数据;
基于所述定时物理地址数据在树状结构中进行更新,得到更新内存信息。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若监控到所述应用程序关闭,在所述更新内存信息中查询所述应用程序使用的目标内存信息;
对所述目标内存信息进行清除。
8.一种数据清除装置,其特征在于,所述装置包括:收集模块、转换模块和处理模块;
所述收集模块用于监控虚拟机中应用程序的状态,若监控到所述应用程序关闭,则收集所述应用程序使用的内存信息的用户虚拟地址数据;
所述转换模块用于将所述用户虚拟地址数据转换为用户物理地址数据;
所述处理模块用于基于所述用户物理地址数据进行记录,以得到记录内存信息,并在所述应用程序关闭时对所述记录内存信息进行清除。
9.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器运行所述程序指令时,执行权利要求1-7中任一项所述方法中的步骤。
10.一种计算机可读取存储介质,其特征在于,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器运行时,执行权利要求1-7任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211690414.2A CN116010029A (zh) | 2022-12-27 | 2022-12-27 | 数据清除方法、装置、电子设备及计算机可读取存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211690414.2A CN116010029A (zh) | 2022-12-27 | 2022-12-27 | 数据清除方法、装置、电子设备及计算机可读取存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116010029A true CN116010029A (zh) | 2023-04-25 |
Family
ID=86027823
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211690414.2A Pending CN116010029A (zh) | 2022-12-27 | 2022-12-27 | 数据清除方法、装置、电子设备及计算机可读取存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116010029A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117687769A (zh) * | 2023-06-02 | 2024-03-12 | 荣耀终端有限公司 | 一种内存修复清理方法及相关设备 |
-
2022
- 2022-12-27 CN CN202211690414.2A patent/CN116010029A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117687769A (zh) * | 2023-06-02 | 2024-03-12 | 荣耀终端有限公司 | 一种内存修复清理方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101203838B (zh) | 直接存储器存取转换的地址窗口支持 | |
RU2556418C2 (ru) | Определение форматов трансляции для функций адаптера во время выполнения | |
RU2562372C2 (ru) | Активация/деактивация адаптеров вычислительной среды | |
US9164898B2 (en) | Administering thermal distribution among memory modules of a computing system | |
CN105393229A (zh) | 虚拟机中的页面错误注入使得经换出的存储器页面映射到虚拟机虚拟化存储器中 | |
US10061918B2 (en) | System, apparatus and method for filtering memory access logging in a processor | |
US9696933B2 (en) | Virtual machine manager initiated page-in of kernel pages | |
US11354047B2 (en) | Memory protection in virtualized computer systems using shadow page tables | |
WO2020057394A1 (zh) | 监控样本进程的内存访问行为的方法和装置 | |
US20240134980A1 (en) | Identify malicious software | |
US11782761B2 (en) | Resource management unit for capturing operating system configuration states and offloading tasks | |
CN116010029A (zh) | 数据清除方法、装置、电子设备及计算机可读取存储介质 | |
EP4042305A1 (en) | Resource management unit for capturing operating system configuration states and managing malware | |
US10664594B2 (en) | Accelerated code injection detection using operating system controlled memory attributes | |
CN112860506B (zh) | 监控数据的处理方法、装置、系统和存储介质 | |
US8886867B1 (en) | Method for translating virtual storage device addresses to physical storage device addresses in a proprietary virtualization hypervisor | |
US20130097357A1 (en) | Method for identifying memory of virtual machine and computer system thereof | |
WO2023081032A1 (en) | Query-based database redaction | |
US8732442B2 (en) | Method and system for hardware-based security of object references | |
CN112667721A (zh) | 数据分析方法、装置、设备及存储介质 | |
TWI444824B (zh) | 虛擬機器記憶體的鑑識方法與電腦系統 | |
Utomo et al. | Detecting hang on the virtual machine using LibVMI | |
CN113946348A (zh) | 终端的软件功能适配方法、系统、电子设备及存储介质 | |
CN114372277A (zh) | 一种TrueCrypt解密密钥提取方法、终端设备及存储介质 | |
Krishnan et al. | Timecapsule: secure recording of accesses to a protected datastore |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |