Как просмотреть двоичный код файла

Обновлено: 30.06.2024

Binary Viewer абсолютно бесплатен.

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

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

Мы надеемся, что ваши поиски завершены: вы нашли инструмент, который искали. В двух словах: Binary Viewer — это бесплатная утилита для Windows, с помощью которой вы можете открыть и просмотреть любой файл, расположенный на вашем компьютере, независимо от того, в каком формате файл был сохранен. Но на самом деле это гораздо больше.

Последние обновления

Binary Viewer может отображать содержимое файлов в двоичном, шестнадцатеричном, восьмеричном, десятичном и текстовом форматах (множество кодировок), что позволяет просматривать двоичные файлы, которые обычно недоступны для просмотра при использовании стандартных средств просмотра/редакторов Windows, таких как Блокнот, Word, Excel. и другие. Файлы обычно используются для сохранения данных и предназначены для интерпретации различными программами. Файлы могут содержать сами программы. В большинстве случаев компьютерные файлы интерпретируются программами или операционной системой должным образом: программные файлы выполняются, файлы данных загружаются программами и визуализируются, превращаясь в изображения, звуки, электронные таблицы данных.

Это хорошо работает, для чего создаются компьютеры, но если вы хотите увидеть, что происходит под капотом, если вы хотите знать, как именно выглядит файл, который Audio Player превращает в красивую музыку, или как выглядит внутренности Audio Player, у вас есть «Binary Viewer».

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

Есть идея? Хотите помочь?

Мы хотим сделать Binary Viewer вашим лучшим и единственным приложением такого типа на вашем рабочем столе. Если вы не видите функций, которые, по вашему мнению, необходимы для ваших нужд, сообщите нам об этом . Многие функции Binary Viewer управляются пользователем. Вы спрашиваете, мы слушаем, и очень часто ваше предложение реализуется в кратчайшие сроки, принося пользу и вам, и другим пользователям. Так что не сомневайтесь - если у вас есть идеи по улучшению программы - дайте нам знать.

Графический интерфейс Binary Viewer поддерживает несколько языков. В настоящее время программа может отображать интерфейсы на английском, китайском, итальянском и польском языках. Если вы хотите стать волонтером и обеспечить перевод на другой язык, пожалуйста, свяжитесь с нами. Мы предоставим вам всю информацию, необходимую для перевода программы.

О средстве просмотра двоичных файлов

Несколько форматов для отображения двоичных данных:

Шестнадцатеричный (группировка 1, 2 байта)

Восьмеричный (1 или 2 байта)

Десятичный (1, 2 или 4 байта)

Текст (Unicode и Unicode с обратным порядком байтов)

Графическое представление данных:

Мощный поиск: с использованием текста, двоичных шаблонов и/или регулярных выражений. Поиск может осуществляться в пределах открытого в данный момент файла или файлов, расположенных во внешней памяти (жестком диске)

Кодирование и декодирование Base64

Английский, китайский, итальянский и польский языки пользовательского интерфейса

Обработка очень больших размеров файлов (до 16 ТБ)

Возможность открывать и просматривать физические диски целиком

Возможность добавлять в закладки диапазоны в открытом файле/устройстве

Поддерживает отображение альтернативного потока данных (ADS)

Простой и интуитивно понятный пользовательский интерфейс

Отображение в два столбца для удобного просмотра одного и того же контента в разных форматах

Позволяет выбирать, копировать и сохранять в файл

Показывает расширенные свойства файла на панели главного окна

Занимает очень мало памяти ( ¹ )

Абсолютно бесплатно ( ² )

( ¹ )Благодаря использованию файлов с отображением памяти только небольшая часть просматриваемого файла находится в оперативной памяти.

( ² )БЕЗ РЕКЛАМНОГО ПО, БЕЗ ШПИОНСКИХ ПРОГРАММ, никаких скрытых "функций".

Как это выглядит?

Зачем мне это нужно?

Скорее всего, вы будете использовать его, чтобы:

Анализ внутреннего формата двоичных файлов

Задачи, связанные с компьютерной криминалистикой

