Вопрос по java – защитить Java-приложение лицензией или ключом [закрыто]

9

Error: User Rate Limit Exceeded

В любом случае, я думаю, ваше приложение может быть взломано, так как все на стороне клиента. nhahtdh
Является ли онлайн-проверка (например, при каждом запуске) опцией? nfechner
@will: на самом деле это не относится к облачным сервисам (ну, если вы не взломаете их, что может заставить людей преследовать вас). nhahtdh
Да, я знаю, купить он не сказал, если это на стороне клиента или на основе облака will
@nhahtdh Но если приложить достаточные усилия, это относится ко всему ... will

Ваш Ответ

3   ответа
21

Это полностью зависит от того, насколько безопасно вы хотите сделать это ...

Проблема с Java в том, что вы можете откомпилировать его обратно. Поэтому, если кто-то захочет, он может загрузить ваше программное обеспечение, откомпилировать его, а затем удалить все средства безопасности, которые вы установили (и затем распространить, если они захотят).

Это только проблема, если вы планируете выходить на массовый рынок и продавать его, а пиратство действительно будет проблемой.

Если вас это не беспокоит, то вы можете пройти онлайн-проверку или проверку в автономном режиме.

Компания, с которой я работаю, использует онлайн-метод; Есть несколько шагов:

РЕДАКТИРОВАТЬ: с тех пор я изменил, как это работает, так как старый способ был кошмаром обслуживания.

  1. A license file
    • (this can contain whatever you want in reality, it just has to be unique per user. Most people normally go with general garb;
    • name
    • company
    • email
    • and then a key. i.e. the JDU8-AJS9-88DF-SASF-ASF9 kind of thing you often see.
  2. The program generates a hash from the license file.
    1. put all the data from the license file into a string
    2. pass the string to a hashing function this page can show you how.
  3. have the program check online (on your server). The data gets encoded in an HTML request (post/get/json/whatever you want) and submitted to your license verification page, which then verifies the data. Included in the data is a randomly generated string, which is used by the verification page to generate another password. This is then returned to the program, which has also used the random string to generate its own password. If the two match, the program starts up.

Чтобы сгенерировать ключи, просто используйте ту же функцию хеширования, а затем загрузите хеш на ваш сервер.

Если вы хотите, чтобы он находился в автономном режиме, вы можете включить хеши в код, который я предполагаю, и проверить их там.

Я должен отметить, однако, что я ни в коем случае не эксперт по безопасности, я просто развиваюсь для компании в качестве кандидата наук. и вот как я это сделал.

Изменить: это изображение может быть полезным:

enter image description here

Второе редактирование:

Теперь я включил & quot; автономную проверку & quot; в процессе. Это на самом деле не проверка в автономном режиме, она просто использует пользователя в качестве прокси-сервера - им нужен доступ к Интернету другим способом.

это работает так:

  1. no internet connection found: supply the user with a 4 digit code
  2. user goes to offline verification page (optimized for mobile use too)
  3. user selects which software they use from the dropdown list
  4. user enters their username (this field remembers entries)
  5. user enters the code the program gave them and submits
  6. webpage provides a 4 digit code, which they then enter into the program, and it starts.
  7. program adds some special data to the license file meaning that this process won't need to be repeated for the next week/month/however long.

каждый раз, когда программа успешно проверяет онлайн, она также добавляет пароль автономного доступа к файлу лицензии, что означает, что она устойчива к временным простоям в Интернете, и перестает работать, только если Интернет не работает более недели / месяца / долго это настроено на работу.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededmachine fingerprintError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
0

это зависит от того, сколько клиентов вы планируете иметь, а также от режима распространения. Вы можете использовать сервер лицензий, но это требует подключения к Интернету для клиента. Вы также можете использовать USB-ключи для управления лицензированием.

Не существует идеальной системы, в которой вам нужно найти компромисс между простотой, усилием и ценой.

1

Вы можете отслеживать лицензирование компьютера с MacIP в Интернете. Даже в Windows вы можете написать в реестре нет API, но все же вы можете сделать это. Найти фрагмент ниже, чтобы прочитать реестр -

public static final String readRegistry(String location, String key){
        try {
            // Run reg query, then read output with StreamReader (internal class)
            Process process = Runtime.getRuntime().exec("reg query " + 
                    '"'+ location + "\" /v " + key);

            StreamReader reader = new StreamReader(process.getInputStream());
            reader.start();
            process.waitFor();
            reader.join();
            String output = reader.getResult();

            // Output has the following format:
            // \n<Version information>\n\n<key>\t<registry type>\t<value>
            if( ! output.contains("\t")){
                    return null;
            }

            // Parse out the value
            String[] parsed = output.split("\t");
            return parsed[parsed.length-1];
        }
        catch (Exception e) {
            return null;
        }

    }

И на уровне класса, если вы хотите, чтобы запутать использоватьProguard .

Как вы можете генерировать отпечатки пальцев компьютера?
ммм достаточно справедливо ...
ну, это действительно ваше дело. Однажды я говорил с компанией, которая занимается их лицензированием, и парень сказал, что они использовали целый ряд вещей, таких как MAC-адрес, сведения об оборудовании, может быть, IP-адрес (но это сильно меняется, так что зависит от того, как хочу, чтобы ваша лицензия работала). Лично я просто отслеживаю различные детали и делаю это довольно неограниченным, но затем проверяю детали время от времени, и если они, кажется, злоупотребляют этим (что еще не произошло), то я их отключаю.
Mac-адреса могут быть легко подделаны, хотя. Если вы хотите пойти по этому пути, более безопасно попытаться создать уникальный компьютерный отпечаток пальца.

Похожие вопросы