0

16進編集を自動化したいのですが、16進エディタはHxD.exe 編集するexeと同じフォルダにHxD.exeをコピーします。私はいくつかの並べ替えが欲しい: open hxd.exe open etc.exe change 0004A0-0004A3 00 00 80 3F to 00 00 40 3F

どうやってやるの ?

4

2 に答える 2

0

HxD.exeの詳細を知らなければ、正確に言うのは難しいです。ただし、Windows PowerShellを使用して、周囲の操作を実行することはできます。例えば:

# Assuming hxd.exe and <SourceFile> exist in c:\MyFolder
Set-Location -Path:c:\MyFolder;
# 
Start-Process -FilePath:hxd.exe -ArgumentList:'-hxd args -go here';

現在のディレクトリコンテキストを変更する代わりに、次のようにプロセスの作業ディレクトリを設定することもできます。

Start-Process -WorkingDirectory:c:\MyFolder -FilePath:hxd.exe -ArgumentList:'-hxd args -go here';

hxd.exeの動作によっては、hxd.exeを任意のフォルダーに配置し、絶対パスを使用してソースファイルを渡すこともできます。

$SourceFile = 'c:\MyFolder\sourcefile.bin';
$HxD = 'c:\path\to\hxd.exe';
Start-Process -FilePath $HxD -ArgumentList ('-SourceFile "{0}" -Range 0004A0-0004A3' -f $SourceFile);

これがあなたに正しい方向へのプッシュを与えることを願っています。

于 2012-05-29T18:23:11.973 に答える
0

HxD の Web サイトにコマンド ライン オプションが一覧表示されていないので、純粋な PowerShell の代替手段を提供します。ファイルの編集は、編集に使用するプログラムよりも重要であると仮定します (そして、 PowerShell が利用可能であることを確認してください)...

以下を Edit-Hex.ps1 という名前のファイルにコピーします。

<#
.Parameter FileName
The name of the file to open for editing.

.Parameter EditPosition
The position in the file to start writing to.

.Parameter NewBytes
The array of new bytes to write, starting at $EditPosition
#>
param(
    $FileName,
    $EditPosition,
    [Byte[]]$NewBytes
)
$FileName = (Resolve-Path $FileName).Path
if([System.IO.File]::Exists($FileName)) {
    $File = $null
    try {
        $File = [System.IO.File]::Open($FileName, [System.IO.FileMode]::Open)
        $File.Position = $EditPosition
        $File.Write($NewBytes, 0, $NewBytes.Length)
    } finally {
        if($File -ne $null) {
            try {
                $File.Close()
                $File = $null
            } catch {}
        }
    }
} else {
    Write-Error "$Filename does not exist"
}

次に、例は次のように機能します。

.\Edit-Hex.ps1 -FileName c:\temp\etc.exe -EditPosition 0x4a0 -NewBytes 00,00,0x40,0x3f

配列を作成するには、新しい値をカンマ区切りのリストとして入力する必要があります。デフォルトでは、値は 10 進数として解釈されるため、10 進数に変換するか、0x0016 進数を入力する形式を使用する必要があります。

これがうまくいかない場合は、適切なラッパーの構築を支援できるように、HxD のコマンド ライン オプションを提供していただけると助かります。

于 2012-05-29T19:44:29.597 に答える