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 に答える