Обратный инжиниринг программ и файлов, сохраненных в собственном файле

Проверка содержимого файлов, недоступных для просмотра другими способами

Сравнить/проверить различия между двоичными файлами

Просмотр альтернативных потоков данных файла

Просмотр расширенных свойств файла

Загрузки

Исполняемый файл установки Binary Viewer (Windows) последней версии

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

Здесь вы можете скачать портативный дистрибутив. После загрузки вам необходимо разархивировать его и скопировать в любое место по вашему выбору. Это может быть даже карта памяти для большей портативности.

Отображать рядом шестнадцатеричный код и его эквивалент ASCII

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

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

Способ 1 (Windows 10): использование командлета PowerShell Format-Hex

Для этого метода требуется PowerShell 5.0 или выше, который предустановлен в Windows 10. Если вы используете более раннюю версию Windows, вместо этого используйте метод 2. (Конечно, вы можете установить PowerShell 5+ и на эти версии, но это противоречит цели ничего не устанавливать.)

Нажмите кнопку меню "Пуск" и введите "powershell" (без кавычек). В верхней части меню появятся слова «Windows PowerShell». Нажмите на нее.

Откроется окно, оставив вас в командной строке с чем-то вроде " PS C:\Users\christopherheng> " прямо перед вашим текстовым курсором. Фактические слова, следующие за «Пользователи\», будут отличаться в зависимости от имени вашей учетной записи Windows.

Перейдите в каталог, содержащий файл, который вы хотите просмотреть. Вы можете изменить каталоги, набрав «cd», а затем полное имя каталога. Например, если вы хотите просмотреть файл в каталоге «c:\Program Files\Windows Mail», введите

Если вы хотите вернуться в каталог по умолчанию, в котором вы находились при первом открытии PowerShell, введите:

Во всех случаях после ввода команды вам нужно будет нажать клавишу ВВОД, прежде чем PowerShell выполнит ваши инструкции.

Как правило, команда для просмотра файла с именем (скажем) «file.exe» — это «format-hex file.exe» (без кавычек). Однако, если вы это сделаете, а ваш файл больше нескольких байт или около того, содержимое будет выброшено на экран одним махом, прокручиваясь с большой скоростью, пока не будет отображен весь файл.

Таким образом, вы, вероятно, захотите отправить вывод в программу под названием «more», которая позволит вам просматривать содержимое по одному экрану за раз. Для этого введите вместо этого следующее:

Как всегда, при работе в командной строке вам нужно будет нажать клавишу ВВОД после команды, прежде чем PowerShell выполнит ваши инструкции. Если в имени вашего файла есть пробелы, заключите его в кавычки, например:

"|" символ, называемый в данном контексте «конвейером», отправляет вывод format-hex как бы через канал (отсюда и название) в другую программу с именем «больше». Последний позволяет пролистывать файл вперед, на один экран или по одной строке за раз.

Вывод формата- hex бинарного файла, как он просматривается в more

Чтобы увидеть следующий экран, нажмите пробел на клавиатуре. Чтобы прокрутить вверх только одну строку, используйте клавишу ENTER. Нет возможности прокрутить назад. Если вам действительно нужно вернуться к предыдущему экрану, один из способов — выйти из программы и повторить команду еще раз. Чтобы прервать программу до того, как вы дойдете до конца файла (например, если вы уже нашли то, что искали, или если вы случайно пролистнули вперед ту часть, которую хотели увидеть, и вам нужно было начать заново), введите «q» (без кавычек), чтобы выйти.

Когда вы закончите, закройте PowerShell, введя "exit" (без кавычек) и нажав клавишу ENTER. Кроме того, вы также можете обычным способом нажать кнопку "x" в правом верхнем углу окна.

Если «Дополнительно» слишком мало для ваших нужд

Несмотря на то, что "больше" обычно полезно для просмотра файла на один экран за раз, если вам нужно несколько раз пролистать страницу вверх и вниз, невозможность прокрутки назад может сильно разочаровать.

В таком случае, возможно, стоит приложить усилия, чтобы сохранить выходные данные, которые создает "format-hex", в виде текстового файла, чтобы вы могли использовать обычный текстовый редактор, такой как Блокнот, для его просмотра.

Для этого используйте следующую командную строку:

При этом создается файл с именем "file.txt", который можно открыть в любом текстовом редакторе. Знак «больше» «>» приводит к перенаправлению (т. е. сохранению) вывода format-hex в файл с именем (в нашем случае) «file.txt». Конечно, вы можете назвать файл как угодно.И "file.exe", и "file.txt" являются лишь примерами.

Затем откройте "file.txt" (или как вы его назвали) в Блокноте или другом текстовом редакторе. Это позволяет вам перемещаться вверх и вниз по выходным данным столько раз, сколько вам нужно.

Способ 2 (Windows 7, 8, 8.1, 10): использование Certutil

Windows 7, 8, 8.1 и 10 (я не знаю о более ранних версиях) поставляются с универсальной программой командной строки под названием certutil, которую можно использовать для создания текстового файла, содержащего шестнадцатеричный код вместе с их текстовым эквивалентом ASCII, если любой.

После этого такой текстовый файл можно просмотреть в любом текстовом редакторе, включая Блокнот, входящий в состав Windows.

Откройте меню "Пуск" и введите "cmd". Вверху должны появиться слова «Командная строка». Нажмите на нее.

Откроется окно командной строки. Вы должны увидеть мигающий текстовый курсор в строке, которая говорит что-то вроде «C:\Users\christopherheng>». Точные слова на вашем компьютере будут другими, так как у вас вряд ли будет то же имя учетной записи Windows, что и у меня.

Перейдите в каталог, содержащий файл, который вы хотите просмотреть. Вы можете изменить каталоги, набрав «cd», а затем полное имя каталога. Например, если вы хотите просмотреть файл в каталоге «c:\Program Files\Windows Mail», введите

Если вы хотите вернуться в каталог по умолчанию, в котором вы находились при первом открытии командной строки, введите:

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

Чтобы просмотреть содержимое (скажем) файла "file.exe", мы сначала заставим certutil сгенерировать временный текстовый файл с именем "file.txt". На самом деле вы можете назвать временный текстовый файл как угодно. Только не давайте ему такое же имя, как у существующего файла, иначе certutil беспечно перезапишет этот файл своими выводами.

Команда для этого:

Как обычно, нажмите клавишу ВВОД после ввода вышеуказанной строки, иначе ничего не произойдет. Если какое-либо из ваших имен файлов содержит пробелы, заключите их в кавычки, например:

Затем программа "certutil" продолжит создание выходного файла. Когда это будет сделано, вы вернетесь обратно в командную строку. Теперь откройте этот файл в Блокноте или другом текстовом редакторе.

Это можно сделать, запустив блокнот обычным способом (например, набрав «Блокнот» в меню «Пуск» и щелкнув появившуюся строку «Блокнот»), затем перейдя к местоположению «file.txt» и открыв его. , или вы также можете сделать это из командной строки с помощью:

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

Когда вы закончите, удалите временный файл, если он вам больше не нужен. Вы можете сделать это обычным способом с помощью проводника или даже из командной строки, набрав " del file.txt ".

Закройте окно командной строки, щелкнув значок "x" в правом верхнем углу или введя "exit" (а затем клавишу ENTER) в командной строке.

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

Он появится на вашей странице как:

Авторское право © 2021, Кристофер Хенг. Все права защищены.
thesitewizard™, thefreecountry™ и HowToHaven™ являются товарными знаками Кристофера Хенга.
Последнее обновление этой страницы состоялось 16 февраля 2021 года.

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

Двоичный редактор позволяет редактировать любой ресурс на двоичном уровне в шестнадцатеричном или ASCII-формате. Вы также можете использовать команду «Найти» для поиска строк ASCII или шестнадцатеричных байтов. Используйте двоичный редактор только тогда, когда вам нужно просмотреть или внести незначительные изменения в пользовательские ресурсы или типы ресурсов, не поддерживаемые средой Visual Studio. Двоичный редактор недоступен в версиях Express.

Чтобы открыть двоичный редактор для нового файла, перейдите в меню «Файл» > «Создать» > «Файл», выберите тип файла, который вы хотите отредактировать, затем щелкните стрелку раскрывающегося списка рядом с кнопкой «Открыть» и выберите «Открыть с помощью» > «Двоичный редактор». . Выпадающий список в диалоговом окне «Новый файл» недоступен в Visual Studio 2019, но доступен в Visual Studio 2022.

Чтобы открыть двоичный редактор для существующего файла, перейдите в меню «Файл» > «Открыть» > «Файл», выберите файл, который хотите отредактировать, затем щелкните стрелку раскрывающегося списка рядом с кнопкой «Открыть» и выберите «Открыть с помощью» > «Двоичный редактор».< /p>


Двоичные данные для диалогового окна, отображаемого в двоичном редакторе

В двоичном редакторе представлены только определенные значения ASCII (от 0x20 до 0x7E).Расширенные символы отображаются в виде точек в разделе значений ASCII на правой панели двоичного редактора. Печатаемые символы — это значения ASCII от 32 до 126.

При использовании двоичного редактора во многих случаях можно щелкнуть правой кнопкой мыши, чтобы отобразить контекстное меню с командами, относящимися к конкретному ресурсу. Доступные команды зависят от того, на что указывает ваш курсор. Например, если щелкнуть правой кнопкой мыши, наведя указатель на двоичный редактор с выбранными шестнадцатеричными значениями, в контекстном меню появятся команды «Вырезать», «Копировать» и «Вставить».

Как

Двоичный редактор позволяет:

Чтобы открыть ресурс рабочего стола Windows для редактирования двоичных файлов

В представлении ресурсов выберите конкретный файл ресурсов, который вы хотите изменить.

Щелкните ресурс правой кнопкой мыши и выберите "Открыть двоичные данные".

Если вы используете окно просмотра ресурсов, чтобы открыть ресурс в формате, который Visual Studio не распознает, например RCDATA или пользовательский ресурс, ресурс автоматически открывается в двоичном редакторе.

Чтобы открыть управляемый ресурс для двоичного редактирования

В обозревателе решений выберите конкретный файл ресурсов, который вы хотите изменить.

Щелкните ресурс правой кнопкой мыши и выберите "Открыть с помощью".

В диалоговом окне "Открыть с помощью" выберите "Двоичный редактор".

Для работы с файлами ресурсов в управляемых проектах можно использовать редактор изображений и двоичный редактор. Любые управляемые ресурсы, которые вы хотите изменить, должны быть связанными ресурсами. Редакторы ресурсов Visual Studio не поддерживают редактирование встроенных ресурсов.

Редактировать ресурс

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

Выберите байт, который хотите изменить.

Клавиша Tab перемещает фокус между шестнадцатеричным разделом и разделом ASCII в двоичном редакторе. Вы можете использовать клавиши Page Up и Page Down для перемещения по ресурсу на один экран за раз.

Введите новое значение.

Значение немедленно меняется как в шестнадцатеричном, так и в ASCII-разделе, и фокус перемещается на следующее значение в строке.

Двоичный редактор автоматически принимает изменения, когда вы закрываете редактор.

Чтобы найти двоичные данные

Вы можете искать строки ASCII или шестнадцатеричные байты. Например, чтобы найти Hello, можно выполнить поиск либо по строке Hello, либо по ее шестнадцатеричному значению 48 65 6C 6C 6F.

Перейдите в меню Правка > Найти.

В поле «Найти» выберите предыдущую строку поиска из раскрывающегося списка или введите данные, которые вы хотите найти.

Выберите любой из параметров поиска и выберите «Найти далее».

Чтобы создать новый пользовательский ресурс или ресурс данных

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

Создайте файл .rc, содержащий пользовательский ресурс или ресурс данных.

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

В обозревателе решений щелкните правой кнопкой мыши RC-файл вашего проекта и выберите Ресурсы включают.

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

Нажмите "ОК", чтобы сохранить изменения.

Еще один способ создать пользовательский ресурс — импортировать внешний файл в качестве настраиваемого ресурса, см. раздел Как управлять ресурсами.

