Простейшая защита десктопной шароварной программы для начинающих
От: BlackEric http://black-eric.lj.ru
Дата: 17.05.17 20:18
Оценка: 2 (1)
Все, кто этим хоть немного интересовался, знают, что существуют специальные программы протекторы и множество покупных средств защиты. Однако у начинающего шароварщика денег — нет. (Иначе чего бы он начинал?) Поэтому защиту приходится писать самим. Я начинал с такой: значения триала шифровал и сохранял в двух местах: в реестре и в ini (config) файле.

Для генерации ключа использовали 2 варианта: любой хеш, скажем от имени пользователя, но это без проблем позволяет сделать кейген взломщику, один раз разобрав алгоритм генерации ключей. Сменить же алгоритм генерации ключей будет весьма проблематично т.к. после этого придется всем ранее купившим пользователям перегенерировать ключи. Второй вариант чуть сложнее, но не позволит сделать кейген. Если же подписать имя пользователя с использованием асимметричной криптографии (RSA), то сделать генератор ключей практически не возможно. Возможно только пропатчить бинарник, но это уже сложнее.

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

И еще правильным советом, наверное, будет начинать откладывать с продаж некоторую сумму на покупку протектора.

Пример реализации на С#, с некоторым количеством комментариев, под BSD3 лицензией на github: https://github.com/BlackEric001/sharewarereg

P.S. Я знаю про FileMon и RegMon и прекрасно понимаю, что все это защита от честного человека, однако, как показывает практика — сломать можно все, но тот же тотал коммандер живет фактически вообще без ограничения триала.
Критика и не затратные улучшения, разумеется, приветствуются.
https://github.com/BlackEric001
Re: Простейшая защита десктопной шароварной программы для начинающих
От: icezone  
Дата: 17.05.17 22:46
Оценка: +2
Здравствуйте, BlackEric, Вы писали:

BE>Возможно только пропатчить бинарник, но это уже сложнее.


чем сложнее? без шифрования кода (или виртуализации) все патчится на ура
первым делом отломают проверку isregistered, если усложните проверку,
то пропатчат ваш публичный ключ в бинарнике и сделают кейген
Re: Простейшая защита десктопной шароварной программы для начинающих
От: Shmj Ниоткуда  
Дата: 18.05.17 01:24
Оценка: +1 -1
Здравствуйте, BlackEric, Вы писали:

BE>Критика и не затратные улучшения, разумеется, приветствуются.


Ну вот взять тот же решарпер за US $ 299.00 /1st year Это вам не $30 а вполне взрослные $300 в год.

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

Те кто покупает -- не будет искать кейгенов. Это люди из разных миров. А те кто ищут кейгены -- один хрен покупать не будут. Всегда есть бесплатная альтернатива.
Re: Простейшая защита десктопной шароварной программы для начинающих
От: uuuser  
Дата: 18.05.17 01:32
Оценка: +2
Здравствуйте, BlackEric, Вы писали:

BE>И еще правильным советом, наверное, будет начинать откладывать с продаж некоторую сумму на покупку протектора.


нет.
Re: Простейшая защита десктопной шароварной программы для начинающих
От: PeterOfLight  
Дата: 18.05.17 07:33
Оценка: +2
Я считаю, что простой защиты не позволяющей создать keygen будет достаточно. То, что везде можно скачать патченный дистрибутив моего продукта меня не беспокоит, т.к. большинство нормальных платежеспособных пользователей из Европы и США не будут качать сомнительные EXE файлы, которые могут быть заражены вирусами.
Re: Простейшая защита десктопной шароварной программы для на
От: wantus  
Дата: 18.05.17 09:48
Оценка:
Всё просто, на самом деле.

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

То есть надо привязывть ключи к параметрам машины.

Привязка к машине обходится двумя способами.

1. С помощью т.н. trainers — оригинальная прога запускается в качестве child process с перехваченными системными вызовами. Когда она читает, скажем, серийник мамы, то ей подсовывается фиксированный ответ, под который куплен (или стырен) реальный ключ. Все проверки в проге проходят и превед.

2. С помощью патчей, которые выключают проверки.

Первый пункт counter'ится привязыванием ключей к десятку или больше системных параметров. Бонусом идет их считывание больше чем одним способом, например, через голые syscalls.

Второй пункт — это то, что затыкается протекторами. Протекторы в большинстве случаев — это major overkill. Такая элементарная вещь, как проверка целостости бинарника через N минут после запуска с последующим shutdown через еще M минут, отбивает охоту ковыряться в программе у большинства "хакеров". Если таких проверок несколько (десятки), равномерно распределенные по коду и времени, то выцепить их все будет сложно. Если часть этих проверок отключать, когда процесс бежит под дебаггером, и насыпать местами разных какашек типа ThreadHideFromDebugger, то процесс ковыряния в бинарнике становится совсем не интересным. Его по-прежнему можно вычистить и сломать, но это требует много времени, которое особо никто на очередной генератор инвойсов тратить не будет.

Задача защиты — это сделать процесс её снятия (экономически) не выгодным. Шифровалки-защищалки — это только один из вариантов.
Отредактировано 18.05.2017 9:50 wantus . Предыдущая версия .
Re[2]: Простейшая защита десктопной шароварной программы для начинающих
От: turbocode  
Дата: 18.05.17 14:36
Оценка:
S>Ну вот взять тот же решарпер за US $ 299.00 /1st year Это вам не $30 а вполне взрослные $300 в год.
Наверное потому что абсолютно бесполезная хрень, которая только тормозит студию.
Re[2]: Простейшая защита десктопной шароварной программы для начинающих
От: BlackEric http://black-eric.lj.ru
Дата: 18.05.17 14:52
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Те кто покупает -- не будет искать кейгенов. Это люди из разных миров. А те кто ищут кейгены -- один хрен покупать не будут. Всегда есть бесплатная альтернатива.


Я придерживаюсь примерно такого же мнения. Ну и прежде чем начнут ломать, нужно добиться популярности продукта. У меня это пока ни разу не получилось
https://github.com/BlackEric001
Re[3]: Простейшая защита десктопной шароварной программы для начинающих
От: Shmj Ниоткуда  
Дата: 18.05.17 15:33
Оценка: +1
Здравствуйте, BlackEric, Вы писали:

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


Кстати, кейгены здорово позволяют достичь популярности. Вот тот же решарпер как было. Приходит чел. в контору и говорит -- а вы что, решарпер не юзаете? А все так на него смотрят, а что это такое? А он, да, ребят, вы не серьезно работаете. Достает флешку а на ней решарпер + сериал-генератор. Всем поставил и официальную версию с ЭЦП (иначе не разрешено) и каждому сгенерил серийник под имя и фамилию -- все чисто.

А уже потом, спустя 10 лет, задумались о покупке официальной. До этого все время на кейганах сидели.
Re[2]: Простейшая защита десктопной шароварной программы для на
От: icezone  
Дата: 18.05.17 16:05
Оценка: +1
Здравствуйте, wantus, Вы писали:

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


Как привязка ключа к машине помогает получить приватный ключ, который нужен для кейгена?
Re[3]: Простейшая защита десктопной шароварной программы для на
От: BlackEric http://black-eric.lj.ru
Дата: 18.05.17 19:04
Оценка:
Здравствуйте, icezone, Вы писали:

I>Как привязка ключа к машине помогает получить приватный ключ, который нужен для кейгена?


Здесь проблема в том, что можно один и тот же ключ вводить на неограниченном числе компов. Для этого и предусмотрен черный список.
https://github.com/BlackEric001
Re[3]: Простейшая защита десктопной шароварной программы для на
От: wantus  
Дата: 18.05.17 19:14
Оценка:
Здравствуйте, icezone, Вы писали:

I>Здравствуйте, wantus, Вы писали:


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


I>Как привязка ключа к машине помогает получить приватный ключ, который нужен для кейгена?


Не понимаю вопрос, сорри.

Стоит, наверное, с терминологией определиться. "Ключ", про который я говорю, это по сути разрешение (лицензия) на использование программы. Если этот "ключ" есть и если он ОК, то в программе, скажем, становится доступным весь функционал / отключаются ограничения. Он может включать в себя цифровую подпись, которая таки делается ассиметричным ключом, но речь не про него.
Re[4]: Простейшая защита десктопной шароварной программы для на
От: icezone  
Дата: 18.05.17 20:54
Оценка: +1
Здравствуйте, BlackEric, Вы писали:

BE>Здесь проблема в том, что можно один и тот же ключ вводить на неограниченном числе компов. Для этого и предусмотрен черный список.


при чем здесь кейген?
от утечки ключа лучше всего помогает онлайн активация

собственно говоря, все эти нюансы здесь обсуждали много раз
Re[4]: Простейшая защита десктопной шароварной программы для на
От: icezone  
Дата: 18.05.17 20:59
Оценка:
Здравствуйте, wantus, Вы писали:

W>Не понимаю вопрос, сорри.


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

