7
powershellのみを使用してコマンドラインからバイナリ16進数の編集を実行しようとしています。このスニップで16進数置換を部分的に成功させました。 123456が複数回発生し、特定の場所でのみ置換が発生したと想定されると、問題が発生します。Powershellでバイナリファイルを16進数で編集する方法
注:snipには、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";
どのように我々は、この大ざっぱな-replaceコマンドを置き換えるためのPowerShellへのオフセット位置を指定することができます。