我创建了一个实现试用版代码的应用程序。我的代码是
public class Test {
public static void main(String[] args) {
int s = 2013;
int t = 9;
int u = 29;
Calendar expireDate = Calendar.getInstance();
expireDate.set(s,t,u);
if (Calendar.getInstance().after(expireDate)) {
JTextField username = new JTextField();
JTextField password = new JPasswordField();
Object[] message = {
"Username:", username,
"Password:", password
};
int option = JOptionPane.showConfirmDialog(null, message, "Enter your Registration Code here", JOptionPane.OK_CANCEL_OPTION);
if (option == JOptionPane.OK_OPTION) {
String a ="as", b = "sa";
if (username.getText().equals(a) && password.getText().equals(b)) {
System.out.println("Login successful");
JFrame frame = new JFrame("Test");
frame.setVisible(true);
frame.setSize(500, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
frame.add(panel);
JButton button = new JButton("hello agin1");
panel.add(button);
button.addActionListener(new Action1());
JButton button2 = new JButton("hello agin2");
panel.add(button2);
} else {
System.out.println("login failed");
JOptionPane.showMessageDialog(null, "Not Valid");
}
} else {
System.out.println("Login canceled");
System.exit(1);
}
}else{
JFrame frame = new JFrame("Test");
frame.setVisible(true);
frame.setSize(500, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
frame.add(panel);
JButton button = new JButton("hello agin1");
panel.add(button);
button.addActionListener(new Action1());
JButton button2 = new JButton("hello agin2");
panel.add(button2);
}
}
static class Action1 implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
}
每次我过期后打开申请时都必须注册。但我想在注册后再也不会寻找注册码了。请帮忙。
答案 0 :(得分:2)
您无法使用Java中的100%桌面编写一些“可解锁”功能,没有人可以绕过您的安全凭据检查。由于java规范(字节码)很容易反编译独立的应用程序源,禁用限制,重新编译和瞧 - 完整版免费!我打赌你没有使用任何混淆机制吗?好吧,破解它不会是一个问题。
答案 1 :(得分:0)
如前所述,您需要某种持久性机制来跟踪用户在试用时剩余的“时间”。但这完全容易被剥削。
一种更安全的方法,虽然不太健壮,但是将日期对象硬编码为二进制文件的一部分,然后检查用户是否仍在试用窗口内。请记住,每次分发试用版的副本时,此策略都需要某种方式重写硬编码部分。
无论您如何选择,都要确保您拥有某种编码/解码方案,这样用户就无法反编译并拥有您的软件。