防止来自其他应用程序的Sendkeys。防止作弊

时间:2014-03-05 14:43:52

标签: java sendkeys

我用一些小游戏编程;挑战是在文本框中键入孔abc并给出使用的时间。

现在我已经内置了一些防止作弊的功能:

像复制粘贴孔abc一样 或者只有abc的中间像bcdefgh ......

如果你研究我的代码,你会看到我只检查第一个字母A,L和Z. A保存开始时间 L防止作弊和复制粘贴只有中间的abc Z检查我放入TextField的孔串。并停止时间。

继承守则:

package lvl1;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class test implements KeyListener {
    private Date start_time;
    private JTextField jtf;
    private JLabel lblStatus;
    private boolean lpressed;

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

    public test() {
        jtf = new JTextField();
        JFrame myframe = new JFrame();
        jtf.addKeyListener(this);
        lblStatus = new JLabel("Zeit:");

        myframe.setSize(700, 60);
        myframe.setTitle("ABC COOLGAME");
        myframe.setLocationRelativeTo(null);
        myframe.setDefaultCloseOperation(myframe.EXIT_ON_CLOSE);

        myframe.setLayout(new GridLayout(1, 2));
        myframe.add(jtf);
        myframe.add(lblStatus);
        myframe.setVisible(true);
    }

    @Override
    public void keyPressed(KeyEvent arg0) {
        if (65 == arg0.getKeyCode()) {
            start_time = new Date();
        }
        if (8 == arg0.getKeyCode()) {
            jtf.setText("");
            jtf.setBackground(Color.WHITE);
        }
        if (76 == arg0.getKeyCode()) {
            lpressed = true;
        }
    }

    @Override
    public void keyReleased(KeyEvent arg0) {
        Date date = new Date();

        if ((90 == arg0.getKeyCode()) & (jtf.getText().equals("abcdefghijklmnopqrstuvwxyz") & (lpressed == true))) {
            lblStatus.setText("Zeit: " + (date.getTime() - start_time.getTime())
                    + " Milliseconds");
            jtf.setBackground(Color.GREEN);
            lpressed = false;
        }
    }

    @Override
    public void keyTyped(KeyEvent e) {/* Nothing to do */} 
}

现在我将Jar文件发送给我的朋友,并且在几分钟内我发现了一条记录为10毫秒的消息。他告诉我,他用vba发送了abc over

Sleep 5000  'Here he click the cursor in my textfield  
SendKeys "abcdefghijklmnopqrstuvwxyz"

此语句将自动发送所有键,与我在键盘上键入的内容相比较。

有人知道一种防止作弊技术的方法吗?

游戏对其他东西的作弊引擎并不安全,但为了防止上面的技术将是惊人的。

0 个答案:

没有答案