CN108255746A - 内存改写检测方法及装置 - Google Patents

内存改写检测方法及装置 Download PDF

Info

Publication number
CN108255746A
CN108255746A CN201711471848.2A CN201711471848A CN108255746A CN 108255746 A CN108255746 A CN 108255746A CN 201711471848 A CN201711471848 A CN 201711471848A CN 108255746 A CN108255746 A CN 108255746A
Authority
CN
China
Prior art keywords
memory
region
digital digest
written over
module
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
Application number
CN201711471848.2A
Other languages
English (en)
Inventor
聂保珍
李翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Yuanxin Science and Technology Co Ltd
Original Assignee
Beijing Yuanxin Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Yuanxin Science and Technology Co Ltd filed Critical Beijing Yuanxin Science and Technology Co Ltd
Priority to CN201711471848.2A priority Critical patent/CN108255746A/zh
Publication of CN108255746A publication Critical patent/CN108255746A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories

Abstract

本申请公开了内存改写检测方法及装置,其中所述方法包括:获取一进程的不应被改写的内存区域的地址范围;获得所述进程的跟踪权限;逐字对所述内存区域中的数据进行读取;将读取的数据压缩生成固定长度的数字摘要;将新生成的数字摘要与所述内存区域的相应最原始数字摘要进行比较;基于比较结果的一致性确定所述内存区域是否被改写。本发明使能准确监测关键性内存数据,在内存数据被改写时及时采取行动,避免因内存数据被改写造成不必要的损失。

Description

