
Buckminster
(usa Debian)
Enviado em 03/07/2024 - 23:29h
Desculpa a demora.
"É de 64 bits, eu postei apenas um pequeno trechinho onde a palavra ELF é reconhecida. Esse binário em questão é um Hello World em C, compilado com clang."
e
"Aqui vc me deixou em dúvida, o que fiz foi ler o arquivo character por character, acreditando que ele mantenha uma sequência binária, ou seja, que no meio dessa sequência não exista lixos escritos, até porque não faria sentido ter lixos em um arquivo binário"
Vamos lá. Você postou um trechinho... esse trecho que você postou é o trecho do início ou você pegou um trecho qualquer aleatoriamente no meio do arquivo?
Veja bem, um byte são 8 bits (tu sabe disso), então para ler um binário deve-se começar do início, óbvio, senão quebra a sequência do byte.
Sei que tu entendeu, mas para exemplificar melhor:
0111111101"0001010100110001000110000000100000000100000001000010010000000000"00000000000000000000000000000000000000000000000000000000000010000000000011111000000000000000010000000000000000000000001110000000010101
Acima é o trecho que tu colocou.
Vamos que eu pegue aleatoriamente o trecho entre aspas, o que dá 64 0s e 1s, ou seja, 8 bytes, ou mais seja, 8 caracteres:
00010101 00110001 00011000 00001000 00000100 00000100 00100100 00000000
Perceba que comecei após o décimo 0/1 (após as aspas) quebrando a sequência. Caso for ler os bytes acima dará uma coisa que nada tem a ver com o binário.
Por isso coloquei antes que o arquivo deve ser lido como um todo, desde o início até o fim para depois, então, ler-se por trechos.
Não sei se me fiz claro.
O código é mais ou menos esse?
#include <stdio.h>
int main ()
{
printf ("Hello, world\n") ;
return (0) ;
}
e compilou com Clang.
Usou alguma opção na compilação?
_________________________________________________________
Always listen the Buck!
Enquanto o cursor estiver pulsando, há vida!