Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - как заменить бинарную строку ?

Ответить
Настройки темы
CMD/BAT - как заменить бинарную строку ?

Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


есть бинарный файл test1.bin
Код: Выделить весь код
test1.bin
3132330D0A3435370D0A3835
как через BAT файл заменить "3435" на "3436" чтобы получился файл test2.bin ?

Код: Выделить весь код
test2.bin
3132330D0A3436370D0A3835


Архив с тестовыми файлами:
6.zip

Отправлено: 21:07, 12-09-2022

 

Новый участник


Сообщения: 11
Благодарности: 4

Профиль | Отправить PM | Цитировать


тут только 2 варианта как мне известно
с помощью bat и сторонней утилиты .Но тут на форуме вроде как запрещено )
2 вариант с помощью power shell и метода -Encoding byte.
а так с помощью любого hex редактора можно сделать патч.
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:06, 12-09-2022 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


Цитата olga_maksi29:
с помощью bat и сторонней утилиты
»
а как название утилиты?

Цитата olga_maksi29:
2 вариант с помощью power shell и метода -Encoding byte.
»
есть пример кода?

Цитата olga_maksi29:
а так с помощью любого hex редактора можно сделать патч. »
с помощью какого hex редактора можно сделать патч без исходного и конечного файла? все испробованные мной патчеры создают патч на основе исходного и конечного файлов. и если исходный файл изменился, то патч перестаёт работать. а нужно просто через поиск и замену hex-строки, что будет работать всегда

Отправлено: 22:20, 12-09-2022 | #3


Аватара для ddv122

Старожил


Сообщения: 222
Благодарности: 19

Профиль | Отправить PM | Цитировать


Примерно так
Код: Выделить весь код
$as_bytes = Get-Content test1.bin -Raw -Encoding byte
$as_text = $as_bytes.forEach('ToString', 'X2') -join ' '
$patternregex = ('31 32 33 0D 0A 34 35 37 0D 0A 38 35')
$patch = '31 32 33 0D 0A 34 36 37 0D 0A 38 35'
$checkPattern=Select-String -Pattern $patternregex -InputObject $as_text
If ($checkPattern -ne $null) {
    $as_text_replaced = $as_text -replace $patternregex, $patch
}
Elseif (Select-String -Pattern $patch -InputObject $as_text) {
Write-Output ' Already patch, exiting'
Exit
}
else {
Write-Output "Byte not found"
}
[byte[]] $as_bytes_replaced = -split $as_text_replaced -replace '^', '0x'
Set-Content test2.bin -Encoding Byte -Value $as_bytes_replaced

-------
Одна голова хорошо, а двух у меня нет...

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:22, 12-09-2022 | #4


Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


Цитата ddv122:
Примерно так »
такая ошибка выскакивает


можно так:
(2й и 3й способ не принимают x00 в строке замены, 1й принимает)
Код: Выделить весь код
@echo off
copy test1.bin test2.bin
call JREPL.BAT \x34\x35 \x34\x36 /XSEQ /M /F "test2.bin" /O -
call JREPL.BAT \x0A\x38 \x0A\x38\x38 /XSEQ /M /F "test2.bin" /O -
Код: Выделить весь код
@echo off
copy test1.bin test2.bin
set "F1=\x34\x35"
set "R1=\x34\x36"
set "F2=\x0A\x38"
set "R2=\x0A\x38\x38"
call JREPL.BAT "%F1% %F2%" "%R1% %R2%" /T " " /XSEQ /M /F "test2.bin" /O -
Код: Выделить весь код
@echo off
copy test1.bin test2.bin
call JREPL _find.txt _replace.txt /T FILE /XSEQ /M /F "test2.bin" /O -

Последний раз редактировалось shadowbat, 13-09-2022 в 15:37.


Отправлено: 12:49, 13-09-2022 | #5


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


http://forum.oszone.net/post-2963448.html#post2963448

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:36, 14-09-2022 | #6


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Я автору уже давал эту ссылку в его прошлой теме, но, видимо, надо повторить.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 21:24, 14-09-2022 | #7


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
уже давал эту ссылку в его прошлой теме, но, видимо, надо повторить. »
Повторение - мать учения. Непреложная истина, которую нам в советской ещё школе на стене, в кабинетах вывешивали...
Да, в том топике есть и скрипты, и утилита для решения вопроса, надо просто почитать. Если нужен результат - почитает, а если персональный ответ... возможно, кто-нибудь напишет...

-------
scio me nihil scire. Ѫ


Отправлено: 10:40, 15-09-2022 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - как заменить бинарную строку ?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Заменить строку в определённом месте файла DJ Mogarych Программирование в *nix 2 04-01-2018 19:51
Debian/Ubuntu - [решено] sed 's///' - не получается заменить строку файла VladDV Общий по Linux 2 09-12-2011 02:09
[решено] Как заменить строку в ENTRIES.INI средствами автоматизации. semiono AutoIt 17 08-04-2009 12:04
[решено] Как заменить строку [27] в файле? semiono AutoIt 8 05-04-2009 02:56
Как заменить строку <input type... Rustemal Вебмастеру 1 29-06-2003 15:26




 
Переход