Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Kraeved:
Меняю в вашем скрипте верхушку, указывая последовательность для поиска и замены »
это не верхушка, это параметры функции со значением по умолчанию. При запуске функции, в скрипте необходимо указать параметры... в общем:

Цитата Kraeved:
Как видите, расхождение в результатах. А почему? »
Как видите, но что-то вы делаете некорректно...

смотрите:
скрипт с этим дополнением
Строка на которую меняем байты, из файла test.csv:
F0D1.tmp,"0x08,0x5A,0x54,0x51,0x57,0x54,0x78,0x77,0x10"

из скрипта, строка поиска с байтами для замены:
Цитата:
[byte[]]$findb = 0x08,0x3A,0x35,0x32,0x88,0x65,0x59,0x18,0x01
результат работы скрипта:
Код: Выделить весь код
fc.exe /b f0d1.tmp fout1.tmp
Сравнение файлов F0D1.tmp и FOUT1.TMP
00F17059: 3A 5A
00F1705A: 35 54
00F1705B: 32 51
00F1705C: 88 57
00F1705D: 65 54
00F1705E: 59 78
00F1705F: 18 77
00F17060: 01 10
- как видите, все значения, байтик к байтику.
Необходимо уточнить, как Вы запускали скрипт.
Ну, а пока, для вашей задачи скрипт:
Код: Выделить весь код
function Replace-Bytes {
	param(
		$file = '.\F0D7.tmp',
		$fout = '.\F0D7_1.tmp',
		[byte[]]$fin = (0x08,0x3A,0x35,0x32,0x88,0x65,0x59,0x18,0x01),
		[byte[]]$rep = (0x08,0x8A,0x34,0x31,0x87,0x64,0x58,0x17,0x00)
	)
	
	$bytes = [io.file]::readallbytes($file)
	$i = -1
	$a = -join $fin
	do {
		$i = [byte[]]::indexof($bytes,$fin[0],($i+1))
		[byte[]]$tmp = @()
		for ($k = $i; $k -lt ($i+$fin.count);$k++){
			$tmp += $bytes[$k]
		}
		$b = -join $tmp
	} while ($a -ne $b)
	for ($j,$n=0,$i;$j -lt $rep.count;$n++,$j++){
		$bytes[$n] = $rep[$j]
	}
	[io.file]::writeallbytes($fout, $bytes)
}

#значение для поиска:
[byte[]]$findb = 0x0F,0x85,0x1F,0x03,0x00,0x00

#Исходный файл:
$filein = '.\original.exe'

#Целевой файл:
$fileout = '.\patched.exe'

#значение для замены:
[byte[]]$foutdb = 0xE9,0x20,0x03,0x00,0x00,0x00

replace-bytes -file $filein -fout $fileout -fin $findb -rep $foutdb
- проверяйте.

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


Отправлено: 21:23, 28-01-2024 | #25