Java 防止其他应用程序发送密钥。防止作弊
我用一个小java游戏编程;挑战在于在文本框中键入孔abc,并给出所用时间 现在我已经内置了一些防止作弊的功能: 像复制粘贴孔abc 或者只有abc的中间部分像bcdefgh 如果你研究我的代码,你会发现我只检查第一个字母A,L和Z。 A以节省开始时间 L为防止作弊,只复制粘贴孔中间的abc Z检查我在文本字段中输入的孔字符串。停止计时 代码如下:Java 防止其他应用程序发送密钥。防止作弊,java,sendkeys,Java,Sendkeys,我用一个小java游戏编程;挑战在于在文本框中键入孔abc,并给出所用时间 现在我已经内置了一些防止作弊的功能: 像复制粘贴孔abc 或者只有abc的中间部分像bcdefgh 如果你研究我的代码,你会发现我只检查第一个字母A,L和Z。 A以节省开始时间 L为防止作弊,只复制粘贴孔中间的abc Z检查我在文本字段中输入的孔字符串。停止计时 代码如下: package lvl1; import java.awt.Color; import java.awt.GridLayout; import j
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发送过来
Sleep 5000 'Here he click the cursor in my textfield
SendKeys "abcdefghijklmnopqrstuvwxyz"
此语句将自动分别发送所有键,与我在键盘上键入的类似
有人知道防止这种作弊技术的方法吗
游戏不应该对作弊引擎或其他东西安全,但要防止上述技术将是惊人的。我认为你需要从文本字段(即接受键盘事件)改为用户按下a-z按钮。你能准确地说出你的想法吗?据我所知,无法将键盘事件与sendkeys应用程序或普通键盘输入区分开来。因此,你不用输入字母表,而是有一堆标记为a到Z的按钮。你现在可以通过按按钮来“输入”字母表。你的游戏应该有随机文本来玩,而不是硬编码的a到Z。