Transformando uma sequencia de binário em executável
Publicado por Geraldo José Ferreira Chagas Júnior 09/04/2009
[ Hits: 8.755 ]
Homepage: http://prginfo.blogspot.com
Foi postado anteriormente por mim o programa viewbin que visualizava em binário um arquivo executável. Agora estou postando o inverso, transformar um arquivo com uma sequência de 0 e 1 em um executável.
Eles serão úteis em meu próximo artigo, assim, nós poderemos modificar um executável, transformando-o em binário, alterando seu conteúdo e retransformá-lo em executável.
/* bintoexe.c */ #include <stdio.h> char bitToByte (char* bin); int main (int argc, char* argv[]) { FILE *arq; FILE *arqDest; char buf[2]; char byte[8]; int contBit=0; unsigned int f; if (argc!=3) { printf ("Parametro incorreto.\n"); printf ("Informe o nome do arquivo a ser convertido e o nome do arquivo de destino\n"); return 1; } if (!(arq=fopen(argv[1],"r"))) { printf ("Nao foi possivel abrir o arquivo %s!",argv[1]); return 1; } if (!(arqDest=fopen(argv[2],"wb"))) { printf ("Nao foi possivel criar o arquivo %s!\n",argv[2]); return 1; } while (f=fread(buf,1,1,arq)) { if ((buf[0]=='1') || (buf[0]=='0')) { byte[contBit] = buf[0]; contBit++; if (contBit == 8) { buf[0] = bitToByte (byte); f=fwrite(buf,1,1,arqDest); } } /* o programa ignora qualquer sequencia que seja diferente de 8 zeros ou uns consecutivos */ else { contBit = 0; } } close (arq); close (arqDest); printf ("\n"); } char bitToByte (char* bin) { char r=0; if (bin[0]=='1') r |= 0x80; if (bin[1]=='1') r |= 0x40; if (bin[2]=='1') r |= 0x20; if (bin[3]=='1') r |= 0x10; if (bin[4]=='1') r |= 0x8; if (bin[5]=='1') r |= 0x4; if (bin[6]=='1') r |= 0x2; if (bin[7]=='1') r |= 0x1; return r; }
Codigo para criar arquivo de log
Justificador de texto em 80 colunas
Manipulação de registros em arquivos utilizando índices
FileCopy - Copiador de Arquivo de Texto
Nenhum comentário foi encontrado.
Qt 6.10 e Python 3.14 puxam o ritmo do software livre nesta quarta
Atualizações de Apps, Desktop e Kernel agitam o ecossistema Linux nesta terça-feira
Miyoo Mini Plus + Onion OS (Linux)
IA local no bolso, novo visual no Raspberry Pi OS e mais destaques do software livre
Kernel turbinado, compatibilidade em alta e debate sobre sustentabilidade: o dia no mundo Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Adicionando o repositório backports no Debian 13 Trixie
Como listar os arquivos em "bloquin... [RESOLVIDO] (6)
Como colocar atalho para uma pasta na área de trabalho do Ubuntu 24.04... (2)