Transformando uma sequencia de binário em executável
Publicado por Geraldo José Ferreira Chagas Júnior 09/04/2009
[ Hits: 8.517 ]
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; }
Manipulação de arquivos CSV - Estruturado
Números de caracteres em arquivo
Cadastor de Produtos em C e metodos ordenação
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Alguma pessoa pode me ajudar com drriver Core i3 7020u (Debian 12)? (2)
Mikrotik não mostra bytes nem packtes (1)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código [RESOLVID... (4)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta