Como ‘travar’ um computador usando a Linguagem C

Olá pessoal…

Hoje irei mostrar como travar um computador utilizando a Linguagem C, lembrando que essa postagem é com cunho estudantil.


Primeiramente pessoal, temos que entender o comando ‘system’ na linguagem C, esse comando é responsável por executar algum comando no terminal do sistema operacional, por exemplo, se eu executar o comando system(“cls”) em ambiente Windows, ele irá executar a limpeza na tela, mas no Linux isso resultará em erro, então em ambientes Linux, teria que utilizar o comando system(“clear”), por exemplo.

A cada comando executado, parte da RAM é reservada para executar esse programa, o que aconteceria se você tivesse um laço infinito abrindo vários programas ao mesmo tempo?… Sua RAM, iria sobrecarregar e o seu PC provavelmente ou iriar reiniciar automaticamente ou travar.

Mas porque ensinar uma forma de fazer isso na Linguagem C?… Simples, ensinar as pessoas a ver como é simples fazer algo complexo com a RAM, e não sair abrindo arquivos executáveis por ai, e até mesmo, desenvolver ferramentas para impedir esses casos, como por exemplo, desenvolver programas, que percebam laços infinitos, e finalizem futuros casos desse tipo (quem sabe alguém aqui não vá trabalhar em uma empresa de anti-vírus).

Vamos ao exemplo:

#include <stdio.h>
 
main(){
  char comando[80]="konsole";
  //laço infinito
  while(1){
    system(comando);
  }
}

No exemplo acima, basicamente, temos uma variável que contém o comando que será executado, nesse exemplo, utilizei o Konsole, porém, poderia ser qualquer comando do SO (Windows: explorer, winword, excel, etc… Linux: k3b, lxdream, etc… Mistos: firefox, gimp, libreoffice, etc…), e esse comando é aberto em um laço de repetição infinito, fazendo com que o programa seja executado sem parar. Abaixo um print do programa rodando em cerca de 3 segundos (sem contar que a CPU também sobe em nível de consumo):

Exemplo de execução

Exemplo de execução

Minha RAM subiu cerca de 3% (de 4GB) em 3 segundos, abriu cerca de 11 janelas.

Bom pessoal, por hoje é só.
Abraços e até a próxima.

Dan_Atilio
Analista e desenvolvedor de sistemas. Técnico em Informática pelo CTI da Unesp. Graduado em Banco de Dados pela Fatec Bauru. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor do projeto Terminal de Informação, onde são postados tutoriais e notícias envolvendo o mundo da tecnologia.

6 Responses

  1. Mauri Francisco do Carmo disse:

    Legal, to aprendendo C e não sabia que o system(“comando”) executava direto no terminal do sistema operacional… Gostei da dica, depois vou executar num VM hehehe 😀

  2. Victor Mattos disse:

    Uma pergunta, e se eu quiser que o programa abra uma quantidade finita de programas? Por exemplo, colocar uma opção para abrir só 20 cmd.exe ou 10 chrome.exe, entende? Estabelecer um limite. Agradeço.

Deixe uma resposta para Mauri Francisco do Carmo Cancelar resposta