使用VBS修改二进制文件HEX数据

可用之处还是有的,如:隐藏快捷方式中目标文件位置;破解XP中TCP/IP连接数限制;去掉RAR右键解压菜单等等。

代码如下:

Public BinaryData

If (lcase(right(wscript.fullname,11))="wscript.exe") Then
 WScript.Quit(0)
End If

If wscript.arguments.count<4 Then
 Wscript.Echo "Change File Hex. By: lxzzr  lxzzr@21cn.com"
 Wscript.Echo ""
 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 61"""
 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

(0)

相关推荐

  • 利用vbscript脚本修改文件内容,此适用于自动化的操作中

    利用vbscript脚本修改文件内容,此适用于自动化的操作中 '新建一个Replace.vbs脚本,脚本内容如下,程序运行时输入三个参数:查找内容,替换内容,文件 复制代码 代码如下: Dim FileName, Find, ReplaceWith, FileContents, dFileContents   Find = WScript.Arguments(0)   ReplaceWith = WScript.Arguments(1)   FileName = WScript.Argument

  • VB简单实现防止文件被改写

    最近在写的一个小程序中有个配置文件,这个文件对整个程序来说是至关重要的,如果它被删除或者改写的话,整个程序无法运行,或者运行后无法关闭.所以我一直在寻找如果让手工无法改写文件的方法. 对于"删除"来说是很容易解决的,程序中查找配置文件的路径,若为空则创建,并给些默认值.VB的示例代码如下: FileName = App.Path + "\CONFIG" '如果文件不存在,则创建文件 If Dir(FileName) = "" Then Open

  • vbscript获取文件的创建时间、最后修改时间和最后访问时间的方法

    复制代码 代码如下: set fso=createobject("Scripting.FileSystemObject") set fn=fso.GetFile("E:\AD.txt") msgbox "文件创建时间:"&fn.DateCreated msgbox "文件最后修改时间:"&fn.DateLastModified msgbox "文件最后访问时间:"&fn.DateLa

  • vbs通过WMI修改文件文件夹的NTFS权限

    使用WMI修改文件文件夹的NTFS权限, 代码: 复制代码 代码如下: strUser = "guests"strPath = "D:\\abc.txt"RetVal = AddPermission(strUser,strPath,"R",True) '------------------------------------------------------------------------- '用于给文件和文件夹添加一条权限设置.返回值:

  • vbs 批量修改文件,bat 批处理文件调用执行vbs,并在cmd窗口打印返回值(vbs运行结果)

    示例代码(t.vbs)如下: 复制代码 代码如下: Set fso=Wscript.CreateObject("Scripting.FileSystemObject") flrName="D:\Workspace\src\" 'dir that you need deal with count=0 'get the count of modified files function Traversal(dir) set flr=fso.getfolder(dir) s

  • vbs脚本实现修改DNS和清空IE临时文件功能

    今早接到山青院电话,说需要一个修改DNS为校内DNS,并且清空IE临时文件的脚本,想都没想,用批处理写了一个: 复制代码 代码如下: rem programed by Kaisir @echo off echo 本脚本的作用为修改您的DNS为山东青年政治学院专用DNS 222.194.76.2 同时帮您清除了电脑中的临时文件.若有疑问,请致电网络中心. pause echo 修改DNS中... netsh interface ip set dns "本地连接" source=stati

  • 使用VBS修改二进制文件HEX数据

    可用之处还是有的,如:隐藏快捷方式中目标文件位置:破解XP中TCP/IP连接数限制:去掉RAR右键解压菜单等等. 复制代码 代码如下: Public BinaryData If (lcase(right(wscript.fullname,11))="wscript.exe") Then WScript.Quit(0)End If If wscript.arguments.count<4 Then Wscript.Echo "Change File Hex. By: lx

  • 用VBS读写二进制文件的另一种方法分享

    之前写的那篇给出的方法虽然不错,但是当文件过大时(其实很小,也就几M),对应的数组也会很大,然后会出现运行时错误,提示内存耗尽,为此我郁闷了好久. 最近在博客的流量记录中发现百度关键字"一些很恶作剧的vbs程序"(看来现在的年轻人很喜欢玩这口),于是打开久违的百度搜索了一下,发现出现在第三.出现在第二的是百度HI,上面也是一个恶作剧程序,而且还是加密的.我尝试着解密,却发现这个加密似乎比前几天解密的那个病毒更变态,未果. 虽然我没有把那个程序解密出来(如果哪位真正的高手会,麻烦指点一下

  • 用VBS修改(设置)系统时间和日期的代码

    那天跟别人聊到 Y2K38 问题,于是想到一个恶作剧:用 VBS 把系统的时间修改到2038年1月19日3时14分07秒之后,这样某些依赖于 Unix 时间戳的程序就会出问题.那么怎样用 VBS 修改系统的时间呢? 最简单也是最没有技术含量的方法就是调用 cmd 的 date 和 time 命令: 复制代码 代码如下: 'Author: Demon 'Website: http://demon.tw 'Date : 2011/4/27 Dim WshShell Set WshShell = Cr

  • 用VBS修改远程桌面3389端口并添加到Windows防火墙的代码

    将下面代码存为.vbs,双击运行.然后重启一下系统,就修改了系统的远程桌面的默认的3389端口 '##################### 'VBS修改远程桌面的默认端口,并添加至Windows防火墙 '作者51windows.Net '56868为要设置的端口 '##################### Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.RegWrite "HKEY_LOCAL_M

  • python使用openpyxl库修改excel表格数据方法

    1.openpyxl库可以读写xlsx格式的文件,对于xls旧格式的文件只能用xlrd读,xlwt写来完成了. 简单封装类: from openpyxl import load_workbook from openpyxl import Workbook from openpyxl.chart import BarChart, Series, Reference, BarChart3D from openpyxl.styles import Color, Font, Alignment from

  • vue中如何让子组件修改父组件数据

    一.关于vue中watch的认识 我们要监听一个属性的的变化就使用watch一般是父组件传递给子组件的时候 •1.常见的使用场景 ... watch:{ value(val) { console.log(val); this.visible = val; } } ... •2.如果要一开始就执行 ... watch: { firstName: { handler(newName, oldName) { this.fullName = newName + '-' + this.lastName;

  • Vue刷新修改页面中数据的方法

    因为Vue对象一旦生成之后,如果只是修改Vue对象中的数据,在页面上是不会自动更新的,得用Vue.set()函数来进行修改,函数格式为Vue.set(data,'para','value'),其中data为Vue创建时传输的data对象名,后面两个参数分别是data对象中的变量名称与值 页面初始化代码: <script type="text/javascript" charset="utf-8"> mui.init(); var data = { dx:

  • Linux下修改MySQL数据库数据文件路径的步骤

    使用rpm安装方式安装完MySQL数据库后,数据文件的默认路径为/var/lib/mysql,然而根目录并不适合用于存储数据文件. 原路径:/var/lib/mysql 目标路径:/home/mysql_data/mysql Linux系统版本:centos7.6 MySQL数据库版本:5.7.25 步骤: 1.创建目标路径 mkdir -p /home/mysql_data 2.关闭MySQL systemctl stop mysqld 3.复制数据文件 cp -arp /var/lib/my

  • MyBatis批量插入/修改/删除MySql数据

    前言 由于项目需要生成多条数据,并保存到数据库当中,在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,项目使用了Spring+MyBatis,所以打算使用MyBatis批量插入,应该要比循环插入的效果更好,由于之前没用过批量插入,在网上找了一些资料后最终实现了,把详细过程贴出来.供以后查阅和学习. java代码: 注意:这里循环的时候需new 出来新的对象,而不能通过循环改变属性的值就认为这是一个新的对象了,通俗的说就是new ReddemCode()要放在for循环的

  • vue如何修改data中数据问题

    目录 vue修改data中数据 vue中修改简单类型数据 vue中修改数组的方法 vue中修改对象的方法 关于删除 vue修改数据不生效,页面不刷新 vue中数据类型 vue数据侦听简易理解 数据更新后,页面不刷新的可能原因 vue修改data中数据 vue的data中保存一些数据,用于页面的渲染.有的时候,当我们手动对data中的数据修改时,vue却监听不到这些数据的变化,导致页面没有触发新一轮的更新. 注意:出现以上问题的原因在于,没有通过vue提供的方法对保存在data中的数据进行修改.强

随机推荐