CN103092726B - 注册表删除数据的恢复方法和装置 - Google Patents
注册表删除数据的恢复方法和装置 Download PDFInfo
- Publication number
- CN103092726B CN103092726B CN201310017777.4A CN201310017777A CN103092726B CN 103092726 B CN103092726 B CN 103092726B CN 201310017777 A CN201310017777 A CN 201310017777A CN 103092726 B CN103092726 B CN 103092726B
- Authority
- CN
- China
- Prior art keywords
- key
- data
- usage space
- bytes
- cell length
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种注册表删除数据的恢复方法及装置,其中,上述方法包括:依据注册表文件中Cell Length的值获取注册表文件的未使用空间,该未使用空间由删除数据所在的Cell标志;存储获取到的所述未使用空间;从所述注册表文件的未使用空间中恢复出被删除的注册表数据。采用本发明提供的注册表删除数据的恢复方法,在一个注册表项被删除后不往注册表写入数据的情况下,被删除的表项可以100%的被恢复,并且保证目录结构的完整性,最大程度上保证了恢复出数据的完整性以及准确性。采用该方法为由于误操作或者恶意操作而导致的注册表数据的丢失提供了解决方案。
Description
技术领域
本发明涉及信息安全及计算机应用领域,特别地,涉及一种注册表删除数据的恢复方法和装置。
背景技术
注册表是Windows95以后操作系统的核心数据库,表中存放着各种参数,直接控制着Windows的启动、硬件驱动程序的装载以及一些Windows应用程序运行的正常与否。如果该注册表由于某种原因受到了破坏,轻者使Windows的启动过程出现异常,重者可能会导致整个Windows系统的完全瘫痪。
然而,在实际生活中,由于误操作或者恶意操作而导致的注册表数据丢失的情况经常出现。因此,出现上述问题时恢复注册表删除数据,对Windows用户来说就显得非常重要了。
对于注册表删除数据的恢复,目前国内外研究的都比较少,较为完整的技术文档和相关专利也较少。国内外市场上,目前还没有发现相应的注册表删除数据恢复的软件。网上提到的一些恢复方法都是通过备份或者系统还原实现的,这些方法局限性比较大,一些在备份之后的改动会被覆盖。
总之,需要本领域技术人员迫切解决的一个技术问题就是:如何能够完整、准确地恢复出被删除的注册表数据。
发明内容
本发明所要解决的技术问题是提供一种注册表删除数据的方法和装置,能够非常完整、准确地对注册表删除数据进行恢复。
为了解决上述问题,一方面提供了一种注册表删除数据的恢复方法,包括:
依据注册表文件中Cell Length的值获取注册表文件的未使用空间,该未使用空间由删除数据所在的Cell标志;存储获取到的上述未使用空间;从上述未使用空间中恢复出被删除的注册表数据。
优选的,上述依据注册表文件中Cell Length的值获取注册表文件的未使用空间的步骤,具体包括:
获取文件的大小;设置偏移量;判断上述偏移量+4是否不小于上述文件的大小; 若否,从偏移处读取4个字节;判断上述4个字节是否为“hbin”;若是,将上述偏移量增加32个字节,循环执行上述获取注册表的未使用空间的步骤;若否,默认上述4个字节代表Cell Length,进一步判断上述Cell Length的值;若上述Cell Length的值为正,则将上述Cell Length所属的Cell标志为未使用空间,继续执行下一步;若上述Cell Length的值为负,执行下一步;将上述偏移量增加上述Cell Length的绝对值个字节,循环执行上述获取注册表的未使用空间步骤直至遍历整个注册表文件。
优选的,上述从上述未使用空间中恢复出被删除的注册表数据的步骤,具体包括:提取一个未使用空间;判断上述未使用空间的Cell Length的大小是否合法;如果合法,从上述未使用空间的数据中搜索键或键值对应的标志;根据搜索到的键或键值对应的标志,读取一条键或键值记录;判断上述键或键值记录的合法性;根据合法的键或键值记录恢复相应的注册表的键或键值。
优选的,判断上述未使用空间的Cell Length的大小是否合法的标准为:
如果上述未使用空间存储的是键数据,那么,上述Cell Length必须大于0x4C;如果上述未使用空间存储的是键值数据,那么,上述Cell Length必须大于0x14。
优选的,上述未使用空间的数据中键对应的标志为:键的头部签名为0x6E6B、键的第三个字节固定为0x20、第四个固定的保留字节为0x00; 上述未使用空间的数据中键值对应的标志为:键值的头部签名0x766B。
优选的,判断上述键记录合法性的标准为:头部四个字节为0x6E6B2000、偏移0x18~0x1C的四个字节为0x00000000且偏移0x20~0x23的四个字节为0xFFFFFFFF;判断上述键值记录合法性的标准为:头部两个字节为0x766B且偏移0x12~0x13的两个字节为0x0000。
优选的,上述根据合法的键记录恢复相应的注册表的键的步骤,具体为:通过键记录中第0x10偏移起的四个字节记录的父键记录的偏移找到相应父键,并将恢复出的键挂载在相应的父键底下。
优选的,初始偏移量设置为4096。
另一方面,提供了一种注册表删除数据的恢复装置,包括:
未使用空间获取模块,用于依据注册表文件中Cell Length的值获取注册表文件的未使用空间,该未使用空间由删除数据所在的Cell标志;存储模块,用于存储上述未使用空间获取模块获取的上述未使用空间;数据恢复模块,用于从上述存储模块存储的未使用空间中恢复出被删除的注册表数据。
优选的,上述未使用空间获取模块,具体包括:文件大小获取单元,用于获取文件的大小;偏移量设置单元,用于设置偏移量;第一判断单元,用于判断上述偏移量+4是否不小于上述文件的大小;读取单元,用于当上述第一判断单元的判断结果为否时,从偏移处读取4个字节;第二判断单元,用于判断上述读取单元读取的4个字节是否为“hbin”;第一循环命令触发单元,用于当上述第二判断单元的判断结果为是时,调用上述偏移量设置单元,将偏移量增加32个字节,触发重新执行获取注册表的未使用空间的命令;第三判断单元,用于当上述第二判断单元的判断结果为否时,默认上述4个字节代表Cell Length,进一步判断上述Cell Length的值;未使用空间标志单元,用于当上述第三判断单元判断上述Cell Length的值为正时,将上述Cell Length所属的Cell标志为未使用空间;第二循环命令触发单元,用于当上述第三判断单元判断上述Cell Length的值为负时,以及上述未使用空间标志单元将上述Cell Length所属的Cell标志为未使用空间之后,循环调用上述偏移量设置单元,将偏移量增加上述Cell Length的绝对值个字节,触发重新执行获取注册表的未使用空间的命令。
优选的,上述数据恢复模块具体包括:提取单元,用于从上述存储模块中提取一个未使用空间;第一判断单元,用于判断上述未使用空间的Cell Length的大小是否合法;搜索单元,用于若上述第一判断单元的判断结果为是,从上述未使用空间的数据中搜索键或键值对应的标志;记录读取单元,根据上述搜索单元搜索到的键或键值对应的标志,读取一条键或键值记录;第二判断单元,用于判断上述记录读取单元读取的键记录或键值记录的合法性;数据恢复单元,用于根据合法的键或键值记录恢复相应的注册表的键或键值。
优选的,上述第一判断单元判断上述未使用空间的Cell Length的大小是否合法的标准为:如果上述未使用空间存储的是键数据,那么,上述Cell Length必须大于0x4C;如果上述未使用空间存储的是键值数据,那么,上述Cell Length必须大于0x14。
优选的,上述未使用空间的数据中键对应的标志为:键的头部签名为0x6E6B、键的第三个字节固定为0x20、第四个固定的保留字节为0x00;上述未使用空间的数据中键值对应的标志为:键值的头部签名0x766B。
优选的,上述第二判断单元判断上述键记录合法性的标准为:头部四个字节为0x6E6B2000、偏移0x18~0x1C的四个字节为0x00000000且偏移0x20~0x23的四个字节为0xFFFFFFFF;判断上述键值记录合法性的标准为:头部两个字节为0x766B且偏移0x12~0x13的两个字节为0x0000。
优选的,上述数据恢复单元根据合法的键记录恢复相应的注册表的键具体为:通过键记录中第0x10偏移起的四个字节记录的父键记录的偏移找到相应父键,并将恢复出的键挂载在相应的父键底下。
优选的,上述偏移量设置单元的初始偏移量设置为4096。
与现有技术相比,上述技术方案中的一个技术方案具有以下优点:
采用本发明提供的注册表删除数据的恢复方法,依据注册表文件中Cell Length的值获取注册表文件的未使用空间并结合注册表数据结构的特征进行删除数据的恢复。在一个注册表项被删除后不往注册表写入数据的情况下,被删除的表项可以100%的被恢复,并且保证目录结构的完整性,最大程度上保证了恢复出数据的完整性以及准确性。
附图说明
图1是现有技术注册表的整体结构示意图;
图2是现有技术hbin的结构示意图;
图3是本发明注册表删除数据的恢复方法实施例的流程图;
图4是本发明注册表删除数据的恢复方法实施例中步骤1的具体实施方式的示意图;
图5是本发明注册表删除数据的恢复方法实施例步骤3的具体实施方式的示意图;
图6是本发明注册表删除数据的恢复装置实施例的结构框图;
图7是本发明注册表删除数据的恢复装置实施例的未使用空间获取模块的结构框图;
图8是本发明注册表删除数据的恢复装置实施例的数据恢复模块的结构框图;
图9-1为未删除前的注册表解析结果;
图9-2为采用现有技术对删除数据的注册表恢复的结果;
图9-3为采用本发明实施例对删除数据的注册表恢复的结果。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
在详细介绍本发明技术方案之前,首先介绍一下Windows系统的注册表(Registry)文件的结构,参见图1所示的现有技术注册表的整体结构示意图,以及图2所示的现有技术hbin的结构示意图:一个注册表文件由注册表表头(Registry Header)紧跟上一个个的hbin(Hive Bin)组成,每个hbin由头部(Hive Bin Header)紧跟上一个个的Cell组成,每个Cell由长度(Cell Lenth)和数据(Cell Data)组成。
Cell Data里面存储的数据主要包含两种结构:key records(NK) 和 value records(VK)。每一个NK对应注册表中的一个表项(即:键),每个VK对应注册表中的一个值(即:键值)。其中,表一示出了NK的存储结构;表二示出了VK的存储结构。
偏移 | 大小(字节) | 描述 |
0x00 | 2 | 为"nk",NK记录的标志 |
0x02 | 1 | 根键为:0x2C,其他为:0x20 |
0x03 | 1 | 保留(0x00) |
0x04 | 8 | 记录最后修改时间 |
0x0C | 4 | 保留 |
0x10 | 4 | 父节点NK偏移 |
0x14 | 4 | 子节点的NK数目 |
0x18 | 4 | 保留(0x00000000) |
0x1C | 4 | 指向子节点NK偏移列表 |
0x20 | 4 | 保留(0xFFFFFFFF) |
..... | ...... | ...... |
0x48 | 2 | 项名(或者键名)的长度(Key Length) |
...... | ...... | ...... |
0x4C | Key Length | 键名 |
表一:NK的存储结构
偏移 | 大小(字节) | 描述 |
0x00 | 2 | "vk"VK标志 |
0x02 | 2 | 值的名称长度(Name Length) |
0x04 | 2 | 值的数据长度 |
0x06 | 2 | 0x0080或者0x0000 |
...... | ...... | ...... |
0x14 | Name Length | 值的名称 |
表二:VK的存储结构
本发明实施例的核心构思之一在于:当注册表的一个键或者键值被删除时,系统只会将这些记录从子键列表和值列表中把相应的记录删除;同时,如果是一个键被删除,那么,该键的子键列表及其所有子键也会被删除;并且将这些删除数据所在的Cell标志为未使用空间。具体的标志处理为:将这个Cell的Cell Length由负数变成正数。因为当Cell Length为负数的时候表示Cell已经被使用,当Cell Length为正数时表示Cell未被使用。因此,只要获取这些未使用空间并进行解析就可以恢复出相应的被删除数据。
参照图3,示出了本发明注册表删除数据的恢复方法实施例的流程图,包括:
步骤1、依据注册表文件中Cell Length的值获取注册表文件的未使用空间,该未使用空间由删除数据所在的Cell标志;
具体为,如上所述,Cell Length为正数的Cell为未使用的Cell,即代表删除数据所在的Cell,将该Cell标志为未使用空间。依据该特征,遍历整个注册表文件,将所有符合上述特征的Cell都标志为未使用空间。
步骤2、存储获取到的未使用空间;
具体为,将步骤1获取的所有标志成未使用空间的Cell存储在命名为FREE CELL的文件中。
步骤3、从注册表文件的未使用空间中恢复出被删除的注册表数据。
具体为,从上述FREE CELL中逐个提取未使用的Cell,利用Cell的数据结构特征恢复出相应的注册表数据。
参照图4,示出了本发明注册表删除数据的恢复方法实施例步骤1的具体实施方式的示意图,包括:
步骤11、获取文件的大小filesize;
步骤12、设置偏移量offset;
其中,初始偏移量设置为4096,因为注册表文件开头的4096个字节为Registry Header。
步骤13、判断设置的偏移量+4是否不小于所述文件大小;即,判断offset+4≥filesize? 若是,结束工作;若否,执行步骤14;
步骤14、从偏移处读取4个字节;
步骤15、判断步骤14读取的4个字节是否为“hbin”?若是,执行步骤16;若否,执行步骤17;
步骤16、将偏移量增加32个字节,循环执行步骤13至15;
此处,步骤16为重新设置偏移量offset的步骤,因为当读取的4个字节为“hbin”时,说明读取到的是Hive Bin的头部,即,图2中的Hive Bin Header,Hive Bin头部为32个字节,因此,下次搜索要跳过32个字节。
步骤17、默认步骤14读取的4个字节代表Cell Length,则进一步判断所述Cell Length的值;若所述Cell Length的值为正,则执行步骤18、19;若所述Cell Length的值为负,则直接执行步骤19;
步骤18、将上述Cell Length所属的Cell标志为未使用空间;
步骤19、将偏移量增加Cell Length的绝对值个字节,循环执行步骤13至18,直至遍历整个注册表文件。
该步骤19实际为重新设置偏移量offset,循环执行获取注册表未使用空间的步骤。
可见,根据被删除数据注册表的数据结构特点,设置偏移量offset,循环执行上述各步骤,直至遍历整个注册表文件,能够准确、快速地获取注册表文件的未使用空间。
需要说明的是,步骤12、步骤16、步骤19均为设置偏移量的步骤,在实际操作中属于对同一元件进行的不同参数设置,此处为了更清楚描述每次设置偏移量的不同,故分成3个步骤表述,不应理解为对本发明的限制。
参照图5,示出了本发明注册表删除数据的恢复方法实施例步骤3的具体实施方式的示意图,具体包括:
步骤31、提取一个未使用空间;
步骤31实际为:从步骤2所述的FREE CELL文件中提取一个未使用的Cell,该Cell之前未被提取过。
步骤32、判断所述未使用的Cell的Cell Length的大小是否不大于0x4C?即,判断Cell Length<0x4C?若是,执行步骤33;若否,执行步骤340~344;
步骤33、继续判断所述未使用的Cell的Cell Length的大小是否不大于0x14?即,判断Cell Length<0x14?若是,则重新从上述FREE CELL文件中获取一个未使用空间,重新执行上述各步骤;若否,执行步骤350~354;
上述步骤32、33为判断未使用空间的Cell Length的大小是否合法的步骤:如果未使用空间存储的是键数据,那么Cell Length必须大于0x4C;如果未使用空间存储的是键值数据,那么Cell Length必须大于0x14。即:如果未使用的Cell存储的是NK,那么Cell Length 必须大于0x4C;因为一个NK记录的大小必须大于0x4C。如果未使用的Cell存储的是VK,那么Cell Length必须大于0x14;因为一个VK记录的大小必须大于0x14。
步骤340、从上述未使用的Cell中搜索0x6E6B2000;
未使用空间的数据中键对应的标志为:NK的头部签名为0x6E6B、键的第三个字节固定为0x20且第四个固定的保留字节为0x00。
步骤341、读取一个NK记录;
步骤342、判断NK记录是否合法?如果是,执行步骤343; 其中,一条合法的NK记录必须满足以下条件:
a、头部四个字节为0x6E6B2000;
b、偏移0x18~0x1C的四个字节为0x00000000;
c、偏移0x20~0x23的四个字节为0xFFFFFFFF。
步骤343、根据NK记录恢复相应的注册表键;具体为:通过键记录中第0x10偏移起的四个字节记录的父键记录的偏移找到相应父键,并将恢复出的键挂载在相应的父键底下;
步骤344、判断是否已经完成对整个Cell的搜索?如果是,重新从上述FREE CELL文件中获取一个未使用空间,重新执行上述各步骤;如果否,重新执行步骤340~343;
步骤350、从上述未使用的Cell中搜索0x766B;
未使用空间的数据中键值对应的标志为:VK的头部签名为0x766B。
步骤351、读取一个VK记录;
步骤352、判断VK记录是否合法?如果是,执行步骤353;其中,一条合法的VK记录必须满足以下条件:
a、头部两个字节为0x766B;
b、偏移0x12~0x13的两个字节必须为0x0000。
步骤353、根据VK记录恢复相应的注册表键值;
步骤354、判断是否已经完成对整个Cell的搜索?如果是,重新从上述FREE CELL文件中获取一个未使用空间,重新执行上述各步骤;如果否,重新执行步骤350~353。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
对应本发明实施例提供的注册表删除数据的恢复方法,本发明还提供了一种注册表删除数据的恢复装置。下面结合图6~8对本发明注册表删除数据的恢复装置实施例进行具体说明。
参照图6,示出了本发明注册表删除数据的恢复装置实施例的结构框图,包括:
未使用空间获取模块61,用于依据注册表文件中Cell Length的值获取注册表文件的未使用空间,该未使用空间由删除数据所在的Cell标志;
存储模块62,用于存储未使用空间获取模块61获取的未使用空间;
数据恢复模块63,用于从存储模块62存储的未使用空间中恢复出被删除的注册表数据。
其中,图7示出了本发明注册表删除数据的恢复装置实施例的未使用空间获取模块的结构框图,包括:
文件大小获取单元611,用于获取文件大小;
偏移量设置单元612,用于设置偏移量offset;其中,初始偏移量可以设置为4096。
第一判断单元613,用于判断偏移量+4是否不小于所述文件大小;若是,结束任务。若否,调用读取单元614。
读取单元614,用于当第一判断单元613的判断结果为否时,从偏移处读取4个字节;
第二判断单元615,用于判断读取单元614读取的4个字节是否为“hbin”;若是,调用第一循环命令触发单元616;若否,调用第三判断单元617。
第一循环命令触发单元616,用于当第二判断单元615的判断结果为是时,调用偏移量设置单元612,将偏移量增加32个字节,触发重新执行获取注册表的未使用空间的命令;
第三判断单元617,用于当第二判断单元615的判断结果为否时,默认上述4个字节代表Cell Length,进一步判断该Cell Length的值;若,上述Cell Length的值为正,调用未使用空间标志单元618;若上述Cell Length的值为负,则直接调用第二循环命令触发单元619。
未使用空间标志单元618,用于当第三判断单元617判断Cell Length的值为正时,将上述Cell Length所属的Cell标志为未使用空间;
第二循环命令触发单元619,用于当第三判断单元617判断Cell Length的值为负时,以及未使用空间标志单元618将Cell Length所属的Cell标志为未使用空间之后,调用偏移量设置单元612,将偏移量增加所述Cell Length的绝对值个字节,触发重新执行获取注册表的未使用空间的命令。
优选的,图8示出了本发明注册表删除数据的恢复装置实施例的数据恢复模块的结构框图,包括:
提取单元631,用于从存储模块62中提取一个未使用空间;
第一判断单元632,用于判断未使用空间的Cell Length的大小是否合法;
第一判断单元632判断未使用空间的Cell Length的大小是否合法的标准为:
如果未使用空间存储的是键数据即NK,那么,Cell Length必须大于0x4C;如果未使用空间存储的是键值数据即VK,那么,Cell Length必须大于0x14。
搜索单元633,用于当第一判断单元632的判断结果为是时,从未使用空间的数据中搜索键或键值对应的标志;
其中,未使用空间的数据中,键对应的标志为:NK的头部签名为0x6E6B、键的第三个字节固定为0x20且第四个固定的保留字节为0x00;未使用空间的数据中,键值对应的标志为:VK的头部签名0x766B。
记录读取单元634,根据搜索到的键或键值对应的标志,读取一条键或键值记录;
第二判断单元635,用于判断记录读取单元634读取的键记录或键值记录的合法性;
第二判断单元635判断键记录合法性的标准为:头部四个字节为0x6E6B2000、偏移0x18~0x1C的四个字节为0x00000000且偏移0x20~0x23的四个字节为0xFFFFFFFF。第二判断单元635判断键值记录合法性的标准为:头部两个字节为0x766B且偏移0x12~0x13的两个字节为0x0000。
数据恢复单元636,用于根据合法的键或键值记录恢复相应的注册表的键或键值。
数据恢复单元636根据合法的键记录恢复相应的注册表的键具体为:通过键记录中第0x10偏移起的四个字节记录的父键记录的偏移找到相应父键,并将恢复出的键挂载在相应的父键底下。
为了验证本发明方法实施例的正确性,现采用本发明方法实施例与现有的注册表解析方法进行解析结果的对比。其中,图9-1为未删除前的注表解析结果;图9-2为删除键kxpascd后用一般的注册表解析方法解析的结果;图9-3为删除键kxpascd后采用本发明所示的方法解析的结果,其中,带有“X”标志的键为恢复出的键。由图9-1、图9-2、图9-3所示的结果可知,现有的注册表解析方法不能恢复出被删除的注册表数据,而采用本发明提供的注册表删除数据的恢复方法就本例子而言可以100%的恢复出被删除的注册表数据,效果明显。
经实验验证,当一个注册表项被删除后如果不往注册表写入数据,采用本发明提供的注册表删除数据的恢复方法、装置可以将被删除的表项100%的恢复,并且保证目录结构的完整性。因此,采用本发明提供的注册表删除数据的恢复方法及装置,为由于误操作或者恶意操作而导致的注册表数据的丢失提供了解决方案。
需要说明的是,本发明提供的注册表删除数据的恢复方法及装置尤其适用于Windows XP、以及比其新的Windows操作系统。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的一种注册表删除数据的恢复方法以及一种注册表删除数据的恢复装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (14)
1.一种注册表删除数据的恢复方法,其特征在于,包括:
依据注册表文件中Cell Length的值获取注册表文件的未使用空间,该未使用空间由删除数据所在的Cell标志;
存储获取到的所述未使用空间;
从所述未使用空间中恢复出被删除的注册表数据,
其中,所述从所述未使用空间中恢复出被删除的注册表数据的步骤,具体包括:
提取一个未使用空间;
判断所述未使用空间的Cell Length的大小是否合法;
如果合法,从所述未使用空间的数据中搜索键或键值对应的标志;
根据搜索到的键或键值对应的标志,读取一条键或键值记录;
判断所述键或键值记录的合法性;
根据合法的键或键值记录恢复相应的注册表的键或键值。
2.根据权利要求1所述的注册表删除数据的恢复方法,其特征在于,所述依据注册表文件中Cell Length的值获取注册表文件的未使用空间的步骤,具体包括:
获取文件的大小;
设置偏移量;
判断所述偏移量+4是否不小于所述文件的大小;
若否,从偏移处读取4个字节;
判断所述4个字节是否为“hbin”;
若是,将所述偏移量增加32个字节,循环执行上述获取注册表的未使用空间的步骤;
若否,默认所述4个字节代表Cell Length,进一步判断所述Cell Length的值;若所述Cell Length的值为正,则将所述Cell Length所属的Cell标志为未使用空间,继续执行下一步;若所述Cell Length的值为负,执行下一步;
将所述偏移量增加所述Cell Length的绝对值个字节,循环执行上述获取注册表的未使用空间步骤直至遍历整个注册表文件。
3.根据权利要求1所述的注册表删除数据的恢复方法,其特征在于,判断所述未使用空间的Cell Length的大小是否合法的标准为:
如果所述未使用空间存储的是键数据,那么,所述Cell Length必须大于0x4C;
如果所述未使用空间存储的是键值数据,那么,所述Cell Length必须大于0x14。
4.根据权利要求1所述的注册表删除数据的恢复方法,其特征在于,所述未使用空间的数据中键对应的标志为:键的头部签名为0x6E6B、键的第三个字节固定为0x20、第四个固定的保留字节为0x00;
所述未使用空间的数据中键值对应的标志为:键值的头部签名0x766B。
5.根据权利要求1所述的注册表删除数据的恢复方法,其特征在于,判断所述键记录合法性的标准为:头部四个字节为0x6E6B2000、偏移0x18~0x1C的四个字节为0x00000000且偏移0x20~0x23的四个字节为0xFFFFFFFF;
判断所述键值记录合法性的标准为:头部两个字节为0x766B且偏移0x12~0x13的两个字节为0x0000。
6.根据权利要求1所述的注册表删除数据的恢复方法,其特征在于,所述根据合法的键记录恢复相应的注册表的键的步骤,具体为:通过键记录中第0x10偏移起的四个字节记录的父键记录的偏移找到相应父键,并将恢复出的键挂载在相应的父键底下。
7.根据权利要求2所述的注册表删除数据的恢复方法,其特征在于,初始偏移量设置为4096。
8.一种注册表删除数据的恢复装置,其特征在于,包括:
未使用空间获取模块,用于依据注册表文件中Cell Length的值获取注册表文件的未使用空间,该未使用空间由删除数据所在的Cell标志;
存储模块,用于存储所述未使用空间获取模块获取的所述未使用空间;
数据恢复模块,用于从所述存储模块存储的未使用空间中恢复出被删除的注册表数据,
其中,所述数据恢复模块具体包括:
提取单元,用于从所述存储模块中提取一个未使用空间;
第一判断单元,用于判断所述未使用空间的Cell Length的大小是否合法;
搜索单元,用于若所述第一判断单元的判断结果为是,从所述未使用空间的数据中搜索键或键值对应的标志;
记录读取单元,根据所述搜索单元搜索到的键或键值对应的标志,读取一条键或键值记录;
第二判断单元,用于判断所述记录读取单元读取的键记录或键值记录的合法性;
数据恢复单元,用于根据合法的键或键值记录恢复相应的注册表的键或键值。
9.根据权利要求8所述的注册表删除数据的恢复装置,其特征在于,所述未使用空间获取模块,具体包括:
文件大小获取单元,用于获取文件的大小;
偏移量设置单元,用于设置偏移量;
第一判断单元,用于判断所述偏移量+4是否不小于所述文件的大小;
读取单元,用于当所述第一判断单元的判断结果为否时,从偏移处读取4个字节;
第二判断单元,用于判断所述读取单元读取的4个字节是否为“hbin”;
第一循环命令触发单元,用于当所述第二判断单元的判断结果为是时,调用所述偏移量设置单元,将偏移量增加32个字节,触发重新执行获取注册表的未使用空间的命令;
第三判断单元,用于当所述第二判断单元的判断结果为否时,默认所述4个字节代表Cell Length,进一步判断所述Cell Length的值;
未使用空间标志单元,用于当所述第三判断单元判断所述Cell Length的值为正时,将所述Cell Length所属的Cell标志为未使用空间;
第二循环命令触发单元,用于当所述第三判断单元判断所述Cell Length的值为负时,以及所述未使用空间标志单元将所述Cell Length所属的Cell标志为未使用空间之后,循环调用所述偏移量设置单元,将偏移量增加所述Cell Length的绝对值个字节,触发重新执行获取注册表的未使用空间的命令。
10.根据权利要求8所述的注册表删除数据的恢复装置,其特征在于,所述第一判断单元判断所述未使用空间的Cell Length的大小是否合法的标准为:
如果所述未使用空间存储的是键数据,那么,所述Cell Length必须大于0x4C;
如果所述未使用空间存储的是键值数据,那么,所述Cell Length必须大于0x14。
11.根据权利要求8所述的注册表删除数据的恢复装置,其特征在于,所述未使用空间的数据中键对应的标志为:键的头部签名为0x6E6B、键的第三个字节固定为0x20、第四个固定的保留字节为0x00;
所述未使用空间的数据中键值对应的标志为:键值的头部签名0x766B。
12.根据权利要求8所述的注册表删除数据的恢复装置,其特征在于,所述第二判断单元判断所述键记录合法性的标准为:头部四个字节为0x6E6B2000、偏移0x18~0x1C的四个字节为0x00000000且偏移0x20~0x23的四个字节为0xFFFFFFFF;
判断所述键值记录合法性的标准为:头部两个字节为0x766B且偏移0x12~0x13的两个字节为0x0000。
13.根据权利要求8所述的注册表删除数据的恢复装置,其特征在于,所述数据恢复单元根据合法的键记录恢复相应的注册表的键具体为:通过键记录中第0x10偏移起的四个字节记录的父键记录的偏移找到相应父键,并将恢复出的键挂载在相应的父键底下。
14.根据权利要求9所述的注册表删除数据的恢复装置,其特征在于,所述偏移量设置单元的初始偏移量设置为4096。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310017777.4A CN103092726B (zh) | 2013-01-16 | 2013-01-16 | 注册表删除数据的恢复方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310017777.4A CN103092726B (zh) | 2013-01-16 | 2013-01-16 | 注册表删除数据的恢复方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103092726A CN103092726A (zh) | 2013-05-08 |
CN103092726B true CN103092726B (zh) | 2015-06-17 |
Family
ID=48205330
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310017777.4A Active CN103092726B (zh) | 2013-01-16 | 2013-01-16 | 注册表删除数据的恢复方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103092726B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104199888B (zh) * | 2014-08-25 | 2017-08-01 | 厦门市美亚柏科信息股份有限公司 | 弹性文件系统的数据恢复方法和装置 |
CN105224877B (zh) * | 2015-09-30 | 2018-01-26 | 四川效率源信息安全技术股份有限公司 | 一种涉密数据清除方法 |
CN105677914A (zh) * | 2016-02-29 | 2016-06-15 | 厦门市美亚柏科信息股份有限公司 | 一种mdb文件表格的恢复方法及其系统 |
CN105653403B (zh) * | 2016-02-29 | 2018-06-22 | 厦门市美亚柏科信息股份有限公司 | 一种mdb文件数据的恢复方法及其系统 |
CN106201579B (zh) * | 2016-06-28 | 2019-06-21 | 珠海豹趣科技有限公司 | 一种删除注册表启动项的方法、装置及电子设备 |
CN106528332A (zh) * | 2016-10-25 | 2017-03-22 | 公安部第三研究所 | 注册表删除数据恢复方法 |
CN106844581A (zh) * | 2017-01-10 | 2017-06-13 | 山东华软金盾软件股份有限公司 | 一种Linux下注册表的模拟实现方法 |
CN109408547B (zh) * | 2018-11-12 | 2021-11-19 | 郑州云海信息技术有限公司 | 一种sam注册表的读取方法、读取系统及相关装置 |
CN112306891A (zh) * | 2020-11-26 | 2021-02-02 | 北京北信源软件股份有限公司 | 操作系统检测方法及装置、设备及介质 |
KR102591450B1 (ko) * | 2023-05-31 | 2023-10-19 | 한화시스템(주) | 윈도우 운영체제 중요 정보 탈취 방지를 위한 레지스트리 파서 및 암/복호화 모듈 및 그 운용방법 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7058664B1 (en) * | 2002-04-29 | 2006-06-06 | Sprint Communications Company L.P. | Method and system for data recovery |
CN1904845A (zh) * | 2006-08-01 | 2007-01-31 | 珠海金山软件股份有限公司 | 恢复fat32文件系统中已删除文件的方法 |
CN1920816A (zh) * | 2006-07-28 | 2007-02-28 | 珠海金山软件股份有限公司 | Ntfs卷中从指定目录中搜索已删除文件的方法 |
CN101364192A (zh) * | 2007-08-09 | 2009-02-11 | 英华达(上海)电子有限公司 | 数据被误删除后恢复方法和恢复系统、及电子设备 |
CN102750204A (zh) * | 2012-06-07 | 2012-10-24 | 深圳市万兴软件有限公司 | 一种恢复数据的方法、装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110016795A (ko) * | 2009-08-12 | 2011-02-18 | 엘지디스플레이 주식회사 | 액정표시장치 |
-
2013
- 2013-01-16 CN CN201310017777.4A patent/CN103092726B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7058664B1 (en) * | 2002-04-29 | 2006-06-06 | Sprint Communications Company L.P. | Method and system for data recovery |
CN1920816A (zh) * | 2006-07-28 | 2007-02-28 | 珠海金山软件股份有限公司 | Ntfs卷中从指定目录中搜索已删除文件的方法 |
CN1904845A (zh) * | 2006-08-01 | 2007-01-31 | 珠海金山软件股份有限公司 | 恢复fat32文件系统中已删除文件的方法 |
CN101364192A (zh) * | 2007-08-09 | 2009-02-11 | 英华达(上海)电子有限公司 | 数据被误删除后恢复方法和恢复系统、及电子设备 |
CN102750204A (zh) * | 2012-06-07 | 2012-10-24 | 深圳市万兴软件有限公司 | 一种恢复数据的方法、装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103092726A (zh) | 2013-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103092726B (zh) | 注册表删除数据的恢复方法和装置 | |
CN110879813B (zh) | 一种基于二进制日志解析的MySQL数据库增量同步实现方法 | |
CN102289524B (zh) | 一种数据恢复方法及系统 | |
CN102567427B (zh) | 一种对象数据处理方法及装置 | |
KR101456757B1 (ko) | SQLite 데이터베이스에서 삭제된 데이터의 복원 방법 및 장치 | |
CN104199888B (zh) | 弹性文件系统的数据恢复方法和装置 | |
CN101344868B (zh) | 数据备份和获取的方法和装置 | |
CN106445815B (zh) | 一种自动化测试方法及装置 | |
CN103559276A (zh) | 一种清理垃圾文件的方法及其装置 | |
CN103377123B (zh) | 一种网页代码自动化测试方法及装置 | |
CN111125298A (zh) | 重建ntfs文件目录树的方法、设备及存储介质 | |
CN105447168A (zh) | Mp4格式的碎片文件恢复与重组的方法 | |
CN111159114A (zh) | 文件存储方法、装置及服务器 | |
Li et al. | Database management strategy and recovery methods of Android | |
CN108446224B (zh) | 移动端上应用程序的性能分析方法、存储介质 | |
CN105068885A (zh) | 一种jpg碎片文件恢复与重组的方法 | |
CN103631589A (zh) | 应用识别方法与装置 | |
CN114661686A (zh) | 日志文件的报文提取方法、装置、设备、介质和程序产品 | |
KR101588375B1 (ko) | 데이터베이스 관리 방법 및 데이터베이스 관리 시스템 | |
CN104615948A (zh) | 一种自动识别文件完整性与恢复的方法 | |
WO2017067397A1 (zh) | 一种数据恢复方法和装置 | |
CN108108467B (zh) | 数据删除方法及装置 | |
CN103425802A (zh) | 一种磁盘文件的快速检索方法 | |
CN110704468A (zh) | 数据更新方法、装置及控制器 | |
CN105740390A (zh) | 一种逆向提取plist格式数据的方法 |
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 |