1

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

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

每次我在过期后打开应用程序时都必须注册。但我希望注册后不再寻找注册码。请帮忙。

4

2 回答 2

2

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

于 2013-10-30T09:32:30.187 回答
0

如前所述,您需要某种持久性机制来跟踪用户在试用中还剩下“多少时间”。但是,这完全容易被利用。

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

不管你选择如何做,确保你有某种编码/解码方案,这样用户就不能只是反编译并拥有你的软件。

于 2013-10-30T09:34:34.010 回答