用VBS讀寫二進制文件的另一種方法分享
來源:易賢網(wǎng) 閱讀:930 次 日期:2016-07-05 11:05:11
溫馨提示:易賢網(wǎng)小編為您整理了“用VBS讀寫二進制文件的另一種方法分享”,方便廣大網(wǎng)友查閱!

雖然我沒有把那個程序解密出來(如果哪位真正的高手會,麻煩指點一下),但是從中領(lǐng)悟出了用VBS讀寫二進制文件的另一種方法,即Microsoft.XMLDOM+ADODB.Stream。這個方法的效率比原來那個高得多,而且似乎沒有文件大小限制

之前寫的那篇給出的方法雖然不錯,但是當(dāng)文件過大時(其實很小,也就幾M),對應(yīng)的數(shù)組也會很大,然后會出現(xiàn)運行時錯誤,提示內(nèi)存耗盡,為此我郁悶了好久。

最近在博客的流量記錄中發(fā)現(xiàn)百度關(guān)鍵字“一些很惡作劇的vbs程序”(看來現(xiàn)在的年輕人很喜歡玩這口),于是打開久違的百度搜索了一下,發(fā)現(xiàn)出現(xiàn)在第三。出現(xiàn)在第二的是百度HI,上面也是一個惡作劇程序,而且還是加密的。我嘗試著解密,卻發(fā)現(xiàn)這個加密似乎比前幾天解密的那個病毒更變態(tài),未果。

雖然我沒有把那個程序解密出來(如果哪位真正的高手會,麻煩指點一下),但是從中領(lǐng)悟出了用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

函數(shù)的參數(shù)是要讀取的文件路徑,返回值是包含二進制文件的十六進制值的字符串。

代碼如下:

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

第一個參數(shù)是要讀入的文件路徑,第二個參數(shù)是包含二進制文件的十六進制值的字符串。至于如何獲得二進制文件的十六進制值,那方法就很多了,最簡單的方法當(dāng)然就是用fso對象將ReadBinary函數(shù)的返回值寫到文本文件中去,然后Ctrl+C,Ctrl+V。其實用十六進制工具也很簡單。

其他的就不多說了,看不懂的多看看MSDN參考文檔。寫了一個示例程序,里面包含了天空之城音樂的所有數(shù)據(jù),雙擊后在同一文件夾生成天空之城的MP3文件并播放。

更多信息請查看腳本欄目
易賢網(wǎng)手機網(wǎng)站地址:用VBS讀寫二進制文件的另一種方法分享
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇剩?/div>
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65317125(9:00—18:00) 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)