Патч – что это такое в компьютере, играх и программах, как им пользоваться, что обозначает слово «patch», что значит «пропатчить файл»

Многим пользователям компьютеров и мобильной техники встречалось слово «патч». Но не все понимают, что это такое и как им пользоваться.

Определение патча

Само слово «Патч» не является русским. Точное понимание можно получить при переводе с английского: patch – это заплатка.

А по сути заплатка – попытка прикрыть дыру с помощью имеющихся материалов. Примечательно, что такое определение как нельзя точнее описывает назначение патчей в программном обеспечении.

Они выпускаются для улучшения функционирования или для закрытия «дыр».

Патч – что это такое в компьютере, играх и программах, как им пользоваться, что обозначает слово «patch», что значит «пропатчить файл»Начало процесса установки «патча» для Diablo III.

Особенно в плане «закрытия дыр» можно выделить исправления, которые закрывают уязвимости в системе. Собственно, такая уязвимость считается «дырой», а patch – набор команд и инструкций, которые эту самую дыру закроют.

Историческая справка

Слово «заплатка» используется не просто так.

В годы, когда передача информации производилась на перфокартах, места с ошибками вырезались физически, а исправленная перфорация вклеивалась на их место.

Таким образом установка «заплаток» имела не фигуральное, а реальное значение. Изменять слово со временем не стали, и по сей день обновления и исправления именуются «заплатками».

Виды патчей в компьютере

Естественно, существует несколько характерных разновидностей «заплаток».  Зависят они от нескольких факторов, но назвать это полноценной классификацией нельзя. Связано это с тем, что факторы зачастую перекликаются, а «исправления» могут одновременно классифицироваться по разным параметрам:

  1. HotFix. Быстрое (дословно — горячее) исправление, которое выпускается в результате появления уязвимости в последнем крупном обновлении. Выпускаются иногда на следующий день и содержат минимальное количество изменений.
  2. ServicePack. Огромный набор исправлений и улучшений, которые зачастую меняют принципы работы программы. Примером являются «паки» для Windows, которые можно отнести к патчам, но фактически они «стоят» отдельно и перестали классифицироваться, как «заплатки».
  3. Плановые исправления. Чаще всего встречаются в играх, направленных на сезонный контент. Плановые «заплатки» завершают активность сезона и запускают следующий. Можно встретить в «Diablo» и «Path of Exile» (также, в целом легионе игр с сезонными рейтинговыми таблицами и событиями).
  4. Взаимодействие с ПО. Самым распространённым вариантом является «графический патч», который адаптирует работу программы к новым реалиям, ОС или расширяет возможности графики. Самым ярким примером является patch13d для Diablo II, выпущенный спустя 10 лет, после последнего обновления.
  5. Игровые. Можно сразу отметить, что патчи для игр обладают собственной классификацией и разбирать их следует отдельно. Такие вещи, как плановые, интерфейсные, балансные, и прочие изменения в играх называются патчами. Даже смена номерной версии (адд-он) тоже будет патчем не смотря на расширение контента.
  6. Принудительные. Когда, программа без обновления перестаёт работать. Это исправления уязвимостей в клиент-банках или эксплойтов в играх.
  7. Автоматические. Которые закачиваются и распаковываются через саму программу или специальный «launcher».Патч – что это такое в компьютере, играх и программах, как им пользоваться, что обозначает слово «patch», что значит «пропатчить файл»
  8. Ручные. Такие исправления нужно загружать и запускать самостоятельно. Примером является обновление «S.T.A.L.K.E.R», которое нужно было скачивать с сайта и запускать самостоятельно.

  Патенты Apple, о которых мы ничего не знали

Вместе с видами стоит упомянуть и выражение – пропатчить файл или программу. Это значит, что целевой файл или программу нужно определенным образом обновить.

Например, русификация также является «заплаткой». И, чтобы русифицировать программу нужно пропатчить ее, т.е. установить патч, который добавит русский язык в приложение.

Функции патчей

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

  • исправление предыдущих ошибок;
  • откат изменений предыдущего исправления (когда выбирается ошибочное исправление, приводящее к ещё большим проблемам);
  • улучшение графической составляющей или взаимодействия с ПО/железом;
  • добавление новых функций.

Перечисленные варианты являются составляющей почти любого «patch-notes», которые сопровождают обновления при нормальных условиях. Особенно такие «заметки об исправлениях» интересуют геймеров, ведь в них указывает перечень изменений, способный пошатнуть привычный баланс.

Patch Notes

Заслуживают отдельного упоминания. Это документы, которые распространяются вместе с патчами. Они могут называться «история изменений» или также, как данный раздел. В них, в текстовом и удобном формате указывается какие именно изменения поставляются в указанном обновлении.

Патч – что это такое в компьютере, играх и программах, как им пользоваться, что обозначает слово «patch», что значит «пропатчить файл»

Такая информация крайне важна для геймеров, но иногда доходит до абсурда. Примером служит Diablo III “Reaper of Souls”, где 2 строки было отведено, под следующую информацию:

  • уменьшено количество кучек золота, выпадающих с убитых монстров;
  • увеличено количество золота в кучках, выпадающих с убитых монстров.

При этом с точки зрения игрока разработчики вообще ничего не изменили. С другой стороны, это немного улучшило оптимизацию в самой игре (уменьшив количество объектов на экране). Поэтому нелогичные пункты в «исправлениях» часто имеют скрытый смысл, который направлен на улучшение работы программы.

Примеры использования

В классификации было указано, что есть разные виды патчей. Они могут быть ориентированы на самые разные аспекты работы программы, поэтому рассматривать их следует в комплексе с источником (программой).

  PAC-MAN 256: время вспомнить классику

Операционные системы

Упомянутые выше «Service Pack» для ОС Windows служат отличным примером крупных патчей для операционных систем. Также существует такое явление, как обновления ОС.

Особенно знакомо это пользователям Windows 10, которые вынуждены сталкиваться с обновлениями иногда по нескольку раз в неделю. Каждое отдельное исправление из списка в таком случае является отдельной «заплаткой» для указанных в списке компонентов.

Патч – что это такое в компьютере, играх и программах, как им пользоваться, что обозначает слово «patch», что значит «пропатчить файл»

Также примером является «lucky patcher» для Андроид, который позволяет отключить рекламу и прочие подобные элементы в самой ОС.

Программное обеспечение

Здесь исправления либо более глобальные, либо важные. Следует отметить, что они направлены на корректировку проблемных моментов в программе или улучшения (расширения) функционала. Примером можно назвать новые версии «adobe flash player», которые постоянно развивают быстродействие графических компонентов при обработке.

Патч – что это такое в компьютере, играх и программах, как им пользоваться, что обозначает слово «patch», что значит «пропатчить файл»

Игры

Здесь явление обновлений более глобально. Каждая новая «заплатка» может нести, как новый контент (например, с технической точки зрения аддоны в World Of WarCraft тоже являются патчами), так и незначительные исправления баланса (patch 1.0001 в Stalker Shadow of Chernobyl, где было исправлено повреждение костюмов).

В некоторых играх исправления выходят настолько часто, что появляются отдельные каналы, которые занимаются их разбором. Примером, является канал Ярослава Кузнецова (aka NS), который занимается разбором интересных моментов игры Dota 2 и нередко обозревает самые крупные патчи.

Источник: http://composs.ru/chto-oznachaet-slovo-patch-v-kompyutere/

Увеличение количества одновременных TCP/IP соединений

После установки новых ServicePack'ов для Windows XP различные программы для p2p-сетей типа eMule или uTorrent начинают дико тормозить. Это связано с тем, что количество активных соединений в сетевом драйвере TCPIP.SYS после установки ServicePack'ов принудительно ограничивается до 10.

Даже на самодельных пропатченных сборках Windows с увеличенным количеством соединений такая проблема может возникнуть, если будет скачано и установлено обновление KB951748, заменяющее драйвер TCPIP.SYS на новый с прежним количеством соединений. По неофициальной информации такое ограничение введено с целью замедления распространения сетевых червей.