Насколько я понимаю, компилятор создает двоичный файл, состоящий из 1 и 0, который может прочитать ЦП. У меня есть двоичный файл, но как его открыть, чтобы увидеть 1 и 0, которые там есть? Текстовый редактор говорит, что не может его открыть.

P.S. У меня есть скомпилированный двоичный файл, который должен быть простым двоичным кодом из 1 и 0?

нет - OP указал "двоичный файл, скомпилированный сборкой". Это не решает вопрос. Например, это не музыкальный файл, и у него есть структура. Если OP не предоставляет дополнительную информацию, можно начать с неструктурированного инструмента.

Смотрите мой ответ. И имейте в виду, что термин «двоичный файл» на практике используется двумя совершенно разными способами: «Двоичный файл» означает файл, контекст которого не является чистым ASCII-текстом. "Двоичное число" означает число, записанное в двоичной форме.

@mazs ASCII? Я думаю, что UTF-8 более вероятен или какая-то кодовая страница, если программа думает, что она закодирована таким образом с помощью huristics.

11 ответов 11

если, конечно, вы не хотите его редактировать. Большинство дистрибутивов Linux имеют шестнадцатеричный дамп по умолчанию (но, очевидно, не все).

Обновить

xxd работает как с двоичным, так и с шестнадцатеричным кодом

Для bin:

Для hex:

Разные люди ответили на некоторые аспекты запроса, но не на все.

Все файлы на компьютерах хранятся как 1 и 0.Изображения, текстовые файлы, музыка, исполняемые приложения, объектные файлы и т. д.

Все они 0 и 1. Разница лишь в том, что они интерпретируются по-разному в зависимости от того, что их открывает.

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

Когда вы просматриваете файл с помощью средства просмотра изображений, оно берет все 1 и 0 и превращает их в изображение в зависимости от формата файла и некоторой логики для обработки всего этого.

Скомпилированные двоичные файлы ничем не отличаются, они хранятся как 1 и 0.

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

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

objdump -d /path/to/binary

который является дизассемблером, он берет двоичное содержимое и преобразует его обратно в ассемблер (это язык программирования очень низкого уровня). objdump не всегда устанавливается по умолчанию, поэтому может потребоваться установка в зависимости от вашей среды Linux.

Некоторое внешнее чтение.

NB: как указывает @Wildcard, важно отметить, что файлы не содержат символов 1 и 0 (как вы видите их на экране), они содержат фактические числовые данные, отдельные биты информации, которые либо (1) или выключено (0). Даже такое описание является лишь приближением к истине. Ключевым моментом является то, что если вы найдете средство просмотра, которое показывает вам 1 и 0, даже оно все еще интерпретирует данные из файла, а затем показывает вам символы ASCII для 0 и 1. Данные хранятся в двоичном формате ( см. ссылку «Двоичный номер» выше). Более подробно об этом рассказывается в вики-записи сообщества Пьера-Оливье.

Tux с фоном двоичного кода

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

Linux предоставляет богатый набор инструментов, которые упрощают анализ двоичных файлов! Какой бы ни была ваша должность, если вы работаете с Linux, знание основ этих инструментов поможет вам лучше понять вашу систему.

В этой статье мы рассмотрим некоторые из самых популярных из этих инструментов и команд Linux, большинство из которых будут изначально доступны как часть вашего дистрибутива Linux. Если нет, вы всегда можете использовать менеджер пакетов для их установки и изучения. Помните: чтобы научиться использовать правильный инструмент в нужном случае, нужно много терпения и практики.

Что делает: помогает определить тип файла.

Это будет отправной точкой для бинарного анализа. Мы работаем с файлами ежедневно. Не все является исполняемым типом; существует широкий спектр типов файлов. Прежде чем начать, вам нужно понять тип анализируемого файла. Является ли это двоичным файлом, файлом библиотеки, текстовым файлом ASCII, видеофайлом, файлом изображения, PDF-файлом, файлом данных и т. д.?

Команда file поможет вам определить точный тип файла, с которым вы имеете дело.

Что он делает: печатает зависимости общих объектов.

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

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

