如何在java中创建试用版?

时间:2013-10-30 09:20:28

标签: java

我创建了一个实现试用版代码的应用程序。我的代码是

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);
    }
}
}

每次我过期后打开申请时都必须注册。但我想在注册后再也不会寻找注册码了。请帮忙。

2 个答案:

答案 0 :(得分:2)

您无法使用Java中的100%桌面编写一些“可解锁”功能,没有人可以绕过您的安全凭据检查。由于java规范(字节码)很容易反编译独立的应用程序源,禁用限制,重新编译和瞧 - 完整版免费!我打赌你没有使用任何混淆机制吗?好吧,破解它不会是一个问题。

答案 1 :(得分:0)

如前所述,您需要某种持久性机制来跟踪用户在试用时剩余的“时间”。但这完全容易被剥削。

一种更安全的方法,虽然不太健壮,但是将日期对象硬编码为二进制文件的一部分,然后检查用户是否仍在试用窗口内。请记住,每次分发试用版的副本时,此策略都需要某种方式重写硬编码部分。

无论您如何选择,都要确保您拥有某种编码/解码方案,这样用户就无法反编译并拥有您的软件。