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 (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

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 Dan_AtilioCancelar resposta

Terminal de Informação