内存改写检测方法及装置
技术领域
本申请涉及电数字数据处理领域,尤其涉及内存改写检测方法及装置。
背景技术
在软件开发和使用中,经常会出现应用程序内存数据被改写的情况。导致内存数据被改写的原因有很多,如内存越界或被其他进程恶意更改。内存被改写会严重影响程序的稳定性,其危险在于后果和症状的随机性,从而可能导致程序执行结果出现问题或者自身崩溃,并很难确定问题原因,在没有虚拟地址空间管理的操作系统中,甚至可能导致系统崩溃。因此,对关键性内存数据进行监测是十分必要的。
发明内容
为了克服现有技术中存在的不足,本发明要解决的技术问题是提供一种内存改写检测方法及装置,其能快速、准确监测关键性内存数据,避免因内存数据被改写造成不必要的损失。
为解决上述技术问题,本发明的内存改写检测方法,包括:
获取一进程的不应被改写的内存区域的地址范围;
获得所述进程的跟踪权限;
逐字对所述内存区域中的数据进行读取;
将读取的数据压缩生成固定长度的数字摘要;
将新生成的数字摘要与所述内存区域的相应最原始数字摘要进行比较;
基于比较结果的一致性确定所述内存区域是否被改写。
作为本发明所述方法的改进,所述方法还包括:响应于确定所述内存区域被改写,使发生内存改写的进程退出运行。
作为本发明所述方法的另一种改进,所述方法还包括:利用私钥对生成的数字摘要进行加密生成签名。
作为本发明所述方法的进一步改进,调用Ptrace接口函数获得所述进程的跟踪权限及逐字对所述内存区域中的数据进行读取。
作为本发明所述方法的另一进一步改进,所述获取一进程的不应被改写的内存区域的地址范围包括:解析所述进程的内存映像文件以获取不应被改写的内存区域的地址范围。
为解决上述技术问题,本发明的内存改写检测装置,包括:
地址范围获取模块,用于获取一进程的不应被改写的内存区域的地址范围;
跟踪权限获得模块,用于获得所述进程的跟踪权限;
数据读取模块,用于逐字对所述内存区域中的数据进行读取;
数字摘要生成模块,用于将读取的数据压缩生成固定长度的数字摘要;
比较模块,用于将新生成的数字摘要与所述内存区域的相应最原始数字摘要进行比较;
改写确定模块,用于基于比较结果的一致性确定所述内存区域是否被改写。
作为本发明所述装置的改进,所述装置还包括退出模块,用于响应于确定所述内存区域被改写,使发生内存改写的进程退出运行。
作为本发明所述装置的另一种改进,所述装置还包括签名模块,用于利用私钥对生成的数字摘要进行加密生成签名。
作为本发明所述装置的又一种改进,所述跟踪权限获得模块和所述数据读取模块通过调用Ptrace接口函数实现。
作为本发明所述装置的再一种改进,所述地址范围获取模块包括解析子模块,用于解析所述进程的内存映像文件以获取不应被改写的内存区域的地址范围。
为解决上述技术问题,本发明的有形计算机可读介质,包括用于执行本发明的内存改写检测方法的计算机程序代码。
为解决上述技术问题,本发明提供一种装置,包括至少一个处理器;及至少一个存储器,含有计算机程序代码,所述至少一个存储器和所述计算机程序代码被配置为利用所述至少一个处理器使得所述装置执行本发明的内存改写检测方法的至少部分步骤。
按照本发明,通过解析进程对应的映像文件内容,得到所需监测的进程的内存空间的地址值;然后例如通过Ptrace接口函数的内存读取功能读取内存空间的数据,可能同时利用签名算法对读取的数据进行加密签名,并防止签名被更改;然后通过校验签名可快速准确判断监控的内存区域数据是否发生改写。从而在内存区域关键数据发生改写时,可及时采取相应措施如使进程退出运行而避免引起不必要的损失。
结合附图阅读本发明实施方式的详细描述后,本发明的其它特点和优点将变得更加清楚。
附图说明
图1为根据本发明方法的一实施例的流程图。
图2为根据本发明装置的一实施例的结构示意图。
为清晰起见,这些附图均为示意性及简化的图,它们只给出了对于理解本发明所必要的细节,而省略其他细节。
具体实施方式
下面参照附图对本发明的实施方式和实施例进行详细说明。
通过下面给出的详细描述,本发明的适用范围将显而易见。然而,应当理解,在详细描述和具体例子表明本发明优选实施例的同时,它们仅为说明目的给出。
图1示出了根据本发明的内存改写检测方法的一实施例的流程图。
在步骤S102,根据Linux环境下所需监控进程的pid,解析该进程对应的proc目录下进程的maps文件,得到进程不应被改写的内存区域的地址范围,例如程序代码段、被加载的共享库的代码段等段的内存区域的起始地址和终止地址。
在步骤S104,调用Ptrace接口函数,设置其request参数值为PTRACE_ATTACH及pid参数值为所需监控进程的pid,从而获得进程的跟踪权限。
在步骤S106,循环调用Ptrace接口函数,给定对应pid参数值,设置其request参数值为PTRACE_PEEKDATA/PTRACE_PEEKTEXT,设置并依次增加addr参数值,逐字对内存中的数据进行读取。
在步骤S108,利用签名算法将读取的数据压缩生成固定长度的数字摘要,并利用私钥对数字摘要进行加密生成签名。签名算法例如为MD5、RSA算法或者任何其它适当的算法。在实施例中,可利用前述的任何一种算法对读取的内存数据生成签名。在另一实施例中,也可利用两种算法相结合生成签名。例如首先利用MD5算法对读取到的内存数据生成数字摘要,然后利用RSA算法使用私钥对生成的数字摘要进行加密,从而生成签名,进一步防止数字摘要被改写。
在进程刚启动时执行步骤S102到S108,得到最原始数字摘要因而得到最原始的签名。可将最原始的签名追加至所监测进程的原可执行文件的末尾或者另外单独存放,以供后续比较时使用。
在步骤S110,取出最原始的签名,利用公钥对其进行解密,得到最原始数字摘要。
在步骤S112,将新生成的数字摘要与最原始数字摘要进行对比,根据对比的一致性确定监测的内存中的数据是否被改写。如果新生成的数字摘要与最原始数字摘要的对比结果一致,则所监测的内存区域未被改写,处理可返回到步骤S102,进行下一周期的监测。如果新生成的数字摘要与最原始数字摘要的对比结果不一致,则所监测的内存区域已被改写,则处理进行到步骤S114。
在步骤S114,调用Ptrace接口函数,设置request参数值为PTRACE_KILL,并设置pid,使发生内存改写的进程退出执行,从而避免内存关键数据的改写导致不必要的损失。
图2示出了根据本发明的内存改写检测装置的一实施例的结构示意图。该实施例的装置包括:地址范围获取模块202,用于获取一进程的不应被改写的内存区域的地址范围;跟踪权限获得模块204,用于通过调用Ptrace接口函数获得所述进程的跟踪权限;数据读取模块206,用于通过循环调用Ptrace接口函数逐字对所述内存区域中的数据进行读取;数字摘要生成模块208,用于将读取的数据压缩生成固定长度的数字摘要;比较模块210,用于将新生成的数字摘要与所述内存区域的相应最原始数字摘要进行比较;改写确定模块212,用于基于比较结果的一致性确定所述内存区域是否被改写。在实施例中,地址范围获取模块202可包括解析子模块,用于解析所述进程的内存映像文件以获取不应被改写的内存区域的地址范围。
根据本发明装置的一种实施方式,所述装置还包括退出模块,用于响应于确定所述内存区域被改写,使发生内存改写的进程退出运行。
根据本发明装置的另一种实施方式,所述装置还包括签名模块,用于利用私钥对生成的数字摘要进行加密生成签名。
在此所述的多个不同实施例或者其特定特征、结构或特性可在本发明的一个或多个实施方式中适当组合。另外,在某些情形下,只要适当,流程图中和/或流水处理描述的步骤顺序可修改,并不必须精确按照所描述的顺序执行。另外,本发明的多个不同方面可使用软件、硬件、固件或者其组合和/或执行所述功能的其它计算机实施的模块或装置进行实施。本发明的软件实施可包括保存在计算机可读介质中并由一个或多个处理器执行的可执行代码。计算机可读介质可包括计算机硬盘驱动器、ROM、RAM、闪存、便携计算机存储介质如CD-ROM、DVD-ROM、闪盘驱动器和/或例如具有通用串行总线(USB)接口的其它装置,和/或任何其它适当的有形或非短暂计算机可读介质或可执行代码可保存于其上并由处理器执行的计算机存储器。本发明可结合任何适当的操作系统使用。
除非明确指出,在此所用的单数形式“一”、“该”均包括复数含义(即具有“至少一”的意思)。应当进一步理解,说明书中使用的术语“具有”、“包括”和/或“包含”表明存在所述的特征、步骤、操作、元件和/或部件,但不排除存在或增加一个或多个其他特征、步骤、操作、元件、部件和/或其组合。如在此所用的术语“和/或”包括一个或多个列举的相关项目的任何及所有组合。
前面说明了本发明的一些优选实施例,但是应当强调的是,本发明不局限于这些实施例,而是可以本发明主题范围内的其它方式实现。本领域技术人员可以在本发明技术构思的启发和不脱离本发明内容的基础上对本发明作出各种变型和修改,这些变形或修改仍落入本发明的保护范围之内。

Claims (10)

1.一种内存改写检测方法,其特征在于,所述方法包括:
获取一进程的不应被改写的内存区域的地址范围;
获得所述进程的跟踪权限;
逐字对所述内存区域中的数据进行读取;
将读取的数据压缩生成固定长度的数字摘要;
将新生成的数字摘要与所述内存区域的相应最原始数字摘要进行比较;
基于比较结果的一致性确定所述内存区域是否被改写。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于确定所述内存区域被改写,使发生内存改写的进程退出运行。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
利用私钥对生成的数字摘要进行加密生成签名。
4.根据权利要求1-3任一所述的方法,其特征在于,调用Ptrace接口函数获得所述进程的跟踪权限及逐字对所述内存区域中的数据进行读取。
5.根据权利要求1-3任一所述的方法,其特征在于,所述获取一进程的不应被改写的内存区域的地址范围包括:
解析所述进程的内存映像文件以获取不应被改写的内存区域的地址范围。
6.一种内存改写检测装置,其特征在于,所述装置包括:
地址范围获取模块,用于获取一进程的不应被改写的内存区域的地址范围;
跟踪权限获得模块,用于获得所述进程的跟踪权限;
数据读取模块,用于逐字对所述内存区域中的数据进行读取;
数字摘要生成模块,用于将读取的数据压缩生成固定长度的数字摘要;
比较模块,用于将新生成的数字摘要与所述内存区域的相应最原始数字摘要进行比较;
改写确定模块,用于基于比较结果的一致性确定所述内存区域是否被改写。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
退出模块,用于响应于确定所述内存区域被改写,使发生内存改写的进程退出运行。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
签名模块,用于利用私钥对生成的数字摘要进行加密生成签名。
9.根据权利要求6-8任一所述的装置,其特征在于,所述跟踪权限获得模块和所述数据读取模块通过调用Ptrace接口函数实现。
10.根据权利要求6-8任一所述的装置,其特征在于,所述地址范围获取模块包括:
解析子模块,用于解析所述进程的内存映像文件以获取不应被改写的内存区域的地址范围。
CN201711471848.2A 2017-12-29 2017-12-29 内存改写检测方法及装置 Pending CN108255746A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711471848.2A CN108255746A (zh) 2017-12-29 2017-12-29 内存改写检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711471848.2A CN108255746A (zh) 2017-12-29 2017-12-29 内存改写检测方法及装置

Publications (1)

Publication Number Publication Date
CN108255746A true CN108255746A (zh) 2018-07-06

Family

ID=62725091

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711471848.2A Pending CN108255746A (zh) 2017-12-29 2017-12-29 内存改写检测方法及装置

Country Status (1)

