注册表删除数据恢复方法与流程

文档序号:12120313阅读:1613来源:国知局

本发明涉及数据安全技术,具体涉及系统注册表数据恢复技术。



背景技术:

注册表相当于Windows系统中所有32位硬件/驱动和32位应用程序的数据文件,是一个系统信息的数据库。Windows的注册表文件在系统设置和缺省用户配置数据的情况下,是存放在\系统文件夹\SYSTEM32\CONFIG目录下的多个文件。文件内容如下:

SYSTEM:存储计算机硬件和系统的信息;

NTUSER.DAT:存储用户参数选择的信息(此文件放置于用户个人目录,和其他注册表文件是分开的);

SAM:用户及密码的数据库;

SECURITY:安全性设置信息;

SOFTWARE:安装的软件信息;

DEFAULT:缺省启动用户的信息;

USERDIFF:管理员对用户强行进行的设置。

注册表由多个HIVE文件组成。一个HIVE文件由多个巢箱(BIN)组成,HIVE文件的首部有一个文件头(基本块、base block),用于描述这个HIVE文件的一些全局信息。一个BIN由多个巢室(CELL)组成,CELL可以分为具体的5种,用于存储不同的注册表数据。

目前针对注册表数据恢复方法,主要是针对Hive文件被删除的情况下进行数据恢复,当Hive文件收到破坏时,恢复出该文件的部分数据。

再者,现有的恢复技术是当注册表文件被删除时,其实是采用针对文件特征的删除恢复技术,找出没有被清空的部分文件数据,对文件数据进行还原。但是现有的注册表删除文件恢复技术无法针对注册表中删除的键值数据进行恢复。



技术实现要素:

针对现有注册表删除文件恢复技术无法针对注册表中删除的键值数据进行恢复的问题,本发明的目的在于提供一种针对注册表中被删除的键值数据进行数据恢复的方案。

为了达到上述目的,本发明采用如下的技术方案:

提供一种注册表删除数据恢复方法,该恢复方法扫描注册表的HIVE文件,识别注册表中所有的被删除键值,再通过子键找到其所属的父键,然后连接成数据链表。

优选的,所述恢复方法中采用底层读取文件的方式,自行解析文件系统,查找注册表文件,并以字节流的方式读入注册表文件数据。

优选的,所述的自行解析文件系统通过绕过操作系统读写文件的方式,从底层按照以扇区为单位读取磁盘,然后根据分区表,文件系统类型,自行将二进制数据解析成文件系统。

优选的,所述恢复方法中根据HIVE格式标准解析文件。

优选的,开始扫描整个HIVE文件,每次读取一个巢室,根据巢室头确定该巢室大小,并且判断该巢室是否已被删除;

解析被删除的巢室,构造一个巢室对象,依次获取注册表键值的元数据,将该键值加入到已删除列表中;

最后直到整个HIVE文件扫描完毕,找出所有的删除键值。

优选的,所述恢复方法中通过识别的被删除键值的父键索引找到子建的父键,最后逆序链接起来,形成一个树形的注册表。

本发明提供的注册表删除数据恢复方法,其针对在注册表文件没有被删除,而是其中保存的键值数据被删除的情况,对注册表中的删除数据进行恢复;并不是针对文件整个被删除的情况下进行数据恢复,使用场景不一样。

通过本恢复方法可以恢复出注册表HIVE文件中删除的键值数据,有效解决现有恢复技术只能够针对Hive文件被删除的情况下进行数据恢复的问题。

再者,因为注册表文件被删除的情况很少发生,往往都是文件中的键值数据被删除,故本发明提供的恢复方案使用场景更多,实用性广,使用本方案将对取证工作有很大帮助。

具体实施方式

为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实例,进一步阐述本发明。

用户在使用操作系统时,一些使用痕迹,包括U盘插拔记录,这些数据都保存在注册表文件中,当用户在删除软件,或者通过注册表API删除键值时这些数据会被删除。这些数据被删除后,并没有被真正清空,而是做了删除标记,标识这块数据已被删除,当有新数据写入时这块数据区域有可能被覆盖。

