CN102945288B - 一种物理内存镜像中文本数据文件提取方法 - Google Patents
一种物理内存镜像中文本数据文件提取方法 Download PDFInfo
- Publication number
- CN102945288B CN102945288B CN201210499314.1A CN201210499314A CN102945288B CN 102945288 B CN102945288 B CN 102945288B CN 201210499314 A CN201210499314 A CN 201210499314A CN 102945288 B CN102945288 B CN 102945288B
- Authority
- CN
- China
- Prior art keywords
- address
- data
- text data
- eprocess
- page
- 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
Abstract
本发明公开了一种从物理内存镜像中提取文本数据文件的方法,利用eprocess结构特征值及它们之间的偏移量搜索出notepad.exe进程的eprocess结构,获取进程的页目录基地址;获取文本数据描述信息、内存中的标示信息,通过操作系统地址转换的原理,准确获取notepad.exe进程中的文本数据。本发明可用于数据恢复、数据提取、计算机取证等方面。<!--1-->
Description
技术领域
本发明涉及计算机取证学科中的数据安全、内存取证领域,特别涉及数据恢复、电子数据证据中的文本信息获取方法。
背景技术
内存数据组织复杂、多变,数据分析十分困难。目前针对内存取证所做的研究,大多是针对系统信息的,如DeutscheTelekomAG在2006年提出了如何从内存镜像中提取进程和线程信息的方法;Dolan-Gavitt在2008年提出了如何从内存镜像中提取注册表信息,王连海在2009年提出了基于kpcr定位进程控制块的方法,Okolica和Peterson在2010年提出了如何从内存镜像中提取网络连接信息的方法。
然而目前针对如何从内存镜像文件中提取用户数据的研究还较少。2010年,RichardM.Stevens和EoghanCasey剖析了命令提示符历史数据结构并且开发出了一种能够从WindowsXP内存镜像中重构Windows命令提示符历史记录的工具。2011年,JamesOkolica和GilbertL.Peterson介绍了Windows剪贴板的结构和Windows已开源的与剪切板相关的函数,提出了从剪贴板中获取文本数据的方法。
同命令提示符和剪切板一样,Notepad也保存了大量用户数据,然而,上述方法只能对内存镜像文件中获取部分信息,均不能从内存镜像中准确提取数据,不能恢复被破坏和删除的数据。因而如果可以从内存中获取记事本的内容,将会对存储器中已删除的数据重新恢复,保护数据及对计算机取证工作提供帮助。
发明内容
针对现有技术在从内存镜像文件中获取数据存在的上述问题,本发明提出了一种物理内存镜像中文本数据文件提取方法。
本发明解决上述技术问题的技术方案是:提供一种物理内存镜像中文本数据文件提取方法,包括以下步骤:
S1:初始化。获取当前操作系统的版本,从配置文件中获取对应系统下notepad(记事本)进程存储文本数据的虚拟地址空间的起始虚拟页号s,以及存储文本数据大小的虚拟空间的起始虚拟地址n;
S2:获取进程的页目录基地址。通过eprocess结构中的三个特征值搜索notepad.exe进程的eprocess(内核编程中的数据结构)结构,在eprocess结构内偏移位置+0x18处获取页目录基地址;
S3:获取文本文件在内存中的大小。根据所获取的存储文本数据大小的虚拟地址空间的起始虚拟地址n,通过页目录基地址实现地址转换,从转换获得的物理地址处向后搜索特征值十六进制数“ffffffff”,获取文本数据文件在内存中的字符数,计算出文本数据文件在内存中的大小;
S4:根据文本数据文件大小计算出文本数据在notepad.exe进程中的虚拟页区间;
S5:筛选。通过地址转换读取虚拟页区间内所有页面的数据,通过文本数据起始标志和文本数据大小,准确获取文本数据。
进一步,所述步骤S2进一步包括:
S21:根据eprocess结构设定特征值,分别有3个特征值:在起始位置处,4个字节的值为0x03001b00;在偏移位置+0x1b2处,两个字节的值为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:通过地址转换得到虚拟地址n对应的物理地址;
S32:在n对应的物理地址处,向后搜索十六进制数据“ffffffff”;
S33:当搜索到上述数据后,即刻终止搜索,并返回此数据结束位置的地址;
S34:在返回的地址处,向后读取4个字节的数据(注意小端在前),得到文本数据文件的字符数;
S35:字符数乘以2b得到文本数据文件在内存中的大小m(如文本数据文件在内存中采用Unicode编码格式,两个字节表示一个字符)。
进一步,所述步骤S4进一步包括:
S41:通过文本文件的大小,根据公式:
虚拟页区间起始页号=s-1+[m/4KB],和虚拟页区间结束页号=s-1+[m/4KB]*2计算得到虚拟页区间。其中,[X]表示取大于等于X的最小整数,即[m/4KB]表示取大于等于m/4KB的最小整数。
进一步,所述步骤S5进一步包括:
S51:通过地址转换读取虚拟页区间内所有虚拟页面所对应的物理内存镜像中的数据。
S52:在所获取的数据中搜索十六进制数据“0x010004002e0074400078007400”,得到这个数据的起始位置。
S53:从这个数据的起始位置处向后偏移24个字节便是text内容的起始位置。
S54:生成一个txt文件,首先在此文件的起始处写入数据“0xfffe”作为Unicode编码的txt文件的标示(以ANSI编码、Unicode编码、Unicodebigendian和UTF-8编码保存的txt文件,打开后,在notepad.exe进程空间中的文本数据都是采用Unicode编码)。
S55:从text内容的起始位置处,根据文本文件在内存中的大小读取内存镜像中的数据,并写入所生成的txt文件内。
本发明的优点在于:能够将物理内存镜像中散乱无序的text文件的数据,按照逻辑地址重组,准确的得到text文件。
附图说明
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步的详细描述。
图1为本发明提取text流程图。
具体实施方式
以下将结合附图,对本发明的优选实施例进行详细的描述;应当理解,优选实施例仅为了说明本发明,而不是为了限制本发明的保护范围。如图1所示为本发明提取text流程示意图。
本发明提供一种物理内存镜像中文本数据文件提取方法,包括以下步骤:
S1:初始化,从配置文件中获取对应操作系统下notepad进程存储文本数据的虚拟地址空间的起始虚拟页号s,以及存储文本数据大小的虚拟空间的起始虚拟地址n,例如,在未开启物理地址扩展模式的WindowsXPVOL版本操作系统下所得结果为:s=0xaf,n=0xaa920。以下以该系统为例作进一步说明。
S2:获取进程的页目录基地址,通过三个特征值搜索notepad.exe进程的eprocess结构,在eprocess结构偏移+0x18处获取页目录基地址。
S21:设定特征值,根据运行的eprocess结构设定特征,分别有三个特征为:在偏移位置+0x078处,是8个字节的0;在偏移位置+0x1b2处,有两个字节的值为0x7ffd;在偏移位置+0x24c处,有4个字节的值为0x00000103;
S22:搜索eprocess结构,根据三个特征值以及相互之间的偏移位置,在内存镜像中搜索出所有正在运行的进程的eprocess结构;
S23:设定notepad.exe进程的eprocess结构的特征值,在eprocess结构偏移位置+0x174处的值为notepad.exe进程的特征值;
S24:根据特征值和偏移位置地址,在所得到的eprocess结构中搜索出notepad.exe进程的eprocess结构;
S25:在eprocess结构偏移位置+0x18处读取四个字节的数据,得到页目录基地址。
S3:获取文本文件在内存中的大小。根据所获取的存储文本数据大小的起始虚拟地址,通过页目录基地址实现地址转换,从这个地址对应的物理地址处向后搜索特征值“ffffffff”,获取文本文件在内存中的字符数,计算出文本文件在内存中的大小。
S31:根据页目录基地址,找到内存镜像中对应的物理页;
S32:根据虚拟地址0xaa920的第22位到第31位(最高的10bit)的值作为索引,读取4个字节的数据,得到页目录项;
S33:按照页目录项的值找到内存镜像中对应的位置,根据0xaa920的第12位到第21位的值作为索引,找到该页表中相应的页表项(也就是虚拟页的物理地址);
S34:把0xaa920的第0位到第11位做为页内偏移量,得到n所对应的物理地址。
S35:在0xaa920对应的物理地址处,向后搜索十六进制数据“ffffffff”;
S36:搜索到后,即刻终止搜索,并返回此数据结束位置的地址;
S37:在返回的地址处,向后读取4个字节的数据(小端在前),得到文本文件的字符数;
S38:字符数乘以2b得到文本文件在内存中的大小m(文本文件在内存中如采用Unicode编码格式,两个字节表示一个字符)。
S4:根据文件大小计算出文本数据在notepad.exe进程中的虚拟页区间。
通过文本文件的大小,根据公式:
虚拟页区间起始页号=0xae+[m/4KB],和
虚拟页区间结束页号=0xaf+[m/4KB]*2计算得到虚拟页区间。
S5:筛选,通过地址转换读取虚拟页区间内所有页面的数据,通过文本数据起始标志和文件大小,准确获取文本数据;
S51:通过地址转换读取虚拟页区间内所有虚拟页面所对应的物理内存镜像中的数据;
S52:在所获取的数据中搜索十六进制数据“0x010004002e0074400078007400”,得到这个数据的起始位置;
S53:从这个数据的起始位置处向后偏移24个字节,得到text内容的起始位置;
S54:生成一个txt文件,首先在此文件的起始处写入数据“0xfffe”做为Unicode编码的txt文件的标示(以ANSI编码、Unicode编码、Unicodebigendian和UTF-8编码保存的txt文件,打开它后,在notepad.exe进程空间中的文本数据都是采用Unicode编码)。
S55:从text内容的起始位置处,根据文本文件在内存中的大小读取内存镜像中的数据,并写入所生成的txt文件内。
以上所述仅为本发明的优选实施例,并不用于限制本发明,显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (4)
1.一种物理内存镜像中文本数据提取方法,其特征在于:包括以下步骤:从配置文件中获取notepad进程存储文本数据的虚拟地址空间的起始虚拟页号s,以及存储文本数据大小的虚拟空间的起始虚拟地址n;获取进程的页目录基地址,通过eprocess结构特征值搜索notepad.exe进程的eprocess结构,根据eprocess结构在指定偏移位置处获取页目录基地址;根据存储文本数据大小的虚拟地址空间的起始虚拟地址n,通过页目录基地址实现地址转换,从对应的物理地址处向后搜索特征值“ffffffff”,获取文本数据在内存中的字符数,计算出文本数据的大小;根据文本数据大小计算文本数据在notepad.exe进程中的虚拟页区间;通过地址转换读取虚拟页区间内所有页面的数据,通过文本数据起始标志和文件大小,获取文本数据;
所述eprocess结构特征值包括:在eprocess结构偏移位置+0x078处,有8个字节的0;在eprocess结构偏移位置+0x1b2处,有2个字节的值为0x7ffd;在eprocess结构偏移位置+0x24c处,有4个字节的值为0x00000103;
所述获取页目录基地址具体为:根据eprocess结构特征值以及偏移位置,在内存镜像中搜索出所有正在运行的进程的eprocess结构;在eprocess结构中偏移位置+0x174处搜索出notepad.exe进程的eprocess结构;在notepad.exe进程的eprocess结构偏移位置+0x18处读取4个字节的数据,得到页目录基地址。
2.根据权利要求1所述的方法,其特征在于:获取文本数据文件在内存中的大小具体为:通过地址转换得到虚拟地址n对应的物理地址;从该物理地址处向后搜索十六进制数据“ffffffff”,并返回此十六进制数据结束位置的地址;在此结束位置的地址处,向后读取4个字节的数据,得到文本文件的字符数;字符数乘以2B得到文本数据文件在内存中的大小m。
3.根据权利要求1所述的方法,其特征在于:计算文本文件的大小具体包括:根据公式:虚拟页区间起始页号=s-1+[m/4KB]和虚拟页区间结束页号=s-1+[m/4KB]*2,计算虚拟页区间,其中,[m/4KB]表示取大于等于m/4KB的最小整数。
4.根据权利要求1所述的方法,其特征在于:获取文本数据具体包括:在虚拟页区间内所有虚拟页面所对应的物理内存镜像中的数据中搜索十六进制数据“0x010004002e0074400078007400”,得到这个数据的起始位置;从起始位置处向后偏移24个字节得到text内容的起始位置;生成一个txt文件,从起始位置处,根据文本文件在内存中的大小读取内存镜像中的数据,并写入所生成的txt文件内。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210499314.1A CN102945288B (zh) | 2012-11-29 | 2012-11-29 | 一种物理内存镜像中文本数据文件提取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210499314.1A CN102945288B (zh) | 2012-11-29 | 2012-11-29 | 一种物理内存镜像中文本数据文件提取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102945288A CN102945288A (zh) | 2013-02-27 |
CN102945288B true CN102945288B (zh) | 2016-01-20 |
Family
ID=47728232
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210499314.1A Active CN102945288B (zh) | 2012-11-29 | 2012-11-29 | 一种物理内存镜像中文本数据文件提取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102945288B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104102881B (zh) * | 2014-07-07 | 2017-01-04 | 杭州电子科技大学 | 一种基于内核对象链接关系的内存取证方法 |
CN104392171B (zh) * | 2014-11-27 | 2017-04-05 | 南京大学 | 一种基于数据关联的自动内存证据分析方法 |
CN104932929B (zh) * | 2015-05-26 | 2018-06-08 | 百度在线网络技术(北京)有限公司 | 一种文件处理方法及装置 |
CN105160001B (zh) * | 2015-09-09 | 2017-03-08 | 山东省计算中心(国家超级计算济南中心) | 一种Linux系统物理内存镜像文件分析方法 |
CN107247579B (zh) * | 2016-08-19 | 2020-09-11 | 北京金山安全管理系统技术有限公司 | 一种elf文件映像基地址的计算方法及装置 |
CN115827323B (zh) * | 2022-12-01 | 2024-02-02 | 摩尔线程智能科技(北京)有限责任公司 | 恢复文件的方法、装置和计算机可读介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101876925A (zh) * | 2009-11-27 | 2010-11-03 | 成都市华为赛门铁克科技有限公司 | 内存镜像处理方法、装置和系统 |
CN102279877A (zh) * | 2011-07-26 | 2011-12-14 | 山东省计算中心 | 一种Mac OS系统的物理内存镜像文件分析方法 |
-
2012
- 2012-11-29 CN CN201210499314.1A patent/CN102945288B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101876925A (zh) * | 2009-11-27 | 2010-11-03 | 成都市华为赛门铁克科技有限公司 | 内存镜像处理方法、装置和系统 |
CN102279877A (zh) * | 2011-07-26 | 2011-12-14 | 山东省计算中心 | 一种Mac OS系统的物理内存镜像文件分析方法 |
Non-Patent Citations (1)
Title |
---|
Extracting Text from Windows XP Memory Image;Long Chen etc.;《ICDFI2012》;20120922;第2页,第3页第2-7段,图2 * |
Also Published As
Publication number | Publication date |
---|---|
CN102945288A (zh) | 2013-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102945288B (zh) | 一种物理内存镜像中文本数据文件提取方法 | |
CN101271463B (zh) | 版式文件的结构处理方法和系统 | |
CN105069056B (zh) | 基于字符串匹配的身份证住址信息解析方法及系统 | |
CN108205577B (zh) | 一种数组构建、数组查询的方法、装置及电子设备 | |
CN101609399B (zh) | 基于建模的智能化网站开发系统及方法 | |
CN101976241B (zh) | 识别码生成方法和系统 | |
CN105069048A (zh) | 一种小文件存储方法、查询方法和装置 | |
CN103699585A (zh) | 文件的元数据存储以及文件恢复的方法、装置和系统 | |
CN101727502A (zh) | 一种数据查询方法及装置、系统 | |
CN103955549A (zh) | 基于SVG的WebGIS系统及其数据录入和查询方法 | |
CN102541948A (zh) | 用于提取文档结构的方法和装置 | |
CN102279877A (zh) | 一种Mac OS系统的物理内存镜像文件分析方法 | |
CN101963954A (zh) | 一种文字显示的方法及装置 | |
CN103823811A (zh) | 用于处理日志的方法及其系统 | |
CN101008940B (zh) | 自动处理字体缺失的方法与装置 | |
CN104199867A (zh) | 一种解决文件名乱码问题的zip文件解压缩方法 | |
CN101369953B (zh) | 一种字库的网络分发方法及系统 | |
CN102339216A (zh) | 基于VxWorks操作系统的汉字显示方法 | |
Kai et al. | Analysis and implementation of NTFS file system based on computer forensics | |
CN102156691A (zh) | 记录手工填写纸质表格信息的方法及装置 | |
CN104794025A (zh) | 快速校验存储设备的方法 | |
CN107436938A (zh) | 一种关系数据库前映像的附加日志解析方法 | |
CN103714179A (zh) | 一种系统日志的多语言支持方法和系统 | |
CN101739936B (zh) | 一种汉字显示方法 | |
CN104021026A (zh) | 一种基于Android系统的语言添加方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |