网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 用VBS读写二进制文件的另一种方法分享
内容
    虽然我没有把那个程序解密出来(如果哪位真正的高手会,麻烦指点一下),但是从中领悟出了用VBS读写二进制文件的另一种方法,即Microsoft.XMLDOM+ADODB.Stream。这个方法的效率比原来那个高得多,而且似乎没有文件大小限制
    之前写的那篇给出的方法虽然不错,但是当文件过大时(其实很小,也就几M),对应的数组也会很大,然后会出现运行时错误,提示内存耗尽,为此我郁闷了好久。
    最近在博客的流量记录中发现百度关键字“一些很恶作剧的vbs程序”(看来现在的年轻人很喜欢玩这口),于是打开久违的百度搜索了一下,发现出现在第三。出现在第二的是百度HI,上面也是一个恶作剧程序,而且还是加密的。我尝试着解密,却发现这个加密似乎比前几天解密的那个病毒更变态,未果。
    虽然我没有把那个程序解密出来(如果哪位真正的高手会,麻烦指点一下),但是从中领悟出了用VBS读写二进制文件的另一种方法,即Microsoft.XMLDOM+ADODB.Stream。这个方法的效率比原来那个高得多,而且似乎没有文件大小限制。
    代码如下:
    Function ReadBinary(FileName)
    Const adTypeBinary = 1
    Dim stream, xmldom, node
    Set xmldom = CreateObject("Microsoft.XMLDOM")
    Set node = xmldom.CreateElement("binary")
    node.DataType = "bin.hex"
    Set stream = CreateObject("ADODB.Stream")
    stream.Type = adTypeBinary
    stream.Open
    stream.LoadFromFile FileName
    node.NodeTypedValue = stream.Read
    stream.Close
    Set stream = Nothing
    ReadBinary = node.Text
    Set node = Nothing
    Set xmldom = Nothing
    End Function
    函数的参数是要读取的文件路径,返回值是包含二进制文件的十六进制值的字符串。
    代码如下:
    Sub WriteBinary(FileName, Buf)
    Const adTypeBinary = 1
    Const adSaveCreateOverWrite = 2
    Dim stream, xmldom, node
    Set xmldom = CreateObject("Microsoft.XMLDOM")
    Set node = xmldom.CreateElement("binary")
    node.DataType = "bin.hex"
    node.Text = Buf
    Set stream = CreateObject("ADODB.Stream")
    stream.Type = adTypeBinary
    stream.Open
    stream.write node.NodeTypedValue
    stream.saveToFile FileName, adSaveCreateOverWrite
    stream.Close
    Set stream = Nothing
    Set node = Nothing
    Set xmldom = Nothing
    End Sub
    第一个参数是要读入的文件路径,第二个参数是包含二进制文件的十六进制值的字符串。至于如何获得二进制文件的十六进制值,那方法就很多了,最简单的方法当然就是用fso对象将ReadBinary函数的返回值写到文本文件中去,然后Ctrl+C,Ctrl+V。其实用十六进制工具也很简单。
    其他的就不多说了,看不懂的多看看MSDN参考文档。写了一个示例程序,里面包含了天空之城音乐的所有数据,双击后在同一文件夹生成天空之城的MP3文件并播放。
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/13 8:17:07