在上述情况下,需要恢复删除数据进行取证时,由于本身注册表文件并没有被删除,若采用传统基于文件的删除恢复方法将无法恢复被删除的注册表键值数据,该方法无法应用于这个场景。

本实例通过采用针对注册表中被删除的键值数据进行数据恢复的方案,把用户通过操作系统API删除的注册表数据进行恢复,找到用户以前的使用痕迹,达到取证数据更加完善的目的。

本实例在针对注册表中被删除的键值数据进行数据恢复时,采用扫描的方法,找到注册表中所有的被删除的键值数据,然后采用逆序排列的方法,通过子键找到它所属的父键,然后连接成数据链表即注册表,达到恢复数据的目的。

基于上述原理,本实例针对注册表中被删除的键值数据进行数据恢复的具体过程如下:

(一)查找注册表文件。

本实例中采用底层读取文件的方式,自己解析文件系统,以找到\SYSTEM32\CONFIG目录下的注册表文件(即HIVE文件),以字节流的方式读入文件数据。

在查找注册表文件时,如果通过操作系统文件API访问注册表文件,会出现系统注册表文件无法读取的问题,权限不够。本实例中通过自己解析文件系统,则能够解决该问题。

这里的自己解析文件系统就是绕过操作系统读写文件的方式,从底层按照以扇区为单位读取磁盘,然后根据分区表,文件系统类型,自己把二进制数据解析成文件系统,相当于自己完成文件系统的解析(如NTFS),然后定位到注册表文件进行恢复。如果调用操作系统提供的api读取注册表文件,会出现系统注册表文件无法读取的情况。

(二)解析HIVE文件格式,找到所有被删除的键。

由于一个HIVE文件由多个巢箱(BIN)组成,HIVE文件的首部有一个文件头(基本块、base block),用于描述这个HIVE文件的一些全局信息,一个BIN由多个巢室(CELL)组成。巢箱的结构是通过一些链接建立起来的,这些链接称为巢室索引(cell index)。每个巢室索引是一个巢室在巢箱文件中的偏移。因此,巢室索引就像是一个指针,从一个巢室指向另一个巢室。

因此,假设若想找到子键A,并且A的父键是B,那么必须先找到父键B,然后利用父键B的巢室中的子键列表巢室索引,找到包含父键B的所有子键列表的那个巢室,然后再利用该子键列表巢室中的巢室索引列表,找到父键B的每个子键的巢室,随即找到子键A。

但是假设子建A已经被删除,数据在删除后父键B的子键列表中已经不含有子建A的地址,所以通过父键B已经无法找到子键A。但是子键A目前任然存储在HIVE文件中,而且子键A中保存有父键B的地址链接。

据此,本实例中解析扫描HIVE文件,找到所有被删除的键的过程如下:

首先以流的方式读入注册表文件(HIVE文件),根据HIVE文件格式标准解析。开始扫描整个HIVE文件,每次读取一个巢室,根据巢室头确定该巢室大小,并且判断该巢室是否已被删除;解析被删除的巢室,构造一个巢室对象,依次获取标志位、时间戳、父键索引、值列表、键名称等注册表键值元数据,将该键值加入到已删除列表中。

最后直到整个文件扫描完毕,找出所有的删除键值。

(三)恢复注册表。

再扫描整个HIVE文件,找到所有被删除的键后,通过被删除的键的父键索引找到子建的父键,最后逆序链接起来,形成一个树形的注册表。

因为数据被删除后已经不能从父键找到子键,本实例中采用一种逆序的方法,针对识别处所有被删除的键,通过子键找到它所属的父键,并进行逆序链接形成一个树形的注册表。

通过上述实例可知,本注册表删除数据恢复方法可以恢复出注册表HIVE文件中删除的键值数据,应用范围广,特别对取证工作有很大帮助。

以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

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