永发信息网

VB 在二进制文件中找到指定字符串并替换

答案:6  悬赏:60  手机版
解决时间 2021-01-07 21:47
  • 提问者网友:辞取
  • 2021-01-07 13:22
VB 在二进制文件中找到指定字符串并替换
最佳答案
  • 五星知识达人网友:野慌
  • 2021-01-07 14:15
VB的二进制文件查找我做过
先要把文件全部读进一个byte数组,以下是我贴的代码,使用已久,效率很高

==============代码================
Public Function FindByteArrayInBinaryFileBuffer(dt() As Byte, ByteArray() As Byte) As Long
Dim curLoc As Long, cnt As Long, ReadBud As Byte, cmpByte As Byte, i As Long
cmpByte = ByteArray(0)
For i = LBound(dt) To UBound(dt)
If dt(i) = cmpByte Then
For j = 1 To UBound(ByteArray)
If dt(i + j) <> ByteArray(j) Then GoTo a
Next
FindByteArrayInBinaryFileBuffer = i
Exit Function
End If
a:
Next
End Function

Private Sub Command1_Click()
Dim fileBuf() As Byte '文件缓冲区
Dim searchSgn() As Byte '要查找的标识
Dim Pos As Long '标识的位置
searchSgn() = StrConv("521", vbFromUnicode) '如果是字符串,要稍微转换一下

'读入数组
Open "I:\My Documents\Visual Basic\Editing\PE Patcher\asm.txt" For Binary As #1
ReDim fileBuf(0 To LOF(1) - 1) As Byte
Get #1, , fileBuf

Pos = FindByteArrayInBinaryFileBuffer(fileBuf, searchSgn)
If Pos > 0 Then
searchSgn() = "123"
Put #1, Pos, searchSgn '写入数据
End If
Close #1
End Sub
=============代码==================

把文件内容放入byte数组查找,虽然开销点内存,不过速度相当快
如果觉得回答得好麻烦再加点分行吗?
全部回答
  • 1楼网友:行路难
  • 2021-01-07 17:26
Pos = FindByteArrayInBinaryFileBuffer(fileBuf, searchSgn)
等同于VB自带的函数
Pos = InStrB(fileBuf, searchSgn) -1
  • 2楼网友:woshuo
  • 2021-01-07 17:08
C:\Documents and Settings\Administrator\桌面\asd.exe里是快捷方式,还是文件本身?
如果是文件本身,应该可以.但一般应该不是
  • 3楼网友:詩光轨車
  • 2021-01-07 16:28
首先EXE文件不是二进制文件,二进制文件的扩展名为。BIN
再者,你那个521已经被编译,无法更改
  • 4楼网友:掌灯师
  • 2021-01-07 15:58
呵呵,客户端是要和服务端通讯的...
你客户端写好了,还非常好...
我真不知道你这客户端怎么写的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