2016-07-10 11 views
2

Прежде всего, это не вирус, который используется для шпионажа или кражи банковских счетов. Я даже не знаю, вообще ли это вирус. Я только сделал это, чтобы троллировать друзей/людей, которых я знаю, и практиковать свои навыки программирования. Я покажу вам код, затем я попытаюсь немного это объяснить;Сделано «вирусом», нужны советы

package pracatice; 

import java.awt.event.*; 

import javax.swing.*; 

public class practice extends JFrame 
{ 
    public static boolean bool = true; 
    public static int x = 0; 
    public static int y = 0; 
    public static int num = 0; 
    public static TimerClass tc = new TimerClass(); 
    public static Timer timer = new Timer(30, tc); 
    public JPanel panel = new JPanel(); 
    public JButton btn = new JButton("press"); 

    public practice() 
    { 
     setSize(100,100); 
     setTitle("Test"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setPanel(); 
     setVisible(true); 
    } 
    public void setPanel() 
    { 
     btn.addActionListener(new listener()); 
     panel.add(btn); 

     add(panel); 
    } 

    public class listener implements ActionListener 
    { 
     public void actionPerformed(ActionEvent e) 
    { 
     num = 0; 
     timer.start(); 
    } 
} 

    public static class TimerClass implements ActionListener 
    { 
     public void actionPerformed(ActionEvent e) 
     { 
      do 
      { 

      num++; 
      JOptionPane optionPane = new JOptionPane("PC afected by virus"); 
      JDialog dialog = optionPane.createDialog(null, "Virus"); 
      dialog.setModal(false); 
      dialog.setLocation(x, y); 
      dialog.show(); 
      updateCordinates(); 
      }while(bool == true); 
     } 
    } 

    public static void updateCordinates() 
    { 
     if(x != 1100) 
      x += 100; 
     else if(x == 1100) 
     { 
      x = 0; 
      y += 50; 
     } 
     if(y == 650) 
      y =0; 


    } 
    public static void main(String[] args) 
    { 
     new practice(); 
    } 
} 

Итак, сначала он, очевидно, строит окно, 100 х 100 пикселей большой. Он добавляет кнопку, которая говорит «нажмите». Когда вы нажимаете, он запускает новый цикл каждые 30 миллисекунд. Каждая итерация цикла, она помещает новый JOPtionPane.showMessageBox(null,...) в несколько другом месте.

Сначала, когда я только что сделал это, я не знал, что это будет невозможно остановить. Я побежал, и мне пришлось перезагрузить свой ноутбук. Когда я нажал ОК, он поместил бы в другую коробку в том же месте. Когда я попытался открыть диспетчер задач, он автоматически минимизирует его и вернется в окно «вирус». Итак, ноутбук был непригодным для использования. Мне пришлось перезапустить его, закрыв некоторые вкладки моих папок ...

Вот несколько вещей, которые я хотел бы узнать;

1) Если я оставил этот прогон в течение ночи, возможно ли, что ноутбук закончился или ОЗУ, и если бы это произошло, что бы произошло?

2) Могу ли я это сделать, когда я нажимаю кнопку на клавиатуре, все это просто закрывается?

Как я уже говорил, я только пытался подшутить над своими друзьями, и программа оказалась не закрывающейся ... советом?

+12

Похоже, ваш вирус работает большой –

+2

Я. спасибо @JeroenVannevel –

+6

* * «какой-нибудь совет?» - Не делай этого. Если вы испортите и нанесете какой-то реальный ущерб ... или заставите кого-то другого нанести себе ущерб ... вы можете столкнуться с большими неприятностями. Придерживайтесь шалостей, где есть вероятность того, что кто-то сгорится. –

ответ

3
  1. Да, компьютер в конечном итоге закончится из ОЗУ. Когда это произойдет, ничего катастрофического не должно произойти, кроме вашей программы.

  2. Не очень легко, потому что окна JOptionPane не позволяют событиям клавиатуры доходить до остальной части программы. Вам нужно будет использовать свой тип окна вместо JOptionPane. Затем вы можете использовать KeyListener, который делает System.exit(0).

+0

Lol это противоположность тому, что сказал другой парень –

+0

Я чувствовал себя обязанным опубликовать ответ, потому что он был совершенно неправ. – tbodt

+0

Ermm ... 1) неверен. По крайней мере, во всех случаях это не гарантируется. Во-первых, вы, вероятно, пополните ** виртуальную ** память ... не RAM. Во-вторых, прежде чем вы заполняете виртуальную память, возможно ли, что система будет вдаваться в виртуальную память. (Это зависит от того, насколько велика куча вашего приложения и какие другие приложения работают.) Когда это произойдет, операционная система может убить другой процесс, а не ваш. OOOPS! –