<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; CMD/BAT: патчер бинарных файлов]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=2885&amp;type=atom" />
	<updated>2009-04-05T01:05:17Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=2885</id>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: патчер бинарных файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=21350#p21350" />
			<content type="html"><![CDATA[<p><strong>Pat4_v3</strong><br />- <em>При использовании этой версии скрипта следует вводить реальный адрес смещения.</em><br />- Реализован механизм преобразования HEX-чисел без обращения к внешним программам, что заметно ускоряет процесс патча.<br />- Обновлена справка, удалены лишние условия и функции.<br />В прикрепленном архиве - конечный инсталлятор, который выполняет все необходимые функции (извлечение скрипта и добавление пункта &quot;Patch&quot; в контекстное меню проводника).<br />_<br />Благодарность <strong>alexii</strong> за помощь в разработке скрипта.</p>]]></content>
			<author>
				<name><![CDATA[kiber_punk]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=23894</uri>
			</author>
			<updated>2009-04-05T01:05:17Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=21350#p21350</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: патчер бинарных файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=20260#p20260" />
			<content type="html"><![CDATA[<p>Пример использования.</p><p>Создайте ярлык к файлу cmd.exe<br />Выполним такую команду:<br /></p><div class="quotebox"><blockquote><p>PAT4.BAT cmd.exe.lnk 13c <strong>07</strong></p></blockquote></div><p>Ярлык теперь имеет параметр запуска &quot;свёрнутое в значёк&quot;<br />Потом такую:<br /></p><div class="quotebox"><blockquote><p>PAT4.BAT cmd.exe.lnk 13c <strong>03</strong></p></blockquote></div><p>Окно запускается развёрнутым.</p><p>такую:<br /></p><div class="quotebox"><blockquote><p>PAT4.BAT cmd.exe.lnk 13c <strong>00</strong></p></blockquote></div><p>Запуск уже происходит в режиме SW_HIDE.</p>]]></content>
			<author>
				<name><![CDATA[kiber_punk]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=23894</uri>
			</author>
			<updated>2009-03-05T05:34:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=20260#p20260</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[CMD/BAT: патчер бинарных файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=20258#p20258" />
			<content type="html"><![CDATA[<p>Скрипт должен с успехом работать во всех версиях Windows.</p><p>pat4.bat</p><div class="codebox"><pre><code>:: patcher v 1.0.3 by kiber_punk 
@echo off
CHCP 1251&gt;nul
set a=
set data=
set ext=

if &quot;%~1&quot;==&quot;/?&quot; (GOTO HELP)
if &quot;%~1&quot;==&quot;&quot; (GOTO file)
if not &quot;%~1&quot;==&quot;&quot; (echo File: %~nx1)

set newname=%~s1

rem ИМЕЕМ КОРОТКОЕ ИМЯ
:new
if &quot;%2&quot;==&quot;&quot; (GOTO address)
if &quot;%3&quot;==&quot;&quot; (GOTO byte)
if not &quot;%3&quot;==&quot;&quot; (GOTO go)

rem ВВОД АДРЕСА
:address
set /p a=Offset address (+100h), default - BOF:  
if &quot;%a%&quot;==&quot;&quot; (set a=100)
rem ВВОД БАЙТА
:byte
set /p data=Input byte for include, default ^&lt;00^&gt;:  
if &quot;%data%&quot;==&quot;&quot; (set data=00)

:go
rem переименовать чтобы исключить все возможные ошибки
ren %1 &quot;tmp.bin&quot;
rem задаём короткое имя в формате DOS
call :short &quot;%~dp1tmp.bin&quot;

CALL :WORK &quot;%newname%&quot; %2 %a% %data% %3 %4 %5 %6 %7 %8 %9

rem обратное переименование
ren &quot;%~dp1tmp.bin&quot; &quot;%~nx1&quot;

rem вывод информации
echo ...
echo Filename:    %~nx1
echo Address: %2 %a%
echo Byte:    %data% %3 %4 %5 %6 %7 %8 %9
echo ...
echo Press AnyKey...
pause&gt;nul
exit /b

rem ИНТЕРАКТИВНОЕ ЗАДАНИЕ ИМЕНИ
:file
set /p file=Enter filename:  
CALL :new %file%
exit /b

rem РАБОЧАЯ ЧАСТЬ
:WORK
echo e %2 %3 %4 %5 %6 %7 %8 %9&gt;patch.dbg
echo w&gt;&gt;patch.dbg
echo q&gt;&gt;patch.dbg
chcp 866&gt;nul
debug %~1 &lt; patch.dbg &gt;nul
del patch.dbg
exit /b

rem СПРАВКА
:HELP
    echo Used command line:  pat4 [^&lt;file^&gt; [address [byte]]] [/?]
    echo ...
    echo ^&lt;file^&gt;    - файл для обработки
    echo ^&lt;address^&gt; - адрес ввода байтов +100h ^(HEX^)
    echo ^&lt;byte^&gt;    - байт^(ы^) разделенные через пробел ^(HEX^)
    echo   Пример:
    echo ..
    echo ^&lt;pat4.bat file.exe 100 01 02 3c^&gt; - записывает в начало файла
    echo                           последовательность байт 01,02,3c
    echo ^&lt;pat4.bat file.lnk 13c 07^&gt;       - записывает байт 07 по адресу 3C&amp;echo ..
exit /b

:short
set newname=%~s1</code></pre></div><p>Для добавления пункта &quot;Patch&quot; в контекстное меню проводника необходимо скопировать скрипт в системную директорию и выполнить reg-файл:<br />pat4.reg</p><div class="codebox"><pre><code>REGEDIT4

[HKEY_CLASSES_ROOT\*\shell\Patch\command]
@=&quot;pat4.bat \&quot;%1\&quot;&quot;
[HKEY_CLASSES_ROOT\lnkfile\shell\patch\command]
@=&quot;pat4.bat \&quot;%1\&quot;&quot;</code></pre></div><p>За один проход скрипта можно вводить по 7 байт.<br />__<br /><a href="http://forum.script-coding.com/viewtopic.php?pid=20327">Обсуждение скрипта на форуме</a></p>]]></content>
			<author>
				<name><![CDATA[kiber_punk]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=23894</uri>
			</author>
			<updated>2009-03-05T04:33:31Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=20258#p20258</id>
		</entry>
</feed>
