Как защитить свой софт от барыг. (модераторам: не надо переносить тему в другой раздел, тут полезней будет, барыги любят спам-софт и кодеров тут немало) Эта статья прежде всего для начинающих кодеров. Те, кто работает в этом направлении не первый день все это давно знают и им читать не обязательно (.ATK особенно)! =) Наверное каждый, кто когда-нибудь занимался продажей своего софта задумывался о том, как сделать, чтобы после очередной продажи программа не оказалась на каком-нибудь файлообменнике в свободном доступе или в продаже по заниженной стоимости. Первое, что приходит в голову - привязка к железу. На первый взгляд достаточно надежный способ защитить свой софт от барыг. Но что же делать с покупателями, большая часть которых использует для работы деды. Если за каждую копию, установленную на новый дед, брать с клиента ту же сумму, как и при покупке первой копии, то до 80% клиентов сразу же будет потеряно. В итоге стоимость последующих копий приходится снижать в несколько раз. Это идеальный вариант для барыги, купил одну копию и продавай сколько хочешь по цене в 2 раза ниже, чем у автора. Всего-то нужно стукнуть к автору в асю и попросить еще одну копию по причине смерти очередного деда. В случае с привязкой софта к железу, защититься от барыг сложно. Наиболее простой вариант - делать для каждого клиента в программе какие-нибудь отличительные знаки (незаметные для покупателя), чтобы в случае обнаружения барыги, продающего Вашу прогу по сниженной цене, можно было определить, кто попадет в блэк и больше не будет получать дополнительных копий. Еще один вариант - при продаже установить сроки между покупками очередных копий программы, например 7 дней. До истечения этого срока стоимость последующей копии равна начальной стоимости программы. Этот вариант для Ваших клиентов будет не очень удобным, но вряд ли отпугнет хотя бы одного из них. Более надежный способ защиты своего софта от барыги - привязка к удаленному серверу. Тут есть несколько вариантов: Можно совместить привязку к железу и к серверу. Простейший пример: При запуске на компьтере покупателя, по серийным номерам его железа генерируется код, который автор софта прописывает на сервере. При запуске программа проверяет данные на сервере и если кода запущенной копии нет в списке, софт работать не будет. Если у клиента умирает дед, автор просто удаляет его из базы на сервере, и вносит туда данные нового деда. Работоспособной остается только одна копия программы. От школьников такая привязка защитит надежно. Но обойти ее не так сложно, как кажется, хотя и нужно иметь определенные навыки и прямые руки. Достаточно снифером отловить принимаемые от сервера данные, немного подправить %windir%/system32/drivers/etc/hosts и написать (заказать) простую программку, которая при любом запросе будет возвращать нужные нам данные. Еще один вариант привязки к серверу - контроль за количеством запущенных копий программы. Для каждого покупателя программа собирается отдельно и имеет свой ID, на сервере указывается количество копий разрешенных для одновременной работы. В случае превышения указанного количества одновременных запусков, ID программы удаляется из базы и программа становится неработоспособной. Обход привязки тот же, см. предыдущий способ. Для самой надежной защиты, оба вариант привязки к серверу нужно немного усовершенствовать. При каждом запуске программа генерируется случайный код, на сервере и в самой программе этот код шифруется по известному только Вам алгоритму, результат сравнивается. В этом случае подделать запросы становится практически невозможно. Различных вариантов еще много, но как мне кажется, это наиболее простые и распространенные способы. Про реверсинг и защиту от него говорить не буду, про это и так уже много написано.
Часть данных методов в комбинации используется в програмном комплексе Xrumer... Не разу не виде нулленых актуальных версий. Так что перенимайте опыт.
[offtop])))во тебя попёрло! Кодеров в этом разделе штук 5, а активных и того меньше![/offtop] Ничего нового не узнал, не тянет на мануал по защите своего софта от барыг Но мне как бе и читать не надо было)))