Country Link
CN (1) CN108255746A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113297074A (zh) * 2021-05-21 2021-08-24 百果园技术(新加坡)有限公司 一种内存跟踪方法及装置

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101169752A (zh) * 2007-11-26 2008-04-30 中兴通讯股份有限公司 一种捕获导致内存被野指针改写的函数的方法
CN101231599A (zh) * 2008-02-02 2008-07-30 中兴通讯股份有限公司 一种定位特定内存被函数非法改写的方法
CN101251822A (zh) * 2008-03-11 2008-08-27 中兴通讯股份有限公司 一种内存被改写的监控方法
CN101515242A (zh) * 2009-03-16 2009-08-26 中兴通讯股份有限公司 一种查找改写内存的任务的方法和系统
CN101673250A (zh) * 2009-09-18 2010-03-17 中兴通讯股份有限公司 一种手机存储器中代码/数据的保护方法及装置
JP2013175118A (ja) * 2012-02-27 2013-09-05 Toshiba Corp 制御装置、及びそのメモリ故障検出方法、その自己診断方法
CN103914356A (zh) * 2014-03-12 2014-07-09 汉柏科技有限公司 内存改写的定位方法
CN103955438A (zh) * 2014-05-21 2014-07-30 南京大学 基于硬件辅助虚拟化技术的进程内存保护方法
US20160041860A1 (en) * 2014-08-05 2016-02-11 Renesas Electronics Corporation Microcomputer and microcomputer system
CN105718357A (zh) * 2016-01-22 2016-06-29 烽火通信科技股份有限公司 一种内存监视的方法
CN105740699A (zh) * 2016-03-04 2016-07-06 浙江大华技术股份有限公司 一种可执行程序的保护方法及装置

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101169752A (zh) * 2007-11-26 2008-04-30 中兴通讯股份有限公司 一种捕获导致内存被野指针改写的函数的方法
CN101231599A (zh) * 2008-02-02 2008-07-30 中兴通讯股份有限公司 一种定位特定内存被函数非法改写的方法
CN101251822A (zh) * 2008-03-11 2008-08-27 中兴通讯股份有限公司 一种内存被改写的监控方法
CN101515242A (zh) * 2009-03-16 2009-08-26 中兴通讯股份有限公司 一种查找改写内存的任务的方法和系统
CN101673250A (zh) * 2009-09-18 2010-03-17 中兴通讯股份有限公司 一种手机存储器中代码/数据的保护方法及装置
JP2013175118A (ja) * 2012-02-27 2013-09-05 Toshiba Corp 制御装置、及びそのメモリ故障検出方法、その自己診断方法
CN103914356A (zh) * 2014-03-12 2014-07-09 汉柏科技有限公司 内存改写的定位方法
CN103955438A (zh) * 2014-05-21 2014-07-30 南京大学 基于硬件辅助虚拟化技术的进程内存保护方法
US20160041860A1 (en) * 2014-08-05 2016-02-11 Renesas Electronics Corporation Microcomputer and microcomputer system
CN105718357A (zh) * 2016-01-22 2016-06-29 烽火通信科技股份有限公司 一种内存监视的方法
CN105740699A (zh) * 2016-03-04 2016-07-06 浙江大华技术股份有限公司 一种可执行程序的保护方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
孙娟: ""软件故障诊断方法浅析"", 《计算机安全》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113297074A (zh) * 2021-05-21 2021-08-24 百果园技术(新加坡)有限公司 一种内存跟踪方法及装置
CN113297074B (zh) * 2021-05-21 2023-12-22 百果园技术(新加坡)有限公司 一种内存跟踪方法及装置

Similar Documents

Publication Publication Date Title
US11777705B2 (en) Techniques for preventing memory timing attacks
JP7053486B2 (ja) メタデータ処理のための技法
US9858192B2 (en) Cross-page prefetching method, apparatus, and system
EP2891104B1 (en) Detecting a malware process
US10395033B2 (en) System, apparatus and method for performing on-demand binary analysis for detecting code reuse attacks
CN109598122B (zh) 用于检测侧信道攻击的方法和装置
US10339284B2 (en) Measurement method, electronic device, and measurement system
US7496727B1 (en) Secure memory access system and method
US20110145919A1 (en) Method and apparatus for ensuring consistent system configuration in secure applications
CN112989351A (zh) 受完整性保护的命令缓冲区执行
Simon et al. Security analysis of android factory resets
US20170140149A1 (en) Detecting malign code in unused firmware memory
US10713352B2 (en) Method and apparatus for trusted measurement
JP2019215847A (ja) バッファオーバーフローの低減
CN110674500A (zh) 存储介质病毒查杀方法、装置、计算机设备和存储介质
CN108255746A (zh) 内存改写检测方法及装置
US20160092313A1 (en) Application Copy Counting Using Snapshot Backups For Licensing
US9639477B2 (en) Memory corruption prevention system
CN108255644A (zh) 文件系统恢复方法及装置
US10884934B1 (en) Prefetching data units to a cache of a storage system
CN111381905B (zh) 一种程序处理方法、装置及设备
CN112487414B (zh) 一种进程命令行的获取方法、装置、设备以及存储介质
de Assumpção et al. Forensic method for decrypting TPM-protected BitLocker volumes using Intel DCI
US10296432B2 (en) Systems and methods for invasive debug of a processor without processor execution of instructions
CN109213526B (zh) 用于确定处理器操作的方法及装置

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20180706