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):
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.
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 😀
Bom dia Mauri,
Obrigado pelo apoio ao blog.
Tem que ser em VM mesmo né, rs…
Abraços e bom fim de semana.
Não seria preciso inserir uma biblioteca para ter acesso ao sistema operacional? #include
Bom dia Junior, tudo bem?
A função system, é uma função nativa do C, portanto não é necessário declarar a utilização de alguma biblioteca.
Abraços.
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.
Boa noite Victor, tudo bem?
É só fazer um laço finito, seja com for ou com while, por exemplo:
Espero ter ajudado.
Abraços.