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

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

FileCopy - Copiador de Arquivo de Texto

leitura/escrita de dados/estruturas em arquivo

BRT - Bulk Renaming Tool

Ler string de um ficheiro

Leitura de arquivo texto separando as colunas


  

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