首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

VBScript 修改二進位檔案十六進位資料通用工具

     編輯:更多程式設計知識

工具用途

提供命令列介面,讀取二進位檔案,以十六進位字串搜尋/取代,並輸出新檔案。適用於:隱藏捷徑目標、修改 TCP/IP 連線數限制、移除 WinRAR 右鍵選單等二進位修補場景。

使用方式

cscript.exe CHex.vbs "原始檔.exe" "新檔.exe" "原始HEX" "新HEX"
範例: cscript.exe CHex.vbs "test.exe" "new.exe" "80 7A 01 61" "80 7A 01 21"

完整原始碼

Public BinaryData

If LCase(Right(WScript.FullName, 11)) = "wscript.exe" Then WScript.Quit(0)

If WScript.Arguments.Count < 4 Then
    WScript.Echo "Change File Hex. By: lxzzr lxzzr@21cn.com"
    WScript.Echo "Usage: cscript.exe " & WScript.ScriptName & " FilePath SavePath sHEX dHEX"
    WScript.Echo "       cscript.exe CHex.vbs ""test.exe"" ""new.exe"" ""80 7A 01 61"" ""80 7A 01 21"""
    WScript.Quit(0)
End If

sHEX = Replace(LCase(WScript.Arguments(2)), " ", "")
dHEX = Replace(LCase(WScript.Arguments(3)), " ", "")

WScript.Echo "File: " & WScript.Arguments(0)
WScript.Echo "sHEX: " & WScript.Arguments(2)
WScript.Echo "dHEX: " & WScript.Arguments(3)

ReadBinary(WScript.Arguments(0))
MyData = Replace(BinaryData, sHEX, dHEX)
WriteBinary WScript.Arguments(1), MyData
WScript.Echo "All done."
WScript.Quit(0)

Function ReadBinary(FileName)
    Dim Stream, ObjXML, MyNode
    Set ObjXML = CreateObject("Microsoft.XMLDOM")
    Set MyNode = ObjXML.CreateElement("binary")
    Set Stream = CreateObject("ADODB.Stream")
    MyNode.DataType = "bin.hex"
    Stream.Type = 1
    Stream.Open
    Stream.LoadFromFile FileName
    MyNode.NodeTypedValue = Stream.Read
    Stream.Close
    BinaryData = MyNode.Text
    Set MyNode = Nothing
    Set Stream = Nothing
    Set ObjXML = Nothing
End Function

Function WriteBinary(FileName, BufferData)
    Dim Stream, ObjXML, MyNode
    Set ObjXML = CreateObject("Microsoft.XMLDOM")
    Set MyNode = ObjXML.CreateElement("binary")
    Set Stream = CreateObject("ADODB.Stream")
    MyNode.DataType = "bin.hex"
    MyNode.Text = BufferData
    Stream.Type = 1
    Stream.Open
    Stream.Write MyNode.NodeTypedValue
    Stream.SaveToFile FileName, 2
    Stream.Close
    Set Stream = Nothing
    Set MyNode = Nothing
    Set ObjXML = Nothing
End Function

運作流程圖示

工具執行畫面

技術重點

  • ADODB.Stream 負責二進位讀寫。
  • Microsoft.XMLDOM 的 bin.hex 資料型別實現二進位 ⇄ 十六進位字串轉換。
  • 全程記憶體操作,速度快、無暫存檔。

擴充應用

  • 批次修補多個檔案:以批次檔迴圈呼叫。
  • 整合至安裝腳本:安裝後自動修補特定特徵碼。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved