Нашел патч для своей программы.
Насколько это может повлиять на продажи? Патч лежит на narod.ru в виде отдельного бинаря. Многие ли готовы рискнуть и скачать патч с сомнительного источника заради выгоды $19.95? Наверное нет.
Тем не менее начал немножко кипишить. Почитал Криса Искусство дизас-ия стало грустно, слишком многое надо учесть и слишком много сил потратить на защиту такой недорогой программы. Посмотрел цены на vmprotect (+vmpKit) тоже не мой вариант.
Родилась идея сделать демо версию и физически выбросить куски кода. Но не придумал как быть с обновлениями, да и пользователи не обрадуются, что после покупки надо скачивать полную версию.
Программа написана на Qt, ничем не запакована, не обфусцирована, серийники шифруются и сравниваются по хэшу. В паче тупо пропатчена функция IsCodeValid() и всегда возвращает true. В raw mode в бинарнике просматриваются не только текстовые строки, но и все слоты и сигналы, спасибо Qt.
Поэтому возникла мысль немного усложнить защиту самостоятельно. Размазать число проверок по каждой кнопке. Создать много неидентичных функций проверок кода. Верно мыслю?
Здравствуйте, Qt-Coder, Вы писали:
QC>Нашел патч для своей программы. QC>Насколько это может повлиять на продажи? Патч лежит на narod.ru в виде отдельного бинаря. Многие ли готовы рискнуть и скачать патч с сомнительного источника заради выгоды $19.95? Наверное нет. QC>Тем не менее начал немножко кипишить. Почитал Криса Искусство дизас-ия стало грустно, слишком многое надо учесть и слишком много сил потратить на защиту такой недорогой программы. Посмотрел цены на vmprotect (+vmpKit) тоже не мой вариант. QC>Родилась идея сделать демо версию и физически выбросить куски кода. Но не придумал как быть с обновлениями, да и пользователи не обрадуются, что после покупки надо скачивать полную версию. QC>Программа написана на Qt, ничем не запакована, не обфусцирована, серийники шифруются и сравниваются по хэшу. В паче тупо пропатчена функция IsCodeValid() и всегда возвращает true. В raw mode в бинарнике просматриваются не только текстовые строки, но и все слоты и сигналы, спасибо Qt. QC>Поэтому возникла мысль немного усложнить защиту самостоятельно. Размазать число проверок по каждой кнопке. Создать много неидентичных функций проверок кода. Верно мыслю?
Поиграться можно, но не слишком увлекаться. Или купить, или забить — я имею ввиду какую-то навесную нормальную защиту. Но ни в коем случае не посередине. Не стоит сильно кипяшить. Чуток усложнить и рамазать проверки можно, но не сильно замарачиваться.
Здравствуйте, Carc, Вы писали:
C>Поиграться можно, но не слишком увлекаться. Или купить, или забить — я имею ввиду какую-то навесную нормальную защиту. Но ни в коем случае не посередине. Не стоит сильно кипяшить. Чуток усложнить и рамазать проверки можно, но не сильно замарачиваться.
Минусы навесной защиты — false positive от антивирей, медленная работа, глюки в неожиданных местах, это все справедливо в середине второго десятилетия 21-го века? И может ли версия VmProtect Lite ($149) спасти положение?
Здравствуйте, Submitter, Вы писали:
S>Объясните плз в двух словах как она работает эта "навесная защита"? Почему от антивирей ложное срабатывание?
Тут есть автор vmProtect, думаю он лучше объяснит. Но в общих чертах — эвристические алгоритмы находят подозрительной деятельность протекторов.
Здравствуйте, Qt-Coder, Вы писали:
QC>Здравствуйте, Carc, Вы писали:
C>>Поиграться можно, но не слишком увлекаться. Или купить, или забить — я имею ввиду какую-то навесную нормальную защиту. Но ни в коем случае не посередине. Не стоит сильно кипяшить. Чуток усложнить и рамазать проверки можно, но не сильно замарачиваться.
QC>Минусы навесной защиты — false positive от антивирей,
А вот false positive можно поймать, но с VMP их немного, да и то от одних и тех же всегда.
QC> медленная работа, глюки в неожиданных местах, это все справедливо в середине второго десятилетия 21-го века?
Нет, несправедливо. QC> И может ли версия VmProtect Lite ($149) спасти положение?
Вполне.
Здравствуйте, Submitter, Вы писали:
QC>>Ищу работу на C++/Qt.
S>А что так? Шаровара на прёт?
Одно другому не мешает. У меня есть обязательства перед турецким султаном поэтому пока так.
Здравствуйте, Qt-Coder, Вы писали:
QC>Нашел патч для своей программы. QC>Насколько это может повлиять на продажи? Патч лежит на narod.ru в виде отдельного бинаря. Многие ли готовы рискнуть и скачать патч с сомнительного источника заради выгоды $19.95? Наверное нет. QC>Тем не менее начал немножко кипишить. Почитал Криса Искусство дизас-ия стало грустно, слишком многое надо учесть и слишком много сил потратить на защиту такой недорогой программы. Посмотрел цены на vmprotect (+vmpKit) тоже не мой вариант.
Здравствуйте, Qt-Coder, Вы писали:
QC>Нашел патч для своей программы.
QC>Поэтому возникла мысль немного усложнить защиту самостоятельно. Размазать число проверок по каждой кнопке. Создать много неидентичных функций проверок кода. Верно мыслю?
Когда-то давно(во времена Softice) писал кряки и свою навесную защиту от копирования. Если ты просто размажешь проверки по коду, то программу сломают не за 1 минуту в Far, а за 5 отладчике/дизассемблере. Помочь может только навесная шифрующая защита. Она тоже снимается, но если кроме защиты и правда размазать проверки, переименовать функции и пошифровать строки, связанные с серийником, то для небольшой программы может быть достаточно. Раньше помню был ASProtect, сейчас не подскажу что распространено.
Еще зависит от области программы. Если для программистов, то думаю, что сломают в любом случае.
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Здравствуйте, Qt-Coder, Вы писали:
QC>Родилась идея сделать демо версию и физически выбросить куски кода. Но не придумал как быть с обновлениями, да и пользователи не обрадуются, что после покупки надо скачивать полную версию.
Мы так и делаем. Даже для этого сервис написали, который сейчас всем рекомендуем: UberFiles
Как раз позволит вам автоматом давать пользователям скачать полную версию программы (и обновления). Хелпдеск и суппорт-форум как бонус
Здравствуйте, Qt-Coder, Вы писали:
QC>Нашел патч для своей программы. QC>Программа написана на Qt, ничем не запакована, не обфусцирована, серийники шифруются и сравниваются по хэшу. В паче тупо пропатчена функция IsCodeValid() и всегда возвращает true.
Быстро и дешево — оставь IsCodeValid() как есть и добавь кусок кода, который через N минут после запуска считает хэш бинарника, и складывает его куда-то в хипе. Потом добавь еще кусок, который через M минут после этого сравнивает хэш с кошерным значением и записывает 1 в переменную (foo), если хэш совпал, и 0 — если нет. Заинициализируй foo=1. Finally, заведи таймер, который раз в сколько-то минут будет делать что-то вроде как полезное и в процессе будет делить что-то на foo.
Результат — если в бинарнике поковырялись, то через N + M + epsilon минут прога будет вылетать с делением на ноль. Отследить причину, особенно если N и M — в районе нескольких часов, будет сложно, и для тех кто скачал крякнутую версию это будет выглядеть как халтурный кряк.
Здравствуйте, Qt-Coder, Вы писали:
QC>Нашел патч для своей программы. QC>Насколько это может повлиять на продажи? Патч лежит на narod.ru в виде отдельного бинаря. Многие ли готовы рискнуть и скачать патч с сомнительного источника заради выгоды $19.95? Наверное нет.
Обычно нужно не чтобы кряков не было (они все равно будут, если продукт востребован), а чтобы их было трудно найти. Так что куда эффективнее в таких случаях жаловаться поисковикам. Если гугл исключит эту страницу narod.ru из выдачи, пусть там хоть десять кряков лежит.
Здравствуйте, wantus, Вы писали:
W>Результат — если в бинарнике поковырялись, то через N + M + epsilon минут прога будет вылетать с делением на ноль. Отследить причину, особенно если N и M — в районе нескольких часов, будет сложно, и для тех кто скачал крякнутую версию это будет выглядеть как халтурный кряк.
Скорее это будет выглядеть как глючное поделие, за которое и 20 баксов жалко.
ИМХО, ни в коем случае нельзя искусственно добавлять баги.
Особенно смешно будет если из-за глюка системы защиты эти же баги увидят и легальные пользователи.
Но сама мысль с разносом проверок во времени вполне здравая. Сделать легко, а отследить сложно.
У вас классический триал с ограничением по времени?
Дополнительные проверки добавить можно, но крякеры (многие) народ упорный и честолюбивый, так что это вопрос времени.
Более надёжна в плане взлома функционально-ограниченная версия. Тут гораздо больше вариантов защиты. Смысл в том чтобы в ключе было что-то, что необходимо для выполнения защищённого кода. Например, для расшифровки или порядка выполнения функций защищённой операции.
Здравствуйте, Qt-Coder, Вы писали:
QC>Поэтому возникла мысль немного усложнить защиту самостоятельно. Размазать число проверок по каждой кнопке. Создать много неидентичных функций проверок кода. Верно мыслю?
я не знаю почему выше все такие умные, но раньше эта тема много раз обсуждалась,
главное что нет и нельзя сделать кейген, а на всё остальное просто забей,
человек который лезет на narod.ru(и ему подобные) за кряком и не смотря на все варнинги системы его ставит в 99% случаев не купит твою программу,
а вот благодаря этому патчу гугл о твоей программе будет знать больше.
серьёзные защиты актуальны для уникальных и востребованных продуктов уровня фотошопа, а для шаровары главное отсутствие кейгена.
Здравствуйте, uberfiles, Вы писали:
U>Мы так и делаем. Даже для этого сервис написали, который сейчас всем рекомендуем: UberFiles U>Как раз позволит вам автоматом давать пользователям скачать полную версию программы (и обновления). Хелпдеск и суппорт-форум как бонус
Не слабый такой бонус за $1000 на своем сервере, либо на вашем за 3% от дохода... И это по сути за скрипт в кронтабе парсящий письма от шареит и пять таблиц в бд для привязки пользователей к ордерам, продуктам и переписке... Куда катится мир...
Здравствуйте, Qt-Coder, Вы писали:
QC>Поэтому возникла мысль немного усложнить защиту самостоятельно. Размазать число проверок по каждой кнопке. Создать много неидентичных функций проверок кода. Верно мыслю?
Сейчас крякеры ленивые стали, сделали раз и забили, потом тупо по сигнатуре патчат и опять забивают... а потому неплохо работает вариант с обычной IsCodeValid (которую откусывает ленивый крякер) и второй IsCodeValid2 отложенной во времени и немного модифицированной Эх... палюсь конечно...
Нехватает ещё одной ветки событий: не будет краков, пойдут фроды.
Активация, как способ борьбы.
Навесная защита тоже таит в себе всякое. Буквально вчера словили на двух
системах разные ошибки после полива предрелизной версии VMProtect'ом.
Причём на одной из систем ошибка не повторилась. Вопросом вчерашнего дня
стали: что это было там, что это есть на второй системе, что там будет у
пользователей?
IMHO, тот кто ищет/качает/использует кряки не станет тратить деньги на покупку, так что сильно усложнять свою работу не стоит, число людей "вернувшихся на путь истинный" не окупит затрат. Поправте меня своей статистикой если я не прав.
Здравствуйте, Qt-Coder, Вы писали:
QC>Нет у меня такого. Договор с авангейтом не прокатит?
да это мало у кого из шароварщиков есть. может подтвердить свои права через домен? отправить им ссылку на сайт с продуктом и пусть они позовнят вам по куазанному на сайте телефону, напишут через почту на этом домене, попросят временно внести какую-либо TXT запись в DNS
Как-то более заморочно выглядело получение российской бумаги (пару лет
назад, по крайней мере), по сравнению с американской регистрацией в
copyright.gov. Со Штатами и со стула вставать не пришлось. И дешевле
было. Может чего и поменялось уже — не в курсе.
А вот обращаться к российским владельцам сайтов с американской
регистрацией не пробовал, да.
Здравствуйте, denglad, Вы писали:
D>Как-то более заморочно выглядело получение российской бумаги (пару лет D>назад, по крайней мере), по сравнению с американской регистрацией в D>copyright.gov. Со Штатами и со стула вставать не пришлось. И дешевле D>было. Может чего и поменялось уже — не в курсе.
последний раз сталкивался с эти вопросом в начале 2000-х, сейчас зашел на сайт fips.ru — ни чего не поменялось, вставать со стула тоже особо не надо, разве что заплатить госпошлину, а потом отправить форму регистрации по почте и всего делов.
D>А вот обращаться к российским владельцам сайтов с американской D>регистрацией не пробовал, да.
думаю разницы особой не будет, прочитать пару строк на английском поди смогут )
Здравствуйте, anovokreschenov, Вы писали: A>да это мало у кого из шароварщиков есть. может подтвердить свои права через домен? отправить им ссылку на сайт с продуктом и пусть они позовнят вам по куазанному на сайте телефону, напишут через почту на этом домене, попросят временно внести какую-либо TXT запись в DNS
Самое прикольное что я им написал с адреса support@my_product.com
Здравствуйте, anovokreschenov, Вы писали:
A>а если серьезно, то забейте вы на этот кряк, все равно тот кто им будет пользоваться никогда не купит программу в принципе.
Ну к этому дело и идет. Без бумажки ты букашка.
Здравствуйте, Qt-Coder, Вы писали:
QC>Поэтому возникла мысль немного усложнить защиту самостоятельно. Размазать число проверок по каждой кнопке. Создать много неидентичных функций проверок кода. Верно мыслю?
Пытайся не сколько защититься от кряков, сколько научиться их использовать себе во благо.
Крякнутый софт — это аудитория людей, которые или не будут платить при любых обстоятельствах, но при этом вполне могут рекомендовать вас плятящим людям. Или аудитория тех, кто готов заплатить, если будет хорошее предложение.
Меня недавно namecheap порадовал — мы, пишут, вас от такого спасли, что нам надо медаль вручить. Вот у вас на сайте вирус страшный лежит (ссыль на мой дистр). Дистр мы удалили вот какие молодцы.
Прогнал по вирустотал, да какой-то ClamAV что-то там сдетектировал. Один из 53-х. Вылечил новым Inno Setup, но осадочек остался. Этак словишь фолсе позитиве и все, нет у тебя программы.
Здравствуйте, Qt-Coder, Вы писали:
QC>Меня недавно namecheap порадовал — мы, пишут, вас от такого спасли, что нам надо медаль вручить. Вот у вас на сайте вирус страшный лежит (ссыль на мой дистр). Дистр мы удалили вот какие молодцы. QC>Прогнал по вирустотал, да какой-то ClamAV что-то там сдетектировал. Один из 53-х. Вылечил новым Inno Setup, но осадочек остался. Этак словишь фолсе позитиве и все, нет у тебя программы.
Дык тут проблема не в VMP или прочих протекторах, в namecheap. Если бы мой хостер бы такое проделал бы без предупреждения, наш бы директор Жопоразрываев (ц).... Ну вы понимаете. Ну было у меня пару раз проблемы, ну хостер мне отписался, пообщались — всё решили. Делов то...
К вопросу о VMP (автор в студию). False-позитивы стабильно ловятся на VirusTotal в основном следующими шедеврами: ClamAV (чуваки-невидимки), Comodo (вообще никаких толком контактов на сайте не сыщешь). Все же лидеры всякие там KAV, AVG, Avast достаточно оперативно реагируют на обращения. Сутки двое.
И потом, не хочу говорить за автора VMP, но по моему он как-то говорил, что у них налажен постоянный контакт с антивирусниками. Там чуть ли не до автоматизации какой-то дошло что-ли.
> И потом, не хочу говорить за автора VMP, но по моему он как-то говорил, > что у них налажен постоянный контакт с антивирусниками. Там чуть ли не > до автоматизации какой-то дошло что-ли.
Подтверждаю. Когда не смог сам достучаться до каких-то неадекватов, Иван
оперативно помог.
YK>Сейчас крякеры ленивые стали, сделали раз и забили, потом тупо по сигнатуре патчат и опять забивают... а потому неплохо работает вариант с обычной IsCodeValid (которую откусывает ленивый крякер) и второй IsCodeValid2 отложенной во времени и немного модифицированной Эх... палюсь конечно...
Да, работает )) Так и сделал в новой версии. И когда вышел кряк, второй уровень остался незамеченным и через 10 минут программа снова стала незарегистрированной. Кряков кстати стало очень много. С выходом нового кряка всплеск инсталляций. Посмотрим помогут ли эти меры получить регистрации с пользователей варезом. Причем чтобы скачать кряк надо продраться сквозь горы рекламы, всплывающих окон и прочего дерьма с рапидшарэ и проч. На что только люди не пойдут ради халяпы.
Здравствуйте, Qt-Coder, Вы писали:
QC>И когда вышел кряк
У меня в коде было stub выражение. Какая-то переменная int i; которая потом i = 100 + 10 + 2 и прочее. Так вот, смена этих цифр и пересборка релиза сразу обламывали все кряки, потому что они версию сверяли по некому хешу.
Хотя вариант с отложенной загрузкой, конечно, неприятнее Одно дело, когда ты скачал крак, а он не работает. Печально, но такое часто бывает. Совсем другое, когда скачал, крак сработал! программа запустилась!! ура!!!... и тут вдруг, бум! Все мечты разом рухнули
Здравствуйте, CEMb, Вы писали:
CEM>Здравствуйте, Qt-Coder, Вы писали:
QC>>И когда вышел кряк
CEM>У меня в коде было stub выражение. Какая-то переменная int i; которая потом i = 100 + 10 + 2 и прочее. Так вот, смена этих цифр и пересборка релиза сразу обламывали все кряки, потому что они версию сверяли по некому хешу.
А еще в тех же двух плюсах можно хулиганичииить та-а-а-ак:
char[__LINE__]=....
или strlen(__TIME__)... :)))
И даже циферки менять не нужно.
Или заменить наше_всё BOOL IsCodeValid(); на ENUM_VALUE IsCodeValid();, а ENUM_VALUE это двухвариантный enum, где числовые значения можно менять периодически ручками.
А дальше Остапа понесло (ц) меняем ENUM_VALUE на пару троечку макросов вида MAKE_VALUE_ENUM_VALUE, MAKE_INVALID_ENUM_VALUE и что нить вида #define IS_VALID_ENUM_VALUE (LOBYTE(HIWORD(...).
О сколько извертов прекрасных готовит нам наш C++.
PS: от нормального кряка это не спасает, конечно. Но на этот случай пишется собственная виртуальная машина. Как у нашего коллеги описано в статье. Делов то на пару вечеров от силы, и половина крякеров нервно покуривает в коридоре.
Здравствуйте, Carc, Вы писали:
C>И даже циферки менять не нужно.
Если честно, циферки я менял раза 2-3 всего, и только 1 раз из них из-за кряка, остальные для профилактики.
Потому что у меня была написана программа, которая генерила мне код(находила и правила часть кода) моей программы, прошивала дату для тестовой лицензии (которая той же программой генерилась), всё паковалось, оставалось только инсталлятор собрать. Я это делал раз в неделю
C>PS: от нормального кряка это не спасает, конечно. Но на этот случай пишется собственная виртуальная машина. Как у нашего коллеги описано в статье. Делов то на пару вечеров от силы, и половина крякеров нервно покуривает в коридоре.
Дело на пару вечеров — только на саму машину же? Использование кода в своей программе несколько усложняет разработку вроде? Ну или нужен отдельный компилятор из языка в язык VM?
Здравствуйте, Carc, Вы писали:
C>К вопросу о VMP (автор в студию). False-позитивы стабильно ловятся на VirusTotal в основном следующими шедеврами: ClamAV (чуваки-невидимки), Comodo (вообще никаких толком контактов на сайте не сыщешь). Все же лидеры всякие там KAV, AVG, Avast достаточно оперативно реагируют на обращения. Сутки двое.
Я вам по секрету скажу, что аверам совершенно наср@ть на проблемы разработчиков, т.к. главная их цель — это развести конечных пользователей на бабло. Поэтому фолсы они чинят очень неохотно, да и то как обычно через ж@пу — тупо добавляя сигнатуру файла в некий "белый" список (нетрудно догадаться что происходит когда вы выпускаете новую версию).
Дак вот для того чтобы не разработчики и пользователи их "продуктов" не отвлекали их от очень важной на их взгляд работы по собиранию очередного списка сигнатур, антивирусники придумали ... нет нет, вы не угадали — они не собираются переходить на более продвинутые механизмы детекта вредоносного кода ... они придумали мегарулезную библиотеку под названием Taggant System. Основная идея этой библиотеки — подписывание кода сертификатом пользователя и сертификатом вендора, который разрабатывает собственный пакер/протектор. Сейчас на уровне IEEE собирается информация о всех известных сертификатах вендоров пакеров + ведется блеклист сертификатов и вся эта хрень учитывается антивирусом при вынесение вердикта о том, а есть ли вообще внутри вирус
Самое смешное в этой ситуации то, что рожденный в тяжелейших муках Taggant System сейчас "поддерживают не только лишь все, мало антивирусников кто вообще знает про это" (с) Поэтому цирк под названием антивирусы и фолсы будет продолжаться и дальше.