1

Тема: 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-виде.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.