Crearea unui fișier bat

Vreau să automatizez editare hex, Editorul Hex este HxD.exe Eu voi copia HxD.exe în același folder cu exe care va fi editat. Vreau un fel de: deschideți hxd.exe open etc.exe schimbați 0004A0-0004A3 00 00 80 3F la 00 00 40 3F

Cum pot face acest lucru ?

0

2 răspunsuri

Fără a cunoaște detaliile despre HxD.exe, este greu de spus exact. Puteti folosi Windows PowerShell pentru a obtine operatiunile din jur. De exemplu:

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

În loc să schimbați contextul directorului curent, puteți seta și directorul de lucru al acestui proces:

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

În funcție de funcționarea hxd.exe, s-ar putea să fiți capabil să plasați hxd.exe într-un dosar arbitrar și să treceți în fișierul sursă utilizând calea sa absolută:

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

Sper că acest lucru vă oferă o împingere în direcția cea bună.

0
adăugat

Nu văd nici o opțiune de linie de comandă listată pe site-ul HxD, așa că vă dau o alternativă pură PowerShell, presupunând că editarea fișierului este mai importantă pentru tine decât programul pe care îl folosiți pentru a efectua editările (și că aveți PowerShell disponibil) ...

Copiați următoarele într-un fișier numit 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"
}

Exemplul dvs. va funcționa astfel:

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

Rețineți că noile valori trebuie să fie introduse ca o listă separată prin virgulă pentru a face o matrice și că, în mod implicit, valorile vor fi interpretate ca zecimale, deci trebuie fie să convertiți în zecimal, fie să utilizați formatul 0x00 la intrare hex.

Dacă acest lucru nu funcționează pentru dvs., vă va fi util să furnizați opțiunile pentru linia de comandă pentru HxD astfel încât să vă putem ajuta să construiți un pachet corespunzător.

0
adăugat