Главная Файлы Форум Галерея Гостевая книга Обратная связь Карта сайта Поиск
 

 

Моё место работы

СитиСервис
  • Заправка и ремонт лазерных картриджей
  • Ремонт любых принтеров и копиров
  • Оригинальные и совместимые картриджи
  • Доставка бесплатно (от 2-х картриджей)
  • Накопительная система расчётов для корпоративных клиентов
Телефон
+7 (4722) 373-983
8-980-326-01-23
Адрес E-mail
mybelpost@gmail.com

Привет, Гость

Войти
Идентификация
Я забыл свой пароль
Регистрация

Разделы -> Статьи -> Linux - разное -> Патчим бинарный файл...

Патчим бинарный файл под Linux

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

Оговорка: все действия производились под Debian GNU/Linux 7.8 Wheezy i386.
Принимающая патчь сторона имеет операционку с таким же набором ПО.

Подготовка

Устанавливаем необходимые для работы приложения (командуем от root из терминала):

apt-get install diffutils vim-common patch

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

Создание патча для бинарного файла и наложение патча на бинарный файл

1. Создаём шестнадцатеричное текстовое представление оригинального бинарника

xxd ./orig_bin ./origbin.hex

2. Создаём шестнадцатеричное текстовое представление изменённого бинарника

xxd ./izm_bin ./izmbin.hex

3. Теперь создаём патч к оригинальному origbin.hex

diff -u ./origbin.hex ./izmbin.hex > ./origbin.patch

4. Накладываем патч

patch ./origbin.hex < ./origbin.patch

5. Преобразовываем пропатченный шестнадцатеричный код в двоичный

xxd -r ./origbin.hex ./origbin

Всё! У нас изменённый origbin

Какие пункты из пяти выполняю я на своей стороне?

-Я выполняю пункты 1, 2, 3 и отсылаю origbin.patch электронной почтой.

Получивший этот origbin.patch должен выполнить пункты 1, 4 и 5.

PS: Для того, чтобы убедиться, что у получившего патч всё получилось так как надо, можно ему выслать ещё и файл с контрольной суммой финального бинарника.
К примеру md5.

Создаём файл контрольной суммы

md5sum ./izmbin > ./izmbin.md5sum

Отсылаем izmbin.md5sum вместе с origbin.patch

Получивший эти файлы выполняет пункты 1,4 и 5, а после этого сверяет контрольные суммы командой

md5sum --check ./izmbin.md5sum ./orig_bin

Т.е. сверяет контрольную сумму, уже пропатченного на своей стороне, orig_bin



Опубликовано: Константин, Автор/источник: Сакрюкин К.В. 20 Апрель 2015 20:18:29

Комментировать

Вы не залогинены! Регистрация

Афоризмы, мысли

Линус Торвальдс во многом похож на Билла Гейтса они примерно одного роста.

/IT индустрия/

Счётчик

Сейчас на сайте - 1 (0 зарег.)
Всего хитов7783 
Сегодня хитов7783 
Сегодня хостов1032 

Откуда гости наши?

 
Powered by ReloadCMS 1.5.0.
© 2004-2012 ReloadCMS Team
RSS AggregationPHP powered
Генерация страницы: 0.39
  Яндекс.Метрика
    Сакрюкин К.В.   Яндекс цитирования    
 
Здесь всё можно копировать и цитировать, но рабочая ссылка на мой сайт обязательна!