Не исключено, что этот драйвер будет заменяться и с какими-нибудь другими очередными обновлениями. Для изменения количества соединений рекомендую воспользоваться утилитой Intelligent TCPIP.SYS patcher от немецкого программиста LvlLord. Последняя версия утилиты 2.23d от 2005 года. Пользоваться ей очень легко.

Сразу после запуска вам будет показано текущее количество одновременных подключений, установленных в системе.

После этого патч внесет все необходимые изменения в файлы. Если система выдаст предупреждение, что системные файлы изменены, то в окне предупреждения нажмите «Отмена», а затем «Да» на запрос сохранения изменившихся файлов. Изменения вступят в силу сразу после перезагрузки Windows.

Операционная система: Windows XP SP1(x64)/SP2(x86,x64)/SP3, Vista без SP(x86,x64) и с SP1(x86,x64), 7 beta(x86,x64).

Язык интерфейса: русский, английский, арабский, греческий, иврит, испанский, итальянский, китайский (упрощенное письмо и традиционный), корейский, немецкий, норвежский, польский, португальский (бразильский и европейский), румынский, тайский, турецкий, украинский, французский, чешский, шведский, эстонский и японский.
Размер: 256KB.

Half-open limit fix
4.1


Инструкция:

1) Запустите Half-open limit fix
2) Выберите новый предел количества одновременных полуоткрытых исходящих соединений и нажмите «Внести в tcpip.sys» (для подавляющего большинства пользователей будет достаточным предел, равный 100)
3) Перезагрузите компьютер и наслаждайтесь

Патч – что это такое в компьютере, играх и программах, как им пользоваться, что обозначает слово «patch», что значит «пропатчить файл»

Может потребоваться повторный запуск Half-open limit fix после обновления Windows или установки SP, так как иногда Microsoft заменяет старый файл tcpip.sys на новый. Если программа перестанет работать с обновленным tcpip.sys на этом сайте появится новая версия.

Для пользователей Vista и Windows 7: Возможно когда-нибудь, после обновления Windows или установки SP на рабочем столе появятся надписи «Тестовый режим».

Они могут появиться, так как во всех версиях Vista
и Windows 7, кроме Vista
без SP(x86), есть обязательная проверка подписи драйверов, и файл tcpip.sys подписывается тестовой подписью, после того как пропатчен.

Скорее всего, чтобы они исчезли, понадобится просто еще раз пропатчить tcpip.sys.

Вторая программа — хорошо известный вам твикер xp-AntiSpy. В сервисных опциях у него также есть функция изменения количества соединений.

Патч – что это такое в компьютере, играх и программах, как им пользоваться, что обозначает слово «patch», что значит «пропатчить файл»Скриншот программы xp-AntiSpy
Последнюю русифицированную версию xp-AntiSpy 3.97 от 2008 года можно скачать с офсайта или из прикрепленного файла. Версии на других языках ищите на странице загрузки.

xp-AntiSpy 3.97 (русифицированная версия)

Скриншот программы TCP-Z
Update. Нашел еще одну программу для изменения количества подключений — TCP-Z, последняя версия 2.6.0.66, работает на всех системах до Windows 7 включительно. Кроме патча файла tcpip.sys может выполнять патч драйвера в оперативной памяти. Поэтому если пропатчить файл и данные в памяти, то не понадобится перезагрузка для вступления изменений в силу. Скачать программу и русификатор можно с офсайта. Готовую сборку для x86 с русификатором можно скачать из прикрепленного файла.

Update. Для очень продвинутых специалистов. В следующем приложении текстовый файлик с дизассемблерным листингом файлов srvsvc.dll и srv.sys.

В нем отмечены места для патча в целях снятия ограничений LanConnections в Windows XP Home и Windows XP Pro. Информация взята с уже закрытого сайта antiwpa.tk.

Готовых патчей нет, только теоретическая выкладка, так что придется вносить нужные изменения в файлы вручную.

Источник: https://netall.ucoz.ru/publ/uvelichenie_kolichestva_odnovremennykh_tcp_ip_soedinenij/1-1-0-18

Пропатчить файл

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

1) Учимся патчить.

