Transformando uma sequencia de binário em executável
Publicado por Geraldo José Ferreira Chagas Júnior 09/04/2009
[ Hits: 8.556 ]
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; }
FileCopy - Copiador de Arquivo de Texto
leitura/escrita de dados/estruturas em arquivo
Leitura de arquivo texto separando as colunas
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Quando fui olhar as logs achei um erro !!! (1)
Servidor said: 530 5.7.0 Must issue a STARTTLS command first (in r... (5)
Esperando a impressora ficar disponível. (0)
Impressora Bematech MP4200TH rorando com a distribuição Zorin OS (0)