Várias pessoas responderam a alguns aspectos da consulta, mas não a todas.
Todos os arquivos nos computadores são armazenados como 1 e 0. Imagens, arquivos de texto, música, aplicativos executáveis, arquivos de objetos etc.
Eles são todos os 0 e 1. A única diferença é que eles são interpretados de maneira diferente, dependendo do que os abre.
Quando você exibe um arquivo de texto usando cat
, o executável ( cat
neste caso) lê todos os 1 e 0 e os apresenta a você, convertendo-os em caracteres do alfabeto ou idioma relevante.
Quando você visualiza um arquivo usando um visualizador de imagens, ele pega todos os 1 e 0 e os transforma em uma imagem, dependendo do formato do arquivo e de alguma lógica para resolver tudo isso.
Os arquivos binários compilados não são diferentes, eles são armazenados como 1 e 0.
A resposta do arzyfex fornece as ferramentas para visualizar esses arquivos de maneiras diferentes, mas a leitura de um arquivo como binário funciona para qualquer arquivo em um computador, assim como visualizá-lo como octal, hexadecimal ou mesmo ASCII, talvez não faça sentido em cada desses formatos.
Se você deseja entender o que um arquivo binário executável faz, é necessário visualizá-lo de uma maneira que mostre a linguagem do assembler (como início), que você pode fazer usando,
objdump -d /path/to/binary
que é um desmontador, pega o conteúdo binário e o converte novamente em assembler (que é uma linguagem de programação de nível muito baixo). objdump
nem sempre é instalado por padrão, portanto, pode ser necessário instalar, dependendo do seu ambiente Linux.
Alguma leitura externa.
Nota: como o @Wildcard indica, é 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, bits individuais de informação que estão em (1) ou desligado (0). Mesmo essa descrição é apenas uma aproximação da verdade. O ponto principal é que, se você encontrar um visualizador que mostre o 1 e o 0, mesmo que ainda esteja interpretando os dados do arquivo e mostrando os caracteres ASCII para 0 e 1. Os dados são armazenados em um formato binário ( veja o link do número binário acima). A entrada no wiki da comunidade de Pierre-Olivier cobre isso com mais detalhes.