Почему EXE в двоичном файле не?

Почему случается так при открытии EXE в Hex-редакторе наблюдением всех видов вещей. Если компьютеры только понимают, что двоичный файл затем не должен там только быть 2 возможными символами, замеченными в файле?Спасибо

9
задан Michael Petrotta 19 March 2010 в 22:43
поделиться

8 ответов

Шестнадцатеричные значения интерпретируются как двоичные значения в памяти. Программное обеспечение только делает его более читабельным для людей.

0000 = 0
0001 = 1
0010 = 2
0011 = 3
0100 = 4
0101 = 5
0110 = 6
0111 = 7
1000 = 8
{{1 }} 1001 = 9
1010 = 10 A
1011 = 11 B
1100 = 12 C
1101 = 13 D
1110 = 14 E
1111 = 15 F

15
ответ дан 4 December 2019 в 05:59
поделиться

Компьютеры не понимают только двоичные файлы, это заблуждение. Да, на самом низком, низком, низком уровне данные в цифровых компьютерах представляют собой последовательность единиц и нулей. Но процессоры компьютеров группируют эти биты вместе в байты, слова, двойные слова, qwords и т. Д. Базовая единица, с которой имеет дело современный процессор, - это двойное слово или qword, а не бит. Вот почему их называют 32-битными или 64-битными процессорами. Если вы хотите заставить их работать с одним битом, вы в конечном итоге включите в него 31 или 63 посторонних бита. (Это становится немного размытым, когда вы начинаете иметь дело с регистрами флагов.)

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

7
ответ дан 4 December 2019 в 05:59
поделиться

Итак, я собираюсь дать здесь ответ непрофессионала. То, что другие предложили выше, правильно, вы можете читать двоичный файл через представление Hex. В любом случае большая часть данных сохраняется в круглых байтах. Возможно, например, Алгоритм сжатия вычисляет сжатое представление в некотором нечетном количестве бит, но он все равно дополняет его до полного байта, чтобы сохранить его. И каждый байт может быть представлен как 8 бит или 2 шестнадцатеричные цифры.

Но, возможно, вы не об этом спрашивали. Вполне вероятно, что вы нашли некоторые данные ascii внутри якобы двоичных данных. Почему? Что ж, иногда код нужен не только для выполнения. Иногда компиляторы включают некоторые биты данных, удобочитаемых человеком, которые могут помочь при отладке, если код выйдет из строя и вам потребуется доступ к трассировке стека. Такие вещи, как имена переменных, номера строк и т. Д.

Не то чтобы мне когда-либо приходилось это делать. В моем коде нет ошибок. Верно.

-1
ответ дан 4 December 2019 в 05:59
поделиться

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

Вы просматриваете исполняемый файл с помощью «шестнадцатеричного редактора», который представляет содержимое с использованием шестнадцатеричных чисел . Это происходит потому, что в шестнадцатеричном формате легче понимать и перемещаться по нему, чем в двоичном (сравните «FA» с «11111010»).

Таким образом, шестнадцатеричный символ «C0» представляет то же значение, что и двоичное «11000000», «C1» == «11000001», «C2» == «11000010» и т. Д.

31
ответ дан 4 December 2019 в 05:59
поделиться

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

Символ A может иметь значение 65. В двоичном формате это 0100 0001 , но на экране это может быть шаблон

   ##
  #  #
  ####
  #  #
  #  #

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

В компьютере все двоичное

2
ответ дан 4 December 2019 в 05:59
поделиться

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

1
ответ дан 4 December 2019 в 05:59
поделиться

Каждый символ (байт) в файле представляет 8 бит (8 единиц или нулей). Вы не видите биты, вы видите байты (и более крупные типы).

1
ответ дан 4 December 2019 в 05:59
поделиться

Не забывайте об операционной системе и дисковой файловой системе. Они могут использовать файлы только в своих форматах. Например, исполняемые файлы в win32 должны начинаться с PE-заголовка. Операционная система загружает исполняемые файлы в память и передает управление, сортирует api-инструкции в исполняемых файлах и так далее... Инструкции низкого уровня исполняет процессор, для этого уровня инструкции уже могут быть наборами байт.

-2
ответ дан 4 December 2019 в 05:59
поделиться
Другие вопросы по тегам:

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