'Инициируем нумерацию массивов с единицы, чтобы исключить искажения сигнатур...
Option Base 1
'Создаем динамические массивы...
Dim Signature() As Byte 'Сигнатура искомых байтов
Dim ReplaceBytes() As Byte 'Сигнатура заменяемых байтов
Dim Buffer() As Byte 'Буфер пространства поиска
Private Sub Form_Load()
'Откроем файл для двоичного доступа...
FileNumber = FreeFile 'Получаем свободный файловый номер
Open App.Path & "\" & "Binary.file" For Binary As FileNumber
'Переопределяем массивы и загружаем сигнатуры, как последовательности байтов
ReDim Signature(2) As Byte
For b = 1 To 2
Signature(b) = Choose(b, &HEF, &HD8) 'Два искомых байта - EF D8
Next b
ReDim ReplaceBytes(2) As Byte
For b = 1 To 2
ReplaceBytes(b) = Choose(b, &HDA, &HDA) 'Байты замены - DA DA
Next b
ReDim Buffer(LOF(FileNumber))
Get FileNumber, , Buffer 'Загружаем байты Binary.file в массив пространства поиска
Seek FileNumber, 1 'Устанавливаем позицию в начало, далее смещение автоматическое
1: Pos = InStrB(Seek(FileNumber), Buffer(), Signature(), vbBinaryCompare)
If Pos Then 'Если позиция не равна нулю, искомая сигнатура найдена...
Put FileNumber, Pos, ReplaceBytes 'Заменяем байты сигнатуры
GoTo 1
End If
Close FileNumber
End
End Sub
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 57