Собственно, сабж.
Допустим, я изменил в коде 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
Просмотрите сформированный патч. Используйте подходящий текстовый редактор или выведите его содержимое в консоль командой 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