内存地址监控方法、装置及电子设备与流程

文档序号:15346733发布日期:2018-09-04 22:51阅读:100来源:国知局

本发明涉及内存监控技术领域,具体而言,涉及一种内存地址监控方法、装置及电子设备。



背景技术:

在linux系统中定义的变量,无论什么类型都会在内核空间某一处,系统启动时把内核加载到内存中运行。当系统在进行压力测试或在不可预料的意外下,内核中的指针变量的值可能发生异常修改,比如被改为0,成为空指针,当设备cpu访问到该空指针时,将会导致设备重启,从而出现大量的客退机,为公司和客户带来不小的损失。



技术实现要素:

本发明实施例的目的在于提供一种内存地址监控方法、装置及电子设备,以在监控到内存地址发生异常修改时,阻止对内存地址的修改,有效避免了内存地址被异常修改后导致设备重启的问题。

为了实现上述目的,本发明实施例采用的技术方案如下:

第一方面,本发明实施例提出一种内存地址监控方法,所述方法包括:检测是否存在修改目标内存地址的修改指令;当存在所述修改指令时,判断所述修改指令对应的修改操作是否为异常修改;当所述修改操作为异常修改时,控制所述修改指令停止执行。

第二方面,本发明实施例还提出一种内存地址监控装置,所述装置包括:检测模块,用于检测是否存在修改目标内存地址的修改指令;判断模块,用于当存在所述修改指令时,判断所述修改指令对应的修改操作是否为异常修改;控制模块,用于当所述修改操作为异常修改时,控制所述修改指令停止执行。

第三方面,本发明实施例还提出一种电子设备,所述电子设备包括存储有计算机程序的计算机可读存储介质和处理器,所述计算机程序被所述处理器读取并运行时,实现上述各方面所述的方法。

第四方面,本发明实施例还提出一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器读取并运行时,实现上述各方面所述的方法。

相对现有技术,本发明实施例具有以下有益效果:

本发明实施例提供的内存地址监控方法、装置及电子设备,通过检测是否存在修改目标内存地址的修改指令,当存在该修改指令时,判断该修改指令对应的修改操作是否为异常修改,当该修改操作为异常修改时,控制该修改指令停止执行。因此,在本申请中,通过在所监控的目标内存地址被修改之前,检测修改操作是否为异常修改,从而阻止异常修改的发生,有效避免了因内存地址被异常修改导致的设备重启的问题,减少客户和公司不必要的损失。

本发明的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明实施例了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本发明实施例所提供的电子设备的结构框图。

图2示出了本发明实施例所提供的内存地址监控方法的流程示意图。

图3示出了图2中步骤s102的流程示意图。

图4示出了本发明实施例所提供的内存地址监控装置的功能模块示意图。

图5示出了图4中判断模块的子模块示意图。

图标:100-电子设备;400-内存地址监控装置;110-存储器;120-处理器;130-总线;410-检测模块;420-判断模块;430-控制模块;421-调用模块;422-处理模块。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

本发明实施例所提供的内存地址监控方法及装置可应用于图1所示的电子设备100中。该电子设备100可以包括存储器110、处理器120及总线130,存储器110及处理器120通过总线130连接;处理器120用于执行存储器110中存储的可执行模块,例如计算机程序。其中,该电子设备100可以是,但不限于,智能手机、平板电脑、个人电脑(personalcomputer,pc)等。

其中,存储器110可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。内存地址监控装置400包括至少一个可以软件或固件(firmware)的形式存储于存储器110中或固化在电子设备100中的操作系统(operatingsystem,os)中的软件功能模块。存储器110可用于存储软件程序以及模块,如本发明实施例所提供的内存地址监控方法及装置对应的程序指令/模块,处理器120通过执行存储在存储器110内的软件程序及模块,从而执行各种功能应用及数据处理。本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器120读取并运行时,实现本发明实施例所揭示的内存地址监控方法。

处理器120可能是一种集成电路芯片,具有信号的处理能力。处理器120可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

总线130可以是isa总线、pci总线或eisa总线等。图1中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

可以理解,图1所示的结构仅为示意,该电子设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。

请参照图2,为本发明实施例所提供的内存地址监控方法的流程示意图。需要说明的是,本发明实施例所述的内存地址监控方法并不以图2以及以下所述的具体顺序为限制,应当理解,在其它实施例中,本发明实施例所述的内存地址监控方法其中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。本发明实施例所提供的内存地址监控方法可应用于图1所示的电子设备100中,下面将对图2所示的具体流程进行详细阐述。

步骤s101,检测是否存在修改目标内存地址的修改指令。

在本实施例中,需预先声明所要监控的变量以及变量地址,并将所要监控的变量及变量地址均预先注册到电子设备100的操作系统(例如,linux操作系统)中;可以理解,该目标内存地址为已经注册到操作系统并且需要进行监控的变量地址。

在实践中,可以采用指针来存放变量地址,指针的值即为变量地址,指针的值被修改意味着变量地址被修改。电子设备100在进行系统压力测试等情况下,设备cpu可能发送修改指令对内核中的某个指针的值进行修改,该修改指令中包括变量地址。因此,在本实施例中,若检测到修改指令且该修改指令对应的变量地址为所监控的目标内存地址,则该修改指令为用于修改目标内存地址的指令,即目标内存地址将要被修改;若没有检测到修改指令或该修改指令对应的变量地址不是所监控的目标内存地址,则确定目标内存地址不会被修改。

步骤s102,当存在修改指令时,判断修改指令对应的修改操作是否为异常修改。

在本实施例中,当检测到修改指令且该修改指令为用于修改目标内存地址的指令时,可确定该目标内存地址将要被修改。为了防止因目标内存地址被异常修改,导致电子设备100重启等问题的发生,在目标内存地址被修改之前,需要判断当前的修改指令所对应的修改操作是否为异常修改。如图3所示,在本实施例中,该步骤s102具体包括如下子步骤:

子步骤s1021,调用预先设置的处理函数。

在本实施例中,当确定目标内存地址将要被修改时,调用预先设置的处理函数,以便通过处理函数做异常修改的判断;当确定目标内存地址不会被修改时,则该处理函数不会被调用。其中,处理函数可以理解为能够判断目标内存地址的修改操作是否异常的程序模块,当检测到目标内存地址将要被修改时,直接调用该处理函数即可进行异常修改的判断。

子步骤s1022,处理函数判断修改指令对应的修改操作是否为异常修改。

在本实施例中,该修改指令包括修改值,该子步骤s1022具体包括:该处理函数可以根据修改指令中的修改值判断修改操作是否为异常修改,当所述修改值未在预设范围内或所述修改值为预设值时,确定所述修改操作为异常修改。

在本实施例中,当该修改指令为修改目标内存地址的指令时,该修改值即是目标内存地址对应的修改值。该处理函数在被调用后,用于判断修改值是否在预设范围内或修改值是否为预设值,当修改值未在预设范围内或修改值为预设值时,确定修改操作为异常修改。例如,预设范围为0x00e80000~0xc0000000,预设值为0或null,当修改指令中的修改值在“0x00e80000~0xc0000000”内,则表示修改操作为正常修改,不进行异常修改处理;当修改指令中的修改值未在“0x00e80000~0xc0000000”内,或者修改值为0或null,则表示修改操作为异常修改,需进行异常修改处理。

需要说明的是,上述中的预设范围“0x00e80000~0xc0000000”及预设值“0或null”仅为一种示例,在实践中,该预设范围及预设值可以根据系统的实际需要来设置,本申请并不以此为限定。

可以理解,在本实施例中,该处理函数也需预先注册到电子设备100的操作系统中,以便在需要做异常修改的判断时直接调用该处理函数,由该处理函数实现具体的判断过程。例如,可通过如下过程向操作系统注册处理函数my_wp_handler:

步骤s103,当修改操作为异常修改时,控制修改指令停止执行。

在本实施例中,在处理函数根据修改值进行基本判断且确定该修改指令对应的修改操作为异常修改时,进行异常修改处理,即控制修改指令停止执行,阻止修改操作的实现,有效避免目标内存地址被异常修改所造成的设备重启等问题,减少不必要的损失。该步骤s103具体包括:当该修改操作为异常修改时,调用预设的接口函数发送控制信号以通过所述控制信号控制所述修改指令停止执行。可以理解,该预设的接口函数为能够实现发送控制信号的函数,当该预设的接口函数被调用时,该接口函数将控制信号发送至设备cpu,以使cpu根据接收到的控制信号中止修改指令的执行,从而使修改指令停止执行。需要说明的是,本申请中通过调用接口函数使修改指令停止执行仅为一种实施方式,在其它实施例中,也可以采用其他方式控制修改指令停止执行,本申请对此不做限制。

在本实施例中,在处理函数根据修改值进行基本判断且确定该修改指令对应的修改操作不是异常修改时,则修改指令可以继续执行,即对目标内存地址的修改操作可以继续。

由此,本申请所提供的内存地址监控方法在检测到目标内存地址有修改操作时,根据修改指令中的修改值判断修改操作是否为异常修改,如果为异常修改,则阻止修改操作的执行,从而有效避开目标内存地址被改为0或null导致设备重启的问题。

请参照图4,为本发明实施例所提供的内存地址监控装置400的功能模块示意图。需要说明的是,本实施例所提供的内存地址监控装置400,其基本原理及产生的技术效果与前述方法实施例相同,为简要描述,本实施例中未提及部分,可参考前述方法实施例中的相应内容。该内存地址监控装置400应用在图1所示的电子设备100中,其包括检测模块410、判断模块420、控制模块430。

可以理解,上述的检测模块410、判断模块420及控制模块430可以为存储在存储器110内的软件功能模块及计算机程序,并且可以被处理器120读取并运行。

该检测模块410用于检测是否存在修改目标内存地址的修改指令。

该判断模块420用于当存在修改指令时,判断修改指令对应的修改操作是否为异常修改。

如图5所示,该判断模块420包括调用模块421及处理模块422。

该调用模块421用于当存在该修改指令时,调用该处理模块422。

该处理模块422用于判断该修改指令对应的修改操作是否为异常修改。

在本实施例中,该修改指令中包括修改值,该处理模块422用于根据该修改值判断修改指令对应的修改操作是否为异常修改,当该修改值未在预设范围内或该修改值为预设值时,确定该修改操作为异常修改。

在本实施例,该处理模块422可以理解为上述的处理函数,能够判断目标内存地址的修改操作做异常修改的判断,当检测模块410检测到目标内存地址将要被修改时,调用模块421调用该处理模块422进行异常修改的判断。

该控制模块430用于当修改操作为异常修改时,控制修改指令停止执行。

在本实施例中,该控制模块430用于当所述修改操作为异常修改时,调用预设的接口函数发送控制信号以通过所述控制信号控制所述修改指令停止执行。

综上所述,本发明实施例提供的内存地址监控方法、装置及电子设备,通过检测是否存在修改目标内存地址的修改指令,当存在修改目标内存地址的修改指令时,判断该修改指令对应的修改操作是否为异常修改;其中,该修改指令中包括修改值,该处理函数根据该修改值可判断修改操作是否为异常修改,当该修改值未在预设范围内或该修改值为预设值时,确定修改操作为异常修改;当判断该修改操作为异常修改时,控制该修改指令停止执行。因此,在本申请中,通过在所监控的目标内存地址被修改之前,检测修改操作是否为异常修改,从而阻止异常修改的发生,有效避免了因内存地址被异常修改导致的设备重启的问题,减少客户和公司不必要的损失。

在本申请中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,订餐服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1