Патчить будем на примере уязвимости для FreeBSD (http://www.securitylab.ru/vulnerability/368343.php). Качаем оттуда патч (wget http://security.FreeBSD.org/patches/SA-09:05/telnetd.patch). После этого нужно выяснить, куда же его положить, что бы патч прошёл успешно. Для этого можно вывести на экран первые несколько строк:

Смотрим внимательно и видим, какой файл он патчит. Поскольку путь начинается с contrib/telnetто можно предполодить, что файл должен находится в папке /usr/src. Копируем его туда и пробуем патчить:

  • Если после этого у вас на экран вывелось похожее на то, что ниже значит всё удалось. Обычно стоит прочесть, вывод и удостоверится, что всё прошло succeed:
  • Если вдруг патчу не удаётся найти нужный файл, он выдаёт запрос на указания пути вручную:
  • после введения пути:

Хочу заметить, что утилита patch имеет так же параметры, которые можно использовать. Например, довольно позным может оказаться ключ -C (check), который позволяет посмотреть, какие изменения будут произведены с файлом, но не пропатчит.

2) Создание патчей.

обычный

Создание патчей происходит немного сложнее, чем патчить. Для этого берём 2 версии одного и того же файла, помещаем их в разные директории, называем одинаково.

После этого будем пользоваться командой diff для выявления разницы между файлами. Здесь самое главное соблюсти порядок в котором подаются имена файлов.

ИСХОДНЫЙ_ФАЙЛ эталонный файл, ИЗМЕНЁННЫЙ_ФАЙЛ файл, который содержит изменения.

где -u означает унифицированный вывод, то есть с /+++.

После такой операции будет создан файл file.patch, который собственно будет патчем. Файл патча можно так же открыть в текстовом редакторе и подредактировать пути к файлам, если необходимо.

Вот это и всё. Если хотите большего функционала читайте man к указанным здесь бинарникам.

через svn

Расскажу на примере коммита . Это исправление не вышло в качестве патча, зато вошло в коммит 269687. Наша идея такова: делаем diff между 2-мя соседними (нашим 269687 и предыдущим 269686) коммитами и накладываем патч:

  1. Оригинал статьи здесь.

Источник: https://pasmr21.ru/propatchit-fajl/

пропатчить — это… Что такое пропатчить?

Практически каждый разработчик программного обеспечения (ПО), программист или верстальщик сталкивается (и довольно часто) с необходимостью модификации некоторой части рабочего проекта или даже нескольких строк кода.

Особенно это актуально, когда в разработке участвует несколько человек, которые могут вносить правки в разных частях проекта. Для удобства и автоматизации действий по составлению таких правок используются специализированные утилиты.

Одной из таких является утилита patch и о ней более подробно будет рассказано в данной статье.

Содержание

Что такое патч?

Говоря о патчах вкупе с утилитой patch, следует подразумевать, что это касается исключительно текстовых данных. Другими словами, происходит работа с исходными кодами проекта, будь то код C++, PHP, HTML и т. д.

Вообще, все самые «суровые» программисты или разработчики в процессе своей совместной работы над проектом обмениваются исключительно отдельными правками, а не пересылают друг другу актуальные версии проектов целиком.

Сама правка, т. е. текстовые изменения в исходном коде проектов (для одного его файла или сразу для нескольких) и есть патч или «заплатка».

Патч, помимо самих изменений кода содержит также и некоторую служебную информацию, необходимую для правильного «наложения заплатки», т. е. для установки патча.

Таким образом, патч — это текстовый файл определённого формата, содержащий в себе данные и инструкции для приведения конечного файла (или проекта) к нужному или актуальному виду.

Утилита patch умеет быстро и эффективно распоряжаться данными из файла-патча, используя для этого хранящиеся в нём инструкции. И таким образом выполняет все рутинные действия по редактированию. Пользователю (разработчику) необходимо лишь правильно выполнить соответствующую команду, задав все необходимые аргументы и опции.

Синтаксис и основные опции команды patch

Нет ничего удивительного в том, что утилита patch относится к категории ПО, которое обязательно должно быть установлено на любой машине для разработки программ, да и вообще для ведения разработки. Практически любой дистрибутив Linux предоставляет утилиту patch предустановленной по-умолчанию.

Стоит также отметить, что по своей функциональности, patch довольно сложна и обладает, без преувеличения, просто огромным набором опций. По этой причине в данной статье будут приведены только самые распространённые приёмы при работе с этой утилитой и только сопутствующие им опции команд. Синтаксис команды patch следующий:

patch [options] [originalfile] [patchfile]

Здесь originalfile – это файл, который необходимо «пропатчить» до актуального состояния. А patchfile – файл-патч.

Сразу возникает вопрос: а откуда берётся этот файл-патч? Ответ: он генерируется другой утилитой — diff, которая находит построчные различия между файлами. Либо же патч может быть составлен вручную, автором, если он знаком с соответствующим форматом.

Но это бывает крайне редко, обычно прибегают к помощи diff или её аналогов. В следующей таблице приведены опции команды patch, которые используются наиболее часто:

Помещает неудавшиеся (отклонённые) изменения в отдельный файл rejecfile вместо файла .rej по-умолчанию.

Опция Значение
-i patchfile Читает информацию из патч-файла, указываемого параметром patchfile.
-r rejectfile, —reject-file=rejectfile
-N, —forward Когда патч не применяется, то утилита patch обычно пытается определить, выглядит ли ситуация так, как если бы патч уже был применён. Опция -N отключает такое поведение.
-pnum, strip=num Обрезает части пути к файлу, разделяемые символом косой черты до уровня, указанного в параметре num. Например: p0 оставит путь /u/john/src/blurfl/blurfl.cpp неизменным, а p4 обрежет тот же путь до blurfl/blurfl.cpp.
-o outputfile, —output=outputfile Отправляет вывод в указываемый в параметре outputfile файл. Не следует использовать эту опцию, если в качестве outputfile указывается файл, который должен быть пропатчен. Если в качестве outputfile указать символ дефиса «-», то вывод будет направляться в стандартный поток STD_OUT.
-E, —remove-empty-file Удаляет файлы, оказавшиеся пустыми после применения патча. Эта опция имеет смысл, когда используемые патчи имеют не контекстный формат.
—dry-run Печатает результаты применения патча без реальной модификации файлов. Полезно для быстрого и безопасного тестирования патчей.
-R, —reverse Откатывает все изменения (если они возможны), т. е. отменяет установку патча.
-c, —context Интерпретирует файл патча как обычный контекстный формат, генерируемый утилитой diff.
-b, —backup Создаёт резервную копию оригинального файла вместо его удаления.

Применение патчей к отдельным файлам

Прежде, чем начать рассмотрение практических примеров, необходимо сказать несколько слов о той самой утилите, которая и создаёт патчи — diff. Она может генерировать патчи трёх типов — простой, контекстный и контекстный унифицированный.

Простой гораздо более компактный по размеру, чем контекстные, но последние гораздо более удобочитаемы и понятны для восприятия пользователем. Для того, чтобы сгенерировать простой патч, для команды diff никаких специальных опций не требуется.

А для генерации контекстного или унифицированного контекстного патчей предназначены опции -с и -u соответственно:

$ diff oldfile newfile > patch $ diff -c oldfile newfile > contextpatch $ diff -u oldfile newfile > upatch

Пусть имеется файл с кодом C++ ChildClass.cpp:

#include «../include/ChildClass.h» ChildClass::ChildClass() : BaseClass() {     //ctor } ChildClass::ChildClass(char* inputBase[]) : BaseClass(inputBase) { } void ChildClass::valueSqr() {     value *= value; } ChildClass::~ChildClass() {     //dtor }

И пусть в этот файл было внесено следующее изменение: метод valueSqr() был переименован в calcSqr(). Тогда контекстный патч (файл contextpatch) будет выглядеть следующим образом:

*** ChildClass.cpp   2018-11-13 15:13:08.000000000 +0400 — ChildClass_new.cpp    2019-06-04 19:34:41.176769204 +0400 *************** *** 10,16 ****     }   ! void ChildClass::valueSqr()   {       value *= value;   } — 10,16 —-     }   ! void ChildClass::calcSqr()   {       value *= value;   } *************** *** 18,21 ****   ChildClass::~ChildClass()   {       //dtor ! } В конце файла нет новой строки — 18,21 —-   ChildClass::~ChildClass()   {       //dtor ! }

Теперь, чтобы пропатчить старую версию ChildClass.cpp, нужно выполнить команду:

$ patch ChildClass.cpp -i contextpatch -o ChildClass_new.cpp

В результате будет получен файл ChildClass_new.cpp с актуальным содержимым.

Работа с проектами

С помощью утилиты patch можно также применять патчи для нескольких файлов, причём расположенных в разных каталогах. Это удобно, когда изменения проводятся в масштабах целого проекта. Но в этом случае и сам патч должен быть особым образом подготовлен утилитой diff.

Пусть имеется старый проект в каталоге base-project. Внутри него имеются подкаталоги include и src, в которых, в свою очередь находятся файлы с изменениями — ChildClass.h (в каталоге include) и ChildClass.cpp (в каталоге src). Сам изменённый (актуальный) проект был помещён в отдельный каталог new-project. Подготовка патча будет выглядеть следующим образом:

$ diff -r -c ./base-project ./new-project > project-patch

Сгенерированный файл-патч project-patch:

diff -r -c ./base-project/include/ChildClass.h ./new-project/include/ChildClass.h *** ./base-project/include/ChildClass.h   2019-06-04 17:55:15.081868602 +0400 — ./new-project/include/ChildClass.h    2019-06-04 17:56:42.929902111 +0400 *************** *** 9,15 ****       public:           ChildClass();           ChildClass(char* inputBase[]); !         void valueSqr();           virtual ~ChildClass();         protected: — 9,15 —-       public:           ChildClass();           ChildClass(char* inputBase[]); !         void calcSqr();           virtual ~ChildClass();         protected: diff -r -c ./base-project/src/ChildClass.cpp ./new-project/src/ChildClass.cpp *** ./base-project/src/ChildClass.cpp     2019-06-04 16:52:34.884229162 +0400 — ./new-project/src/ChildClass.cpp 2019-06-04 17:57:01.798768449 +0400 *************** *** 10,16 ****     }   ! void ChildClass::valueSqr()   {       value *= value;   } — 10,16 —-     }   ! void ChildClass::calcSqr()   {       value *= value;   } *************** *** 18,21 ****   ChildClass::~ChildClass()   {       //dtor ! } В конце файла нет новой строки — 18,21 —-   ChildClass::~ChildClass()   {       //dtor ! }
$ patch -p0 < project-patch patching file ./base-project/include/ChildClass.h patching file ./base-project/src/ChildClass.cpp

Как видно, вместо ключа -i можно использовать символ « project-patch

Сгенерированный файл-патч project-patch:

diff -r -c -N ./base-project/include/Readme.txt ./new-project/include/Readme.txt *** ./base-project/include/Readme.txt     1970-01-01 04:00:00.000000000 +0400 — ./new-project/include/Readme.txt 2019-06-04 17:25:22.383487767 +0400 *************** *** 0 **** — 1 —- + This is Readme content.

Теперь можно пропатчить проект:

$ patch -p0 -E < project-patch patching file ./base-project/include/Readme.txt

Откат патчей

Если по каким-то причинам патч оказался бесполезен и необходимо вернуться к предыдущей версии файлов (проекта), то можно сделать откат изменений, используя опцию -R:

$ patch -p0 -R < project-patch patching file ./base-project/include/Readme.txt $ patch -p0 --dry-run < patch

При возникновении каких-либо ошибок во время применения патча, утилита patch создаёт файлы *.rej, по которым можно восстановить исходную версию файла. Однако, следует учитывать, что восстановление содержимого файлов таким способом — довольно долгое и нудное занятие. Практичнее создавать резервные копии файлов, указывая в команде patch опцию -b:

$ patch -b -p0 < project-patch

Заключение

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

Не нужно вручную переписывать много кода, когда изменений довольно много. С другой стороны, необходимо использовать данную утилиту с особой осторожностью, чтобы не испортить результаты собственных трудов.

Но это уже фактор, зависящий в большей степени от самого пользователя.

Источник: https://ZTEgid.ru/blog/proshivka/chto-znachit-propatchit-fajl.html

Патч – что это такое в компьютере, играх и программах, как им пользоваться, что обозначает слово «patch», что значит «пропатчить файл»

Во времена, когда для загрузки программ в компьютеры использовались перфокарты или бумажные ленты, разработчики программ распространяли патчи в виде перфокарт с отличным от первоначального набором перфорации или указывали на бумажной ленте места, которые следует изменить. Пользователи заменяли соответствующие перфокарты в стопке или вырезали помеченную часть ленты и вклеивали вместо нее новый кусок программы. Тогда же и возникло название «patch» (англ.patch), буквально – “заплатка”).

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

Виды патчей

Разработчики программного обеспечения публикуют патчи в различной форме.

  • Авторы закрытых программных продуктов скрывают исходные коды, поэтому их патчи распространяются в виде откомпилированных программ. При запуске такой патч самостоятельно выполняет необходимые изменения с нужными файлами программы или полностью заменяет их более новыми.
  • Также патчи могут распространяться в виде списка различий между двумя версиями исходных кодов. Этот тип патчей обычно используется в open source-проектах. При этом предполагается, что пользователи или другие разработчики сами внесут эти изменения и просто соберут программу заново. Существуют специальные утилиты для автоматического создания и применения таких патчей.

Применение

Коротко выполняемые патчами задачи можно описать следующими действиями:

  • исправление обнаруженные за время существования программы недочетов и ошибок;
  • изменение или улучшение работы существующих функций;
  • добавление новых функций и возможностей.

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

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

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

В open source-проектах патчи, исправляющие частные проблемы или добавляющие некоторую функциональность, такую как поддержка других языков, обычно отправляются авторам или публикуются в сети. Например, на ранних стадиях разработки ядра операционной системы — Линус Торвальдс, его автор, получал тысячи писем с патчами к его версии от множества программистов.

Сервер веб-мастерами для добавления функциональности к NCSA HTTPd. По легенде, отсюда и возникло название — означающее, что это есть по сути коллекция патчей: «a patchy server».

Все изменения кода Firefox и других продуктов Mozilla Foundation существуют в виде патчей, которые учитываются с помощью «багов» в системе

Компьютерные игры

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

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

Чтобы сделать невозможным дальнейшее распространение найденной возможности читерства, исправленной с выходом патча, а также избежать конфликта версий, многопользовательские игры часто не допускают к игре игрока, использующего версию игры, отличную от официальной.

Другим примером является защита от копирования. Патч может параллельно внести изменения в систему защиты игры, что может выражаться, например, в невозможности устанавливать последующие патчи и обновления, если установлена “пиратская” версия игры.

Патч встроенного ПО

Во многих устройствах программное обеспечение находится в памяти самого устройства в виде т.н.

прошивки, которая включает в себя сразу и операционную систему, управляющую работой устройства, и собственно набор программ, обеспечивающих выполнение тех или иных его функций.

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

Обычно такой патч состоит из файла, содержащего обновленный программный код в двоичном виде, и специальной программы, записывающей его в память устройства вместо прежней версии. Пример такого вида патчей — перепрошивка БИОСаматеринской платыкомпьютера или современного мобильного телефона, подключенного к компьютеру.

Поскольку по сути перезаписывается не какая-то часть программ или функций, а вся операционная система устройства, любая неожиданная ошибка или вмешательство в процесс перепрошивки (например, выключение питания) могут помешать корректно записать ее до конца, что в свою очередь чаще всего приводит к полной неработоспособности устройства.

Разработка патчей

Зачастую современные программы обновлений могут управлять патчами. Автоматизация всего процесса упрощает задачу конечного пользователя — ему достаточно запустить программу, а та уже решит, нужно ли ставить патчи, и в каком порядке. Бывает и так, что программа скачивает обновления из интернета без участия пользователя.

Такой способ часто применяется в поддержке серверного программного обеспечения и операционных систем. В ситуации, когда администратору приходится следить за несколькими компьютерами такой подход помогает поддерживать надёжность системы в целом. Обычно таким способом происходит установка обновлений безопасности.

Чтобы все изменения, совершаемые патчем, происходили автоматически без участия пользователя существуют специальные утилиты, с помощью которых создают самоустанавливающиеся патчи.

В них записывается информация, какие файлы и должны быть заменены, или какие программы запущены после распаковки, если должны быть изменено содержимое файлов.

Чаще всего полученный таким образом патч представляет собой самораспаковывающийся архив, содержащий обновленные файлы целиком.

Подробнее см. в статье Самораспаковывающийся архив.

Интересные факты

Microsoft Flight Simulator выпустила специальный патч после атак 11 сентября 2001-го на World Trade Center в Нью-Йорке. Из карты города были изъяты башни торгового центра. Это редкий пример патча, выпущенного из уважения к чувствам людей, а не для исправления ошибки в программе или усиления защиты от копирования.

Источник: https://kikoz.spb.ru/chto-oboznachaet-patch/

Как из windows xp сделать терминальный сервер

В этой статье я расскажу как из Xp-шки замутить сервер терминалов. Столкнулся я этой ситуацией когда на операционной системе Windows XP SP3 нужно было подключить пользователя по удаленному рабочему столу.

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

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

Для того чтобы позволить нескольким пользователям работать одновременно по RDP, необходимо соответствующим образом пропатчить файл termsrv.dll — чтобы убрать ограничение Microsoft, наложенное на Windows XP. Перед тем как применять данный патч, убедитесь, что ваши действия не противоречат законодательству и вашему лицензионному соглашению.

Итак, далее предлагается пошаговая инструкция, как сделать Remote Desktop для нескольких пользователей  одновременно:

1) скачать пропатченный файл termsrv.dll для соответствующей версии Windows XP

termsrv_patch.zip (в архиве вы найдете termsrv.dll для следующих версий — Windows XP SP2  5.1.2600.2180 и Windows XP SP3 5.1.2600.5512)

2) если у вас включена защита системных файлов (System File Protection), то  пропатченный файл termsrv.dll необходимо перезаписывать в безопасном режиме (Save Mode).  Для этого перезагрузите компьютер, при загрузке нажмите F8, выберите безопасный режим.

3) переименуйте оригинальный файл termsrv.dll, который находится в директории  C:WindowsSystem32, например так — termsrv_orig.dll

  • 4) скопируйте пропатченный файл termsrv.dll (который вы скачали) в следующие директории
  •      C:WindowsSystem32
  •      C:WindowsServicePackFilesi386 (если директория существует)
  •      C:WindowsSystem32dllcache (если директория существует)

5) пропатчите ключи реестра, запустив файл ts_multiple_sessions.bat, который находится в скачанном архиве. Можете сделать то же самое вручную с помощью regedit.exe:

  1. [HKEY_LOCAL_MACHINESYSTEMControlSet001ControlTerminal ServerLicensing Core]
  2. “EnableConcurrentSessions”=dword:00000001
  3. [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon]
  4. “EnableConcurrentSessions”=dword:00000001
  5. [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon]
  6. “AllowMultipleTSSessions”=dword:00000001
  7. 6) Пуск -> Выполнить -> gpedit.msc -> Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Сервер терминалов-> Ограничить количество подключений
  8. измените значение Ограничить количество подключений на необходимое количество одновременных подключений.
  9. 7) убедитесь что в свойствах системы (Свойства системы -> вкладка Удаленные сеансы) поставлена галочка Разрешить пользователям удаллено подключаться к этому компьютеру
  10. 8) убедитесь что включена опция Быстрое переключение между пользователями (Панель управления -> Учетные записи пользователей -> Изменение входа пользователей в систему)
  11. 9) перезагрузите компьютер
  12. Если вы все выполнили правильно, то теперь у вас должен работать удаленный рабочий стол одновременно для нескольких пользователей.

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

Источник: http://wasidlow.blogspot.com/2013/01/windows-xp.html

Ссылка на основную публикацию