От привязки серийника к машине это никак не зависит.
Re[5]: Простейшая защита десктопной шароварной программы для на
От: wantus  
Дата: 18.05.17 21:12
Оценка:
Здравствуйте, icezone, Вы писали:

I>Здравствуйте, wantus, Вы писали:


W>>Не понимаю вопрос, сорри.


I>Это же ты написал, что можно сделать кейген

I>Серийник подписывается приватным ключом и проверяется публичным ключом, зашитым в программу.
I>Чтобы сделать кейген для ассимметрики нужен приватный ключ, который есть только у разработчика.
I>Его можно получить только брутфорсом (не учитываем кривую реализацию).

ОК, понятно. Я не думал, что так кто-то делает. При такой схеме — одна фрод покупка и текущая версия превращается в варез, нет?
Не сильно лучше серийников, которые проверялись по формуле зашитой в программу (собственно чего я и имел в виду).
Re[6]: Простейшая защита десктопной шароварной программы для на
От: icezone  
Дата: 18.05.17 21:40
Оценка:
Здравствуйте, wantus, Вы писали:

W>ОК, понятно. Я не думал, что так кто-то делает. При такой схеме — одна фрод покупка и текущая версия превращается в варез, нет?


после фрода снимается любая защита, все зависит только от востребованности софта

у меня есть один конкурент с простейшей защитой, но у него нет ни одной взломанной версии
почему? потому что часть работы программа выполняет на его сервере
Re[7]: Простейшая защита десктопной шароварной программы для на
От: wantus  
Дата: 19.05.17 11:51
Оценка:
Здравствуйте, icezone, Вы писали:

I>Здравствуйте, wantus, Вы писали:


W>>ОК, понятно. Я не думал, что так кто-то делает. При такой схеме — одна фрод покупка и текущая версия превращается в варез, нет?


I>после фрода снимается любая защита, все зависит только от востребованности софта


Нет, я не о том. Если серийник не привязан к машине, то собственно он и расползается по варез сайтам и потребность снимать защиту в принципе пропадает.
Re[8]: Простейшая защита десктопной шароварной программы для на
От: Kerk Россия  
Дата: 19.05.17 12:08
Оценка: +1
Здравствуйте, wantus, Вы писали:

W>Здравствуйте, icezone, Вы писали:


I>>Здравствуйте, wantus, Вы писали:


W>>>ОК, понятно. Я не думал, что так кто-то делает. При такой схеме — одна фрод покупка и текущая версия превращается в варез, нет?


I>>после фрода снимается любая защита, все зависит только от востребованности софта


W>Нет, я не о том. Если серийник не привязан к машине, то собственно он и расползается по варез сайтам и потребность снимать защиту в принципе пропадает.


В следующем апдейте этот серийник попадает в черный список и всё. Для параноиков можно проверять присутствие серийника в черном списке онлайн, тогда и для текущих версий удастся его заблокировать.
No taxation without representation
Re[9]: Простейшая защита десктопной шароварной программы для
От: wantus  
Дата: 19.05.17 13:48
Оценка:
Здравствуйте, Kerk, Вы писали:

W>>Нет, я не о том. Если серийник не привязан к машине, то собственно он и расползается по варез сайтам и потребность снимать защиту в принципе пропадает.


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


Ну да, вшитый черный список — это всё понятно.

Вы, отцы, как бы missing the point. Все лицензионные схемы с абстрактными серийниками — они способствуют фроду. Вышел апдейт, стырил карточку, выложил серийник и ты — l33t герой. Rinse and repeat.

Вам же приходится следить за варезами, смотреть какие серийники уплыли, чарджбеки оплачивать и апдейты стругать. А оно вам надо?

Привязывание серийника к машине (или машинам) практически в ноль уменьшает фрод, потому как смысл в нем пропадает.

PS. Проверять онлайн — доступ к проверочным серверам отрезается элементарным null route'ом. Не будете же вы требовать этого доступа для запуска программы?
Отредактировано 19.05.2017 13:50 wantus . Предыдущая версия . Еще …
Отредактировано 19.05.2017 13:48 wantus . Предыдущая версия .
Re[10]: Простейшая защита десктопной шароварной программы для
От: BlackEric http://black-eric.lj.ru
Дата: 19.05.17 14:03
Оценка:
Здравствуйте, wantus, Вы писали:

W>Привязывание серийника к машине (или машинам) практически в ноль уменьшает фрод, потому как смысл в нем пропадает.


W>PS. Проверять онлайн — доступ к проверочным серверам отрезается элементарным null route'ом. Не будете же вы требовать этого доступа для запуска программы?


Как его просто привязать? Без онлайн активации программы?
https://github.com/BlackEric001
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.