• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    硬盘基地手机版
  • 关注官方公众号
    微信扫一扫关注
    硬盘基地公众号
  • WinHEX数据恢复工具常用关键字与脚本编写

            Winhex的脚本虽然强大也有一定的局限性、但是针对数据恢复而言非常实用、如果你去学习强大的编程语言如C++delphi等那可能需要几个月甚至几年才可以编写软件、而winhex 的脚本可以在短短几分钟内完成。所以相对与编程而言 winhex 的脚本更加实用、虽然有一定的局限性.

    第一章 winnhex 常用关键字

    关键字                                         用法                                                                                    解释

    open                                  open :? open d:                                                           用于打开磁盘或逻辑分区

    goto                                   goto (0x000或标签、已声明的变量)                            跳转的位置XXX或标签处

    move                                 move 10 and move -10                                               向前或向后移动字节

    read                                   read x1 2                                                                     读取2个字节到变量x1、变量不存在会自动创建

    write                                   write xx                                                                        写入xx

    save                                  save                                                                             保存

    exit                                    exit                                                                               中断脚本关闭winhex

    assign                               assign   xx                                                                    声明变量xx注:xx不能为脚本关键字

    blokc                                 block1 block2 and block x2  x3                                    选块或选块变量的地址

    copy                                  copy                                                                             复制

    copyintonewfile                copyintonowfile +保存路径和属性                                复制到新的文件并指定路径属性存放

    find                                   find +条件+ [关键字down up word blockonly]           可按要求查找指定的条件

    iffound                              iffound                                                                          如果发现则执行下面的命令

    else                                  else                                                                               否则之下后面的语句

    endif                                 endif                                                                              iffound组合语句有iffound必须有endif

    ifequal                              ifequal  xx  xx                                                  比较两个数值、变量、16进制如果相同则只之下下面的语句反之不执行

    ifgreater                           ifgreater  xx  xx                                                             当一个参数大于第二个参数执行下面语句反之不执行

    label                                 label xx                                                                        建立一个xx标签

    jumpto                              jumpto  xx                                                                    跳转到xx标签处继续执行脚本

    forallobjdo                        forallobjdo                                                                    在打开所有的文件或磁盘中运行脚本

    getuserinput                     getuserinput xx "11111"                                              用户可输入ASCIIHEX到变量xx

    inc                                    inc xx                                                                           变量xx每运行一次变量xx+1

    messagebox                    messagebox "xx"                                                         显示“xx”对话框

    currentpos                       currentpos                                                                    表示当前文件或磁盘偏移地址

    getsize                             getsize                                                                         表示大小

    unlimited                          unlimited                                                                       无限

    以上只是一部分的脚本关键字、更多查阅相关资料  注:winhex脚本中不区分大小写

     

     

     第二章  winhex脚本编写

     

    简单的脚本恢复NTFS分区DBR扇区

    open :?                                                                  //打开故障分区(自己选择)

    assign w1 getsize                                                 //声明w1的值为最大 (也就当前打开分区的总字节)

    goto (w1-512)                                                      //跳转到总字节数-512字节的位置(NTFS 的备份DBR位置最后一个扇区)

                                                                                //getsize为最大所以我们要-512字节才是DBR备份的开始位置

    read w2 512                                                         //读取512个字节到变量w2 NTFS备份DBR读入到变量w2

    goto 0x000                                                          //跳转到开始位置

    write w2                                                              //写入变量w2(把刚才NTFS备份DBR的信息写入到0号扇区)

    save                                                                    //保存

     

    大家可以破坏一个NTFS分区的DBR 然后复制以上内容进去运行脚本看看是否有效

    注意:不要在存有重要数据的分区内实验.  

     

     

    下面的脚本是某次监控录像恢复的简单脚本实例讲解:

    此脚本编写的非常简单但是文件恢复的效果非常好

    assign m1 1                                                       //声明变量m1的值为1

    goto 0xDB178F83                                             //跳转到DB178F83的偏移地址

     

    {

    find 0x7856341221436587  down                   //向下查找十六进制字符 7856341221436587

    iffound                                                             //如果发现十六进制字符 7856341221436587

    assign m2 currentpos                                     //把当前光标地址记录到变量m2当中

    move 1310719                                                //向前跳转 1310719字节

    assign m3 currentpos                                     //把当前的光标地址记录到变量m3

    block m2 m3                                                   //选块 m2 m3 的区域

    endif                                                               //结束if语句

    inc m1                                                            //脚本每运行一次m1的值+1

    copyintonewfile "D:\11\a+m1+.dat"               //复制选块到新的文件-并指定路径和文件属性

    }[unlimited]                                                    //脚本的运行次数(无限)

    以上脚本编写的很简单但比较使用、在以上脚本中你可以更改几个字符也可以提取其他格式的文件'

    当脚本在提取文件时经常会提取出大量的垃圾文件也就是非需要提取的文件、此时我们可以根据文件

    特征曾加一个判断条件例如:

    文件的某一个位置是特定字符、可以用 ifequal 来进行对比是否符合条件、 如果不符合那就跳过继续执行脚本

    脚本举例:

    假设文件头为11111111   在文件的第2个扇区的开始位置固定为112233 此时我们就可以加一个条件去更准确的判断

    assign n1  112233                                      //声明变量n1的值为112233

    find 0x11111111 down                               //向下查找11111111文件头 (假设)

    iffound                                                        //如果发下11111111

    assign n3 currentpos                                 //把当前光标地址记录到变量n3

    move 512                                                   //向前跳转512字节(注:假设2号扇区的前3个字节固定为112233

    read n4 3                                                   //读取3个字节记录到变量n4

    ifequal n1 n4                                              //对比一下n1 n4是否相同、如果是在执行下面的语句否则不执行

     

    winhex的脚本远远不止这些大家可以仔细的去研究和实验、可以编写去更好的脚本

    记得在恢复一次婚礼录像是MOV视频被删除、但未写入数据,软件恢复后97%以上无法播放

    在那次恢复过程中脚本用了 3 copyintonewfile 一次提取3个文件 然后手工再把重组3个文件合成一个mov视频、数据才得以恢复

    之前已为copyintonewfile脚本只可以使用一次、但是经常尝试居然可以使用多次、所以好的脚本是调试出来的、当写好一个脚本后

    可以进行几次实验只要满意在运行恢复数据。

     文档下载:WinHEX数据恢复工具常用关键字与脚本编写.rar

    3

    开心

    鄙视
    1

    鼓掌

    愤怒

    可怜

    刚表态过的朋友 (4 人)

    该文章已有1人参与评论

    请发表评论

    全部评论

    查看全部评论>>

    粉丝3 阅读4880 回复1
    上一篇:
    WINHEX数据恢复工具的结构模板学习发布时间:2012-06-21
    下一篇:
    WinHEX教程:数据恢复的文件正确与否的分析发布时间:2012-06-07
    热门推荐
    专题导读
    热门话题
    阅读排行榜

    扫描微信二维码

    查看手机版网站

    随时了解更新最新资讯

    .

    在线客服(服务时间 9:00~18:00)

    在线QQ客服
    .
    Email:9443120@qq.com
    移动电话:13011628855

    Powered by Intohard X1.0© 2001-2013 Inhdd Inc.( 鲁ICP备09029790号 )