Сделать патч для программы

Собственно, сабж.
Допустим, я изменил в коде 2ве строчки и не хочу слать заново весь exe-шник.
Как (с помощью чего) можно сделать маленький патч?

  • The Andreyp
  • Постоялец

#1
17:36, 26 июня 2005
#2
18:15, 26 июня 2005

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

#3
19:24, 26 июня 2005

__pt
Посмотри прогу PatchFactory. Вот только разобраться с ней очень трудно 😉

#4
19:26, 26 июня 2005

Всем спасибо, Irek`у особенно 🙂
Сейчас буду смотреть.
Но если кто знает ещё пути, пишите!

#5
19:41, 26 июня 2005

Разбиваешь программу на dll’ки. И при изменении кода, изменяешь необходимую dll.

#6
20:59, 26 июня 2005

имхо, когда делают патч, просто заменяют ехешник новым.

#7
21:22, 26 июня 2005

А мне больше всего нравится PatchWise Free. Сравнивает каталоги и подкаталоги и генерирует патчик.

DIY | Нашивка своими руками | MAKING HANDMADE PATCH

#8
4:47, 27 июня 2005

Cgsg-5
Как вариант, да. Но мне не подходит.
L1f
Как так просто заменяют? А смысл патча тогда? Я о том, что у меня есть большой exeшник, который мне приходится часто исправлять (иногда по мелочам) и пересылать. Это нодоедает, поэтому ищу возможность создания маленького патча, что слать только его.
Terminus
Спасибо! Посмотрю щас. А то PatchFactory от irek`а оказался действительно сложными и непонятным. На первый взгляд, по крайней мере.

#9
9:39, 27 июня 2005

Один из простейших способов — Restorator, но поскольку он изначально создавался для редактирования ресурсов, а не кода, нет гарантии, что патч подойдёт. Хотя это маловероятно.

#10
9:56, 27 июня 2005

__pt
>А смысл патча тогда?
А смысл в том, что как правило, кроме экзешника, который весит, ну пусть 2 мега (это редко такие большие бывают), есть еще всякие другие файлы, картинки, видео, например, звуки, музыка, и все это весит гораздо больше и действительно не изменяется. Вот в чем смысл, чтобы не скачивать заново всю эту лабуду объемную, а только экзешник с исправлениями.
А во-вторых, как правило, делают несколько (15-30) багфиксов и после этого выпускают патч. Если ты будешь выпускать патч после каждой обнаруженной ошибки, тебе пользователи спасибо не скажут, они замаятся качать новые версии.

Читайте также:
Не удается извлечь внешний жесткий диск хотя все программы закрыты

#11
11:31, 27 июня 2005

L1f
>имхо, когда делают патч, просто заменяют ехешник новым.
Bazzilic
>А смысл в том, что как правило, кроме экзешника, который.

Да вы что! Нормальные патчеры анализиуют всю структуру директорий и записывают все изменения во всех файлах в один архив. Это очень удобно, ведь менятся может не только экзешник. Так можно пропатчить какие-нибудь сторонние программы, чтобы всё не переустанавливать, к примеру, для обновления версии.

В этих программах (PatchFactory, PatchWise и многие другие) ничего сложного нет, всё они простые.

Как написать #patch для исполняемого файла

#12
13:34, 27 июня 2005

RMX
PatchWise — действительно прост и понятен, но вот PatchFactory.
Кстати, в PatchWise удивило следующее. Патч для 60кб экзешника (немного изменённого) получился в 44кб. С учётом 2ух бмп: сплэша и того, что слева в визарде. Убрал их: те же 44кб!

#13
14:36, 27 июня 2005

__pt
PatchWise сравнивает файлы, насколько я знаю. И если файл изменен не сильно, но хранит только измененные фрагменты. Единственный его минус — при максимальном уровне сжатия (максимальной дотошности сравнение) очень долго генерирует патч. Хотя разница в размере несущественная 🙂

Да, и еще. Он не умеет удалять файлы, если их нет в новой версии. Вот это в некоторых случаях может быть плохо.

#14
15:22, 27 июня 2005

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

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

Читайте также:
Программа принадлежит ли точка окружности

Источник: gamedev.ru

Сделать патч для программы

Навигация по сайту:

Утилиты
Декомпиляторы Отладчики Анализаторы Дизассемблеры Дамперы HEX-редакторы
Таблица импорта Мониторинг Патчеры Распаковщики Ресурсы Остальное
Патчеры
DZA Patcher v1.3 (54.3 Кб) от DzA [TNT]

Позволяет создавать патчи для программ, упакованных некоторыми пакерами/протекторами

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

Неплохая утилита для создания патчей/loader’ов.

Простой и понятный патчер процессов.

Источник: ahteam.org

Как создать патч

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

Как создать патч

Статьи по теме:

  • Как создать патч
  • Как откатить патч warcraft
  • Как распаковать патч

Вам понадобится

  • — установленная утилита diff.

Инструкция

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

Создайте дубликат файла, подготовленного на первом шаге. Скопируйте его в другую директорию под тем же именем или в текущий каталог, но под другим именем.

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

Ознакомьтесь с информацией по использованию утилиты diff. Запустите эмулятор терминала или переключитесь в консоль. Выполните команду:diff —helpдля вывода встроенной справки. Попробуйте выполнить команды:man diffилиinfo diffдля отображения соответствующих страниц документации, если она установлена. Особое внимание обратите на параметры -a, -c (-C), -e, —normal и -n (—rsc).

Создайте патч. Выполните команду diff с нужными опциями, перенаправив ее вывод в файл. В качестве параметров, следующих после опций, укажите исходный и модифицированный файлы. Простейший пример использования diff для создания патча на основе данных файлов, расположенных в текущем каталоге, может выглядеть так:diff source.txt modified.txt > sample.patch

Читайте также:
Похожие программы на spotify

Просмотрите сформированный патч. Используйте подходящий текстовый редактор или выведите его содержимое в консоль командой cat. Например:cat sample.patchилиcat sample.patch | more

Проверьте корректность созданного файла изменений. Воспользуйтесь командой patch. С помощью опции -i передайте ей путь к патчу. Используйте опцию -o для назначения имени файла результата. Это предотвратит перезапись исходного файла, путь к которому должен быть указан последним параметром.

Например:patch -i sample.patch -o test.txt source.txtСравните сгенерированный файл и тот, который был создан на третьем шаге. Они должны быть идентичными. Запустите команду patch с параметрами —dry-run и —verbose, передав ей предпоследним и последним аргументами имена исходного и патч-файла:patch —dry-run —verbose source.txt sample.patchИзменения в файлы вноситься не будут, но отобразится подробный отчет о действиях, которые были бы произведены при реальном исполнении команды. По нему также можно судить о корректности созданного патча.

Источник: www.kakprosto.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru