Методы шестнадцатеричного редактирования бинарных файлов через Powershell
Я пытаюсь выполнить двоичное редактирование в шестнадцатеричном формате из командной строки, используя только powershell. Имел частичный успех, выполняя замену гексагоном на этот фрагмент. Проблема возникает, когда 123456 происходит несколько раз, и замена должна была произойти только в определенном месте.
ПРИМЕЧАНИЕ: для снэпа требуетсяConvert-ByteArrayToHexString
а такжеConvert-HexStringToByteArray
функции найдены здесь.
http://www.sans.org/windows-security/2010/02/11/powershell-byte-array-hex-convert
$readin = [System.IO.File]::ReadAllBytes("C:\OldFile.exe");
$hx = Convert-ByteArrayToHexString $readin -width 40 -delimiter "";
$hx = $hx -replace "123456","FFFFFF";
$hx = "0x" + $hx;
$writeout = Convert-HexStringToByteArray $hx;
set-content -value $writeout -encoding byte -path "C:\NewFile.exe";
Как мы можем указать позицию смещения в powershell, чтобы заменить эту отрывочную команду -replace.