Что нового

[Данные, строки] hex binary патчер

johnmarshall

Осваивающий
Сообщения
202
Репутация
39
AutoIt: 3.3.8.1
Версия: 1.0
Лицензия:
Категория: Кодирование, Файловая, (HEX, Binary)

Описание:
понадобился небольшой патчер бинарных файлов. (может кому пригодится)
вот нашел на английском, ссылка.
тут не нашел, поэтому решил добавить сюда.

Код/Пример:
Код:
; наглядно посмотреть hex строку можно с помощью двоичного редактора, например WinHex

$1 = FileOpen(@ScriptDir & "\orig.txt", 2) ;запишем в новый файл данные, которые будем менять
FileWrite($1, "Autoit ROCKS!")
FileClose($1)

$sInFile = @ScriptDir & "\orig.txt" ; начальный файл
$sFind = "524F434B53" ; MSFT 5.0 hex значение которое будем менять
$sReplace = "5448452042455354" ; внезапно! новое значение, которое пропишем
$sOutFile = @ScriptDir & "\patched.txt" ; выходной файл

_BinaryReplace($sInFile, $sFind, $sReplace, $sOutFile)

Func _BinaryReplace($sInFile, $sFind, $sReplace, $sOutFile)
    Local $FO, $FR
    $FO = FileOpen($sInFile, 16) ; принудительное открытие первого файла, бинарное (по байтам) чтение
    $FR = FileRead($FO) ; читаем файл в новую переменную
    FileClose($FO) ; закрываем открытый прочитанный файл
    $FR = StringReplace($FR, $sFind, $sReplace, 1); находим и меняем hex строку
    $FO = FileOpen($sOutFile, 18) ; открываем новый файл в режиме бинарной записи 16+2
    FileWrite($FO, $FR) ; записываем новое значение
    FileClose($FO) ; закрываем созданный файл
EndFunc

; можно сравнить два файла с помощью WinMerge


Источник: autoit-script.ru
Автор(ы): smashly, перевод damien2008
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Круто :smile:
А поиск строки и замена на другую строку будет работать?
(Например найти bootmgr и заменить на 003tmgr)
 
Автор
johnmarshall

johnmarshall

Осваивающий
Сообщения
202
Репутация
39

AZJIO

Меценат
Меценат
Сообщения
2,901
Репутация
1,200
inververs
Grub делает такие замены не исправляя сам файл, только в памяти на этапе загрузки, например так:
Код:
write --offset=0x105E (rd)+1 \xEB\x08
 
Верх