Какие знания вам нужны для создания патча для вашей игры или приложения?

Меня всегда удивляло, как поставщики программного обеспечения могут выпускать свои приложения или игры, а затем предоставлять другой набор исполняемых файлов, которые изменяют поведение предыдущей сборки. Как это делается? Должны ли оригинальное приложение и патч соответствовать какому-то правилу? Или патч лезет в исходный исполняемый файл и меняет информацию о его сборке? Потребуется ли для этого знание двоичного файла на уровне байтов?


person Haoest    schedule 26.10.2008    source источник


Ответы (2)


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

person Robert Gamble    schedule 26.10.2008

Я подозреваю, что в большинстве случаев «заплатки» — это просто заменяющие файлы.

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

person Andru Luvisi    schedule 26.10.2008