Transformando uma sequencia de binário em executável
Publicado por Geraldo José Ferreira Chagas Júnior 09/04/2009
[ Hits: 8.954 ]
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;
}
Programa CONSULTA/ PESQUISA/ ADICIONA/ EXCLUI registros em arquivos
Arquivo com números aleatórios.
Controle de Funcionários (Básico)
Conversão de arquivos texto entre Windows e Linux
Nenhum comentário foi encontrado.
Maquina modesta - a vez dos navegadores ferrarem o usuario
Fscrypt: protegendo arquivos do seu usuário sem a lentidão padrão de criptograr o disco
Faça suas próprias atualizações de pacotes/programas no Void Linux e torne-se um Contribuidor
Resolvendo o bloqueio do Módulo Warsaw no Arch Linux (Porta 30900)
Replicação SYSVOL no Samba 4 com Syncthing
Samba 4 com Replicação e LDAP Seguro (LDAPS/TLS)
Configurando o Cairo Dock individualmente em ambientes diferentes na mesma maquina
Calculadoras online gratuitas para o dia a dia do usuário Linux
Metafísica e espiritualidade funciona de verdade! Comprovação pessoal (13)
Warsaw não é reconhecido no Google Chrome 147.0.7727.55 (6)
Governo da França vai trocar Windows por Linux (8)