Как узнать, от каких библиотек зависит исполняемый файл? Вот где на сцену выходит команда ldd. Запуск его для динамически связанного двоичного файла показывает все его зависимые библиотеки и их пути.

трассировка

Что делает: трассировщик вызовов библиотеки.

Теперь мы знаем, как найти библиотеки, от которых зависит исполняемая программа, с помощью команды ldd. Однако библиотека может содержать сотни функций. Какие из этих сотен функций используются нашим двоичным файлом?

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

Hexdump

Что он делает: отображает содержимое файла в ASCII, десятичном, шестнадцатеричном или восьмеричном формате.

Часто случается так, что вы открываете файл в приложении, которое не знает, что делать с этим файлом. Попробуйте открыть исполняемый файл или видеофайл с помощью vim; все, что вы увидите, это тарабарщина, выброшенная на экран.

Открытие неизвестных файлов в Hexdump поможет вам увидеть, что именно содержится в файле. Вы также можете просмотреть ASCII-представление данных, присутствующих в файле, используя некоторые параметры командной строки. Это может помочь вам понять, что это за файл.

строки

Что он делает: печатает строки печатных символов в файлах.

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

При разработке программного обеспечения к нему добавляются различные текстовые/ASCII-сообщения, например информационные сообщения для печати, информация об отладке, справочные сообщения, сообщения об ошибках и т. д. Если вся эта информация присутствует в двоичном файле, она будет выведена на экран с помощью строк.

прочитать

Что он делает: отображает информацию о файлах ELF.

ELF (формат исполняемых и связываемых файлов) — это основной формат исполняемых и двоичных файлов не только в Linux, но и во многих системах UNIX. Если вы использовали такие инструменты, как команда file, которая сообщает вам, что файл находится в формате ELF, следующим логическим шагом будет использование команды readelf и ее различных параметров для дальнейшего анализа файла.

При использовании readelf может быть очень полезно иметь под рукой ссылку на актуальную спецификацию ELF. Вы можете найти спецификацию здесь.

обждамп

Что делает: отображает информацию из объектного файла.

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

Утилита objdump считывает двоичный или исполняемый файл и выводит на экран инструкции на языке ассемблера. Знание ассемблера имеет решающее значение для понимания вывода команды objdump.

Помните: язык ассемблера зависит от архитектуры.

трассировка

Что делает: отслеживает системные вызовы и сигналы.

Если вы использовали ltrace, о котором упоминалось ранее, подумайте, что strace похож на него. Единственное отличие состоит в том, что вместо вызова библиотеки утилита strace отслеживает системные вызовы. Системные вызовы — это то, как вы взаимодействуете с ядром для выполнения работы.

Для примера, если вы хотите что-то напечатать на экране, вы будете использовать функцию printf или puts из стандартной библиотеки libc; тем не менее, под капотом, в конечном счете, будет сделан системный вызов с именем write, который фактически напечатает что-то на экране.

Что он делает: выводит список символов из объектных файлов.

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

Для демонстрации nm мы быстро напишем небольшую программу и скомпилируем ее с параметром -g, а также увидим, что двоичный файл не удаляется с помощью команды file.

Что он делает: отладчик GNU.

Ну, не все в двоичном файле можно анализировать статически. Мы выполнили некоторые команды, которые запускали двоичный файл, такие как ltrace и strace; однако программное обеспечение состоит из множества условий, которые могут привести к выполнению различных альтернативных путей.

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

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

Обратите внимание, что как только вы загрузите программу с помощью gdb, вам будет представлена ​​ее собственная (gdb) подсказка. Все дальнейшие команды будут выполняться в этой командной строке gdb, пока вы не выйдете.

Мы воспользуемся программой "hello", которую мы скомпилировали ранее, и воспользуемся gdb, чтобы посмотреть, как она работает.

Заключение

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

Как найти файлы в Linux

Как работает Hexdump

Hexdump помогает исследовать содержимое двоичных файлов. Узнайте, как работает hexdump.

Двоичный код на экран компьютера

Выполните команду для двоичных файлов с помощью этого скрипта

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

Читайте также: