求带比较的winhex脚本编写
要求查找文件头,并指定跳到特定扇区读取特定数节进行已知比较 符合则选块生成文件,不符合则跳过继续执行查找下一个文件头比如,已知文件头112233445566 ,已知第二扇区开始为778899
目的是过滤垃圾文件,(指过滤掉文件头为112233445566 但第二扇区非778899的文件)
于是我想到利用比较代码,但是不知道怎么写?请大神指教
下面是我的写法,但无法实现比较,不知道哪里错了,求解
assign m4 778899
assign m1 0
{
find 0x112233445566 down
iffound
assign m2 currentpos
move 512
read m5 3
ifequal m4 m5
move 576000
assign m3 currentpos
block m2 m3
endif
inc m1
copyintonewfile "H:\recovery\video.+m1"
}
0x112233445566这个如果在winhex里面看到是这样,在脚本里面就要高低位反转... if语句在脚本里面好像是不能嵌套运行的... 要怎么解决不能嵌套,大神可以帮忙修改下代码吗?谢谢 本帖最后由 scq330 于 2017-9-20 10:27 编辑
一般错就错在16进制在脚本里面要写成高低位反转的,其它我看脚本问题不大, 恢复者aa 发表于 2017-9-20 10:23
要怎么解决不能嵌套,大神可以帮忙修改下代码吗?谢谢
现在脚本是运行出错还是不能查找到相应的东西?如果是出错,先修改代码让它能查找到相应的东西,后面的再一步一步的调试... 本帖最后由 scq330 于 2017-9-20 10:37 编辑
assign m4 778899
assign m1 0
{
find 0x112233445566 down //这里要注意查找的16进制数据和在winhex里面看到的不一样,要高低位反转
iffound
assign m2 currentpos
move 512
read m5 3
endif //在这里读取到m5的数值就要中断第一个if判断了
ifequal m4 m5 //比较m4 m5,如果值为真,进行下面的操作
move 576000
assign m3 currentpos
block m2 m3
inc m1
copyintonewfile "H:\recovery\video.+m1"
endif //这里结束比较,结果无论真假都回去上面接着查下去,由下面的循环数据决定
}
//这个循环数据不好确定 现在脚本可以实现截取,就是无法判断第二扇区,判断语句没有生效 恢复者aa 发表于 2017-9-20 10:33
现在脚本可以实现截取,就是无法判断第二扇区,判断语句没有生效
我大概改了一下,你看看 scq330 发表于 2017-9-20 10:35
我大概改了一下,你看看
好的,感谢大神,我按你的方法试试
页:
[1]
2