Тема: WSH: патч бинарного файла
Скрипт делает патч для бинарного файла, если известно смещение и известно, какое число записать в шестнадцатеричном виде в нужный байт:
<job>
<script language="JScript">
var file=WSH.arguments(0),position=WSH.arguments(1),byte=eval("'"+WSH.arguments(2)+"'");
var inp=new ActiveXObject("ADODB.Stream");
inp.Type=1;
inp.Open();
inp.LoadFromFile(file);
var out=new ActiveXObject("ADODB.Stream");
out.Type=1;
out.Open();
inp.CopyTo(out,position*1);
inp.Read(1);
out.Write(mb2b(byte));
inp.CopyTo(out);
out.SaveToFile(file+".out",2);
// ----------------------------------------
function mb2b(byte)
{
with(new ActiveXObject("ADODB.Recordset"))
{
Fields.Append("x",205,1);
Open();
AddNew();
Fields(0).AppendChunk(byte);
return Fields(0).GetChunk(1);
}
}
</script>
</job>
Сохраните вышеприведённый код в файле с расширением .wsf.
Автор скрипта - fps.
Использование: patch.wsf inputFilename position byte
Пример использования в командной строке:
C:\>patch.wsf Notepad.exe 0xAB \xFF
C:\>fc /b Notepad.exe Notepad.exe.out
Сравнение файлов Notepad.exe и NOTEPAD.EXE.OUT
000000AB: F2 FF
Смещение можно указывать как в десятичном, так и в hex-виде.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.