注册 登录
LUPA开源社区 返回首页

jiang001的个人空间 http://www.lupaworld.com/?263754 [收藏] [复制] [分享] [RSS]

我的博客

Linux下读取Windows注册表

已有 449 次阅读2011-5-24 14:16 |系统分类:IT技术|

  原以为Linux下读取Windows的注册表是个异想天开、无法实现的想法,但这篇文章的作者就把他给实现了。想知道作者是如何实现的?那就继续往下读吧!

  为了在linux下能够解读注册表文件,需要几个小工具:首先是一个Pascal语言写的dumphive,负责将windows注册表文件转 换为文本格式;另外还需要Win32-Registry-File-1.10,这是一个用perl语言写的,分析、读取注册表的工具,同时Win32- Registry-File-1.10还依赖另外一个perl工具Tie-IxHash-1.22。

  Win32-Registry-File-1.10

  Tie-IxHash-1.22

  在正式开始工作前,先要将工具软件安装好,首先解压缩dumphive包,由于它是由Pascal语言写出的,所以要下载free Pascal的编译器,在Ubuntu下, 用apt-get install fpc即可,然后进入src目录下,直接make就可以获得dumphive可执行程序了。再安装Win32-Registry-File-1.10和 Tie-IxHash-1.22,这两个perl程序的安装方法类似,先解压,在运行perl MakeFile.pl 生成makfile,再运行make,最后make install

  真正的工作就可以开始了

  1. 首先将windows所在分区挂载到/mnt/目录上,(如果挂载不了,需要下载并安装ntfsprogs)

  2. cp /mnt/WINDOWS/system32/config/SYSTEM /tmp/system 将注册表文件拷贝到tmp目录下

  3. dumphive /tmp/system /tmp/system.reg 将注册表文件转换为文本格式

  4. 再编写一个test.pl脚本 ,比如:

  use Win32::Registry::File;

  $reg = new Win32::Registry::File();

  $reg->open('system.reg');

  use Data::Dumper;

  print Dumper($reg->get(['system\ControlSet001\Control']));

  然后perl test.pl就可以看的ControlSet001\Control下的结构了。

  注意这里的get后的参数中的system,跟第2步时生成的文件名有关,如果将windows下的注册表文件拷贝成aaa,再用dumphive去转换,则生成的注册表文本文件都是以aaa开头的。当执行用cat system.reg,后就可以明显的看出来。

  另外Win7跟xp的注册表文件,在linux下解读出来还是有很大差异的,每一个字段前都有一个类似UUID的值。

 已同步至 jiang001的微博

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册
验证问答 换一个 验证码 换一个

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部