Как создать пробную версию Java-программы [закрыто]

StackOverflow https://stackoverflow.com/questions/2769384

Вопрос

Я пишу программное обеспечение на Java и я почти закончил, я хотел бы знать, как мы можем создать пробную версию, которая будет работать, например, в течение 30 дней, потому что я отправлю ее некоторым компаниям

итак, как сделать это как условно-бесплатное или пробное программное обеспечение, также можем ли мы заблокировать доступ к .class в файле jar?

Спасибо

Это было полезно?

Решение

Есть продукт под названием Rampart, который позволяет сделать пробную версию для вашего приложения Java. Это занимает всего пару минут, и это работает довольно хорошо.

Вы можете найти его в http://rampartlicensing.com.

Другие советы

Вот идея:

  1. Создайте базу данных (например, база данных SQL Server), которая публично доступна в Интернете. Он будет вести список лицензионных ключей «Пробная версия». Вы можете использовать ту же систему для полномочий лицензионные ключи, когда ваш продукт приобретен.

  2. Когда ваше программное обеспечение Java впервые запускается, это приведет к созданию пробной лицензии, которая будет храниться в базе данных

  3. Программное обеспечение Java проверяет действительную лицензию каждый раз, когда она работает. Дата того, что была создана лицензия, хранится в базе данных, поэтому не имеет значения, на которых установлены клиентские часы.

  4. Программное обеспечение прекращает функционировать, когда лицензия истек

Стандартное программное обеспечение Windows может посмотреть ID CPU и использовать это как часть лицензии, чтобы каждый компьютер мог выполнить только пробное обеспечение только один раз. Кто-нибудь знает, есть ли «JVM ID» какого-то, что можно использовать для этой цели?

Возможно, там уже есть код, связанный с лицензией с открытым исходным кодом?

Почему бы не просто жесткий код истечения срока годности в пробную программу, чтобы вам не нужно продолжать его поддерживать? Вы могли бы поставить это в основной ().

// Die after October 1, 2010
Calendar expireDate = Calendar.getInstance();
// January is 0 (y, m, d)
expireDate.set(2010, 9, 1);
// Get current date and compare
if (Calendar.getInstance().after(expireDate)) {
  // Die
  System.exit(0);
}

Вот как Microsoft распространяет их широкомасштабное бета-программное обеспечение. Они просто дают его срок годности.

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

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

Я бы хотел что-то вроде записи в файл количества миллисекунд, в течение которых программа была впервые установлена в 64-разрядном формате в двоичном формате в файл.И пусть ваш основной класс проверит и применит ограничение по времени.Да, люди могут поменять свои часы, чтобы обойти это, но на самом деле вы все равно не хотите продавать их этим людям.Также убедитесь, что текущее время указано строго в течение 30 дней с момента установки.Большинство пользователей просто переводят свои часы на один год назад, и это работает с большинством программ, потому что они просто проверяют разницу меньше, чем разница.Вы также должны убедиться, что разница в количестве дней от текущего до установки также больше 0.

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

Проблема с попыткой ограничения датов заключается в том, что наивный раствор просто проверки даты легко одурачен, если человек устанавливает свои системные часы. Я работал с парнем, который держал VMware Virtual Box только для ограниченного программного обеспечения с ограниченным временем. Лучшим подходом было бы записать время в последний раз, когда он был запущен, и если время когда-либо идет до этого времени, вы знаете, что часы были настроены, и вы можете прервать. Проблема выясняет, как скрыть этот файл где-то, где пользователь не может найти его перезаписи. Опять же, в среде VMware или Virtualbox пользователь может просто откатиться обратно на более раннее снимок.

Другими словами, вы можете ограничить некоторые из людей одновременно, но не все люди все время.

Я работаю над коммерческим программным обеспечением Java, и оно защищено.

Обучает подключение к интернету приемлемым в вашем случае? В нашем случае наше программное обеспечение имеет смысл только в том случае, если есть подключение к Интернету и, следовательно, мы можем сделать обратный инжиниринг невозможным, просто следуя этой мантре:

Сделать достаточную часть вычисления происходит на стороне сервера

Есть ничего против этого злоумышленника может сделать кроме:

  • Перепишите часть вашего программного обеспечения, которое происходит на стороне сервера

  • Пиратский ваш сервер

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

Подумайте об этом так: никто никогда не удалось играть на Brate.net Blizzard, используя поддельные / сгенерированные лицензионные ключи.

Конечно, пират может попытаться подделать всю битву .Net, но тогда пиратская версия не позволила бы людям играть, скажем, настоящий вау экономика, ни конкурировать на настоящей лестнице Starcraft и т. Д.

Почему никто не удалось сделать это: потому что Blizzard сделала достаточную часть вычисления на стороне сервера.

Достаточная часть вычислений, происходящих на стороне сервера, эффективно означает: "Хорошие игры Пираты".

Чем больше мы переходим к всегда связанному миру, тем легче защищать приложения против пиратства. То же самое для содержания (DRM), к лучшему или худшему.

Я проверяю дату от того, что атомный сервер времени отправит меня в начале в коде. Затем я сравню эту дату с определенной датой. Если атомное время меньше, то System.exit (0).

public static GregorianCalendar getAtomicTime() throws IOException {
    BufferedReader in = null;

    try {
        URLConnection conn = new URL("http://64.90.182.55:13").openConnection();
        GregorianCalendar calendar = new GregorianCalendar();
        conn.setConnectTimeout(1000);
        in = new BufferedReader(new InputStreamReader(conn.getInputStream()));

        String atomicTime;
        while (true) {
            if ((atomicTime = in.readLine()).indexOf("*") > -1) {
                break;
            }
        }
        //System.out.println("DEBUG : " + atomicTime);
        String[] fields = atomicTime.split(" ");

        String[] date = fields[1].split("-");
        calendar.set(Calendar.YEAR, 2000 + Integer.parseInt(date[0]));
        calendar.set(Calendar.MONTH, Integer.parseInt(date[1]) - 1);
        calendar.set(Calendar.DATE, Integer.parseInt(date[2]));

        // deals with the timezone and the daylight-saving-time
        TimeZone tz = TimeZone.getDefault();
        int gmt = (tz.getRawOffset() + tz.getDSTSavings()) / 3600000;
        //System.out.println("DEBUG : " + gmt);

        String[] time = fields[2].split(":");
        calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time[0]) + gmt);
        calendar.set(Calendar.MINUTE, Integer.parseInt(time[1]));
        calendar.set(Calendar.SECOND, Integer.parseInt(time[2]));
        return calendar;
    } catch (IOException e) {
        throw e;
    } finally {
        if (in != null) {
            in.close();
        }
    }
}

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

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

Я рекомендую функциональные очаги. У меня мало поста его примечания программы. Программа работает полностью, но вы можете создать только 10 заметок в незарегистрированном режиме. Поэтому я стараюсь быть приятно пользователю. Нет пределов даты, NAG экраны или что-то еще зло. Только небольшая строка состояния, которая имеет облицовочный текст и кнопку регистрации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top