Várias pessoas responderam a alguns aspectos da consulta, mas não a todas.
Todos os arquivos em computadores são armazenados como 1's e 0's. Imagens, arquivos de texto, músicas, aplicativos executáveis, arquivos de objetos, etc.
Eles são todos 0's e 1's. A única diferença é que eles são interpretados de forma diferente dependendo do que os abre.
Quando você visualiza um arquivo de texto usando cat
, o executável ( cat
neste caso) lê todos os 1's e 0s e os apresenta a você convertendo-os em caracteres de seu alfabeto ou idioma relevantes.
Quando você visualiza um arquivo usando um visualizador de imagens, ele pega todos os 1's e 0s e os transforma em uma imagem, dependendo do formato do arquivo e de alguma lógica para resolver tudo.
Arquivos binários compilados não são diferentes, eles são armazenados como 1's e 0's.
A resposta da arzyfex oferece as ferramentas para visualizar esses arquivos de diferentes maneiras, mas ler um arquivo como binário funciona para qualquer arquivo em um computador, assim como visualizá-lo como octal, hexadecimal ou ASCII. sentido em cada um desses formatos.
Se você quiser entender o que um arquivo binário executável faz, você precisa visualizá-lo de uma forma que mostre a linguagem assembler (como um começo), o que você pode fazer usando,
objdump -d /path/to/binary
que é um desassemblador, pega o conteúdo binário e o converte em montador (que é uma linguagem de programação de baixo nível). objdump
nem sempre é instalado por padrão, então pode ser necessário instalá-lo dependendo do ambiente Linux.
Alguma leitura externa.
NB: como aponta o @Wildcard, é importante observar que os arquivos não contêm os caracteres 1 e 0 (como você os vê na tela), eles contêm dados numéricos reais, individuais bits de informação que estão em (1) ou off (0). Mesmo essa descrição é apenas uma aproximação da verdade. O ponto chave é que, se você encontrar um visualizador que mostre os 1s e 0s, mesmo que ele ainda interprete os dados do arquivo e mostre os caracteres ASCII para 0 e 1. Os dados são armazenados em formato binário ( veja o link do número binário acima). A entrada wiki da comunidade de Pierre-Olivier aborda isso com mais detalhes.