一种物理内存镜像中文本数据文件提取方法

文档序号:6382622阅读:784来源:国知局
专利名称:一种物理内存镜像中文本数据文件提取方法
技术领域
本发明涉及计算机取证学科中的数据安全、内存取证领域,特别涉及数据恢复、电子数据证据中的文本信息获取方法。
背景技术
内存数据组织复杂、多变,数据分析十分困难。目前针对内存取证所做的研究,大多是针对系统信息的,如DeutscheTelekom AG在2006年提出了如何从内存镜像中提取进程和线程信息的方法;Dolan-Gavitt在2008年提出了如何从内存镜像中提取注册表信息,王连海在2009年提出了基于kpcr定位进程控制块的方法,Okolica和Peterson在2010年提出了如何从内存镜像中提取网络连接信息的方法。然而目前针对如何从内存镜像文件中提取用户数据的研究还较少。2010年,Richard M. Stevens和Eoghan Casey剖析了命令提示符历史数据结构并且开发出了一种能够从Windows XP内存镜像中重构Windows命令提示符历史记录的工具。2011年,JamesOkolica和Gilbert L. Peterson介绍了 Windows剪贴板的结构和Windows已开源的与剪切板相关的函数,提出了从剪贴板中获取文本数据的方法。同命令提示符和剪切板一样,Notepad也保存了大量用户数据,然而,上述方法只能对内存镜像文件中获取部分信息,均不能从内存镜像中准确提取数据,不能恢复被破坏和删除的数据。因而如果可以从内存中获取记事本的内容,将会对存储器中已删除的数据重新恢复,保护数据及对计算机取证工作提供帮助。

发明内容
针对现有技术在从内存镜像文件中获取数据存在的上述问题,本发明提出了一种物理内存镜像中文本数据文件提取方法。本发明解决上述技术问题的技术方案是提供一种物理内存镜像中文本数据文件提取方法,包括以下步骤SI :初始化。获取当前操作系统的版本,从配置文件中获取对应系统下not印ad(记事本)进程存储文本数据的虚拟地址空间的起始虚拟页号S,以及存储文本数据大小的虚拟空间的起始虚拟地址η ;S2 :获取进程的页目录基地址。通过eprocess结构中的三个特征值搜索notepad.exe进程的eprocess (内核编程中的数据结构)结构,在eprocess结构内偏移位置+0x18处获取页目录基地址;S3 :获取文本文件在内存中的大小。根据所获取的存储文本数据大小的虚拟地址空间的起始虚拟地址n,通过页目录基地址实现地址转换,从转换获得的物理地址处向后搜索特征值十六进制数“ffffffff”,获取文本数据文件在内存中的字符数,计算出文本数据文件在内存中的大小;S4 :根据文本数据文件大小计算出文本数据在not印ad. exe进程中的虚拟页区间;S5:筛选。通过地址转换读取虚拟页区间内所有页面的数据,通过文本数据起始标志和文本数据大小,准确获取文本数据。进一步,所述步骤S2进一步包括S21 :根据eprocess结构设定特征值,分别有3个特征值在起始位置处,4个字节的值为0x03001b00 ;在偏移位置+0xlb2处,两个字节的值为0x7ffd ;在偏移位置+0x24c处,4个字节的值为0x00000103 ;S22 :搜索模块搜索eprocess结构,根据三个特征值以及相互之间的偏移量,在内存镜像中搜索出所有进程的eprocess结构;S23 :设定notepad, exe进程的特征值,具体为在notepad, exe进程的eprocess结构中偏移位置+0x174处的值作为notepad, exe进程的特征值;S24 :根据上述特征值和偏移地址,在搜索出的所有进程的eprocess结构中搜索出 notepad, exe 进程的eprocess结构;S25 :在notepad, exe进程的eprocess结构的偏移位置+0x18处读取四个字节的数据,得到页目录基地址。进一步,所述步骤S3进一步包括如下步骤S31 :通过地址转换得到虚拟地址η对应的物理地址;S32 :在η对应的物理地址处,向后搜索十六进制数据“ffffffff” ;S33 :当搜索到上述数据后,即刻终止搜索,并返回此数据结束位置的地址;S34 :在返回的地址处,向后读取4个字节的数据(注意小端在前),得到文本数据文件的字符数;S35 :字符数乘以2b得到文本数据文件在内存中的大小m(如文本数据文件在内存中采用Unicode编码格式,两个字节表示一个字符)。进一步,所述步骤S4进一步包括S41 :通过文本文件的大小,根据公式虚拟页区间起始页号= s-l + [m/4KB],和虚拟页区间结束页号=s -1+[m/4KB]*2计算得到虚拟页区间。其中,[X]表示取大于等于X的最小整数,即[m/4KB]表示取大于等于m/4KB的最小整数。进一步,所述步骤S5进一步包括S51 :通过地址转换读取虚拟页区间内所有虚拟页面所对应的物理内存镜像中的数据。S52 :在所获取的数据中搜索十六进制数据“0x010004002e0074400078007400”,
得到这个数据的起始位置。S53 :从这个数据的起始位置处向后偏移24个字节便是text内容的起始位置。S54 :生成一个txt文件,首先在此文件的起始处写入数据“Oxfffe”作为Unicode编码的txt文件的标示(以ANSI编码、Unicode编码、Unicode big endian和UTF-8编码保存的txt文件,打开后,在notepad, exe进程空间中的文本数据都是采用Unicode编码)。S55 :从text内容的起始位置处,根据文本文件在内存中的大小读取内存镜像中的数据,并写入所生成的txt文件内。
本发明的优点在于能够将物理内存镜像中散乱无序的text文件的数据,按照逻辑地址重组,准确的得到text文件。


