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

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

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

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

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

代碼如下:

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ù)是要讀取的文件路徑,返回值是包含二進(jìn)制文件的十六進(jìn)制值的字符串。

代碼如下:

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

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

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

更多信息請(qǐng)查看腳本欄目
易賢網(wǎng)手機(jī)網(wǎng)站地址:用VBS讀寫(xiě)二進(jìn)制文件的另一種方法分享
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類(lèi)型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專(zhuān)用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專(zhuān)用圖標(biāo)