Transformando uma sequencia de binário em executável

Publicado por Geraldo José Ferreira Chagas Júnior 09/04/2009

[ Hits: 8.645 ]

Homepage: http://prginfo.blogspot.com

Download bintoexe.c




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.

  



Esconder código-fonte

/* 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;
}

Scripts recomendados

gerador de BMPs

Gerenciamento de alunos com dados armazenados em arquivo

Exemplo de manipulação de arquivos

Contando a quantidade de palavras de um arquivo texto

Logger


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts