Значение исправления двоичных файлов?

Проблема происходит также на параллельных логинах, т.е. при попытке смонтировать sshfs при наличии открытой ssh сессии? В противном случае затем я предположил бы, что Вам зашифровали Ваш корневой каталог? В этом случае $HOME/.ssh/authorized_keys только стал бы применимым на удаленной машине после Вашего первого входа в систему (использующий Ваш пароль).

Проверьте https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Troubleshooting для объяснения и необходимого обходного решения.

7
29.07.2011, 10:43
3 ответа

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

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

xxd универсальная утилита для работы с двоичными файлами. Одна из его возможностей состоит в том, чтобы сделать модификации в файле. Например, команда xxd -r - xxd.1 средства применить модификации, описанные на стандартный вход. Патч в качестве примера (т.е. инструкции по модификации) 0000037: 3574 68 средний: запуск при смещении 0x37 (это 55 в десятичном числе), замените следующие три байта 0x35, 0x74 и 0x68 (т.е. эти три символа 5th).

12
27.01.2020, 20:14

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

Части его, которые, как предполагается, перезаписываются, указаны в файле исправления.

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

Прямое редактирование двоичного файла в Hex-редакторе (такой как hexer) иногда называется "ручным" исправлением.

Я не знаком с xxd, но это похоже от предварительного поиска на это xxd может генерировать дамп или шестнадцатеричный список двоичных данных, и может также преобразовать такой список назад в прямой двоичный файл. Таким образом, можно вывести шестнадцатеричное число с xxd, отредактируйте его с vim или другой текстовый редактор, и записывает изменения обратно с xxd -r. Можно также передать его по каналу строковое использование echo в xxd "формат hexdump". (Другие опции позволяют Вам выполнить изменения в двоичном файле. Похож xxd имеет много опций, которые позволяют Вам указать, где запустить и прекратить перезаписывать или исправлять.)

Первая команда в примере в основном говорит xxd изменить байты в файле xxd.1 запуск при смещении 0x0000037 кому: 0x35 0x74 0x68 (ASCII для "5-го"). xxd может считать свой собственный "hexdump" формат и к именно это обеспечивает команда "эха" xxd.

Вторая команда в примере выводит количество (-c) из 13 байтов в файле, запускающемся при том же самом смещении.

patch команда делает подобную вещь, но она хочет файлы в "различном" формате. Можно сделать различный файл путем сохранения вывода diff команда, которая сравнит два файла и выразит различия в упомянутом различном формате. От чтения man страница это похоже на патч, предназначена больше для изменения текстовых файлов, чем прямой двоичный файл.

4
27.01.2020, 20:14

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

Это - всего одно объяснение изменения двоичных приложений.

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

2
27.01.2020, 20:14

Теги

Похожие вопросы