为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步的详细描述。图I为本发明提取text流程图。
具体实施例方式以下将结合附图,对本发明的优选实施例进行详细的描述;应当理解,优选实施例仅为了说明本发明,而不是为了限制本发明的保护范围。如图I所示为本发明提取text流程不意图。本发明提供一种物理内存镜像中文本数据文件提取方法,包括以下步骤SI :初始化,从配置文件中获取对应操作系统下notepad进程存储文本数据的虚拟地址空间的起始虚拟页号S,以及存储文本数据大小的虚拟空间的起始虚拟地址n,例如,在未开启物理地址扩展模式的Windows XP VOL版本操作系统下所得结果为s=0xaf,n=0xaa920o以下以该系统为例作进一步说明。S2 :获取进程的页目录基地址,通过三个特征值搜索notepad, exe进程的eprocess结构,在eprocess结构偏移+0x18处获取页目录基地址。S21 :设定特征值,根据运行的eprocess结构设定特征,分别有三个特征为在偏移位置+0x078处,是8个字节的O ;在偏移位置+0xlb2处,有两个字节的值为0x7ffd ;在偏移位置+0x24c处,有4个字节的值为0x00000103 ;S22 :搜索^^ocess结构,根据三个特征值以及相互之间的偏移位置,在内存镜像中搜索出所有正在运行的进程的eprocess结构;S23 :设定notepad, exe进程的eprocess结构的特征值,在eprocess结构偏移位置+0x174处的值为notepad, exe进程的特征值;S24 :根据特征值和偏移位置地址,在所得到的eprocess结构中搜索出notepad.exe进程的eprocess结构;S25 :在eprocess结构偏移位置+0x18处读取四个字节的数据,得到页目录基地址。S3 :获取文本文件在内存中的大小。根据所获取的存储文本数据大小的起始虚拟地址,通过页目录基地址实现地址转换,从这个地址对应的物理地址处向后搜索特征值“ ffffffff ”,获取文本文件在内存中的字符数,计算出文本文件在内存中的大小。S31 :根据页目录基地址,找到内存镜像中对应的物理页;S32 :根据虚拟地址0xaa920的第22位到第31位(最高的IObit)的值作为索引,读取4个字节的数据,得到页目录项;S33 :按照页目录项的值找到内存镜像中对应的位置,根据0xaa920的第12位到第21位的值作为索引,找到该页表中相应的页表项(也就是虚拟页的物理地址);S34 :把0xaa920的第O位到第11位做为页内偏移量,得到η所对应的物理地址。
S35 :在0xaa920对应的物理地址处,向后搜索十六进制数据“ffffffff” ;S36 :搜索到后,即刻终止搜索,并返回此数据结束位置的地址;S37 :在返回的地址处,向后读取4个字节的数据(小端在前),得到文本文件的字符数;S38 :字符数乘以2b得到文本文件在内存中的大小m (文本文件在内存中如采用Unicode编码格式,两个字节表示一个字符)。S4 :根据文件大小计算出文本数据在notepad, exe进程中的虚拟页区间。通过文本文件的大小,根据公式虚拟页区间起始页号=Oxae + [m/4KB],和虚拟页区间结束页号=Oxaf+ [m/4KB]*2计算得到虚拟页区间。S5 筛选,通过地址转换读取虚拟页区间内所有页面的数据,通过文本数据起始标志和文件大小,准确获取文本数据;S51 :通过地址转换读取虚拟页区间内所有虚拟页面所对应的物理内存镜像中的数据;S52 :在所获取的数据中搜索十六进制数据“0x010004002e0074400078007400”,
得到这个数据的起始位置;S53 :从这个数据的起始位置处向后偏移24个字节,得到text内容的起始位置;S54 :生成一个txt文件,首先在此文件的起始处写入数据“Oxfffe”做为Unicode编码的txt文件的标示(以ANSI编码、Unicode编码、Unicode big endian和UTF-8编码保存的txt文件,打开它后,在notepad, exe进程空间中的文本数据都是采用Unicode编码)。S55 :从text内容的起始位置处,根据文本文件在内存中的大小读取内存镜像中的数据,并写入所生成的txt文件内。以上所述仅为本发明的优选实施例,并不用于限制本发明,显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种物理内存镜像中文本数据提取方法,其特征在于包括以下步骤从配置文件中获取notepad进程存储文本数据的虚拟地址空间的起始虚拟页号S,以及存储文本数据大小的虚拟空间的起始虚拟地址η ;获取进程的页目录基地址,通过eprocess结构特征值搜索notepad, exe进程的eprocess结构,根据eprocess结构在指定偏移位置处获取页目录基地址;根据存储文本数据大小的虚拟地址空间的起始虚拟地址n,通过页目录基地址实现地址转换,从对应的物理地址处向后搜索特征值“ffffffff”,获取文本数据在内存中的字符数,计算出文本数据的大小;根据文本数据大小计算文本数据在notepad, exe进程中的虚拟页区间;通过地址转换读取虚拟页区间内所有页面的数据,通过文本数据起始标志和文件大小,获取文本数据。
2.根据权利要求I所述的方法,其特征在于所述eprocess结构特征值包括在eprocess结构偏移位置+0x078处,有8个字节的O ;在eprocess结构偏移位置+0xlb2处,有2个字节的值为0x7ffd ;在eprocess结构偏移位置+0x24c处,有4个字节的值为0x00000103。
3.根据权利要求I所述的方法,其特征在于所述获取页目录基地址具体为根据eprocess结构特征值以及偏移位置,在内存镜像中搜索出所有正在运行的进程的eprocess结构;在eprocess结构中偏移位置+0x174处搜索出notepad, exe进程的eprocess结构;在notepad, exe进程的eprocess结构偏移位置+0x18处读取4个字节的数据,得到页目录基地址。
4.根据权利要求I所述的方法,其特征在于获取文本数据文件在内存中的大小具体为通过地址转换得到虚拟地址η对应的物理地址;从该物理地址处向后搜索十六进制数据“ffffffff”,并返回此十六进制数据结束位置的地址;在此结束位置的地址处,向后读取4个字节的数据,得到文本文件的字符数;字符数乘以2b得到文本数据文件在内存中的大小m。
5.根据权利要求I所述的方法,其特征在于计算文本文件的大小具体包括根据公式虚拟页区间起始页号= s-l+ [m/4KB]和虚拟页区间结束页号=s -1+ [m/4KB]*2,计算虚拟页区间,其中,[m/4KB]表示取大于等于m/4KB的最小整数。
6.根据权利要求I所述的方法,其特征在于获取文本数据具体包括在虚拟页区间内所有虚拟页面所对应的物理内存镜像中的数据中搜索十六进制数据“0x010004002e0074400078007400”,得到这个数据的起始位置;从起始位置处向后偏移24个字节得到text内容的起始位置;生成一个txt文件,从起始位置处,根据文本文件在内存中的大小读取内存镜像中的数据,并写入所生成的txt文件内。
全文摘要
本发明公开了一种从物理内存镜像中提取文本数据文件的方法,利用eprocess结构特征值及它们之间的偏移量搜索出notepad.exe进程的eprocess结构,获取进程的页目录基地址;获取文本数据描述信息、内存中的标示信息,通过操作系统地址转换的原理,准确获取notepad.exe进程中的文本数据。本发明可用于数据恢复、数据提取、计算机取证等方面。
文档编号G06F17/22GK102945288SQ20121049931
公开日2013年2月27日 申请日期2012年11月29日 优先权日2012年11月29日
发明者陈龙, 康磊, 董振兴 申请人:重庆邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1