Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Защита своей программы + сборка + инсталляшка

289
25 апреля 2008 года
Jeyson
207 / / 20.04.2000
Доброго времени суток. Как видно из темы у меня 3 вопроса.
1. Как защитить свою программу. Т.е. грамотно проработать ввод серийника, например, кол-во запусков, если серийник не введен. Тут я чайник и даже мыслей не имею как это грамотно сделать.
2. Как собрать программу, чтобы она запускалась без требований библиотек на машинах, на которых Visual не установлен.
3. Как создать инсталляшку. Стандартные средства почему-то отстутствуют. Юзаю visual 2005.
Спасибо.
5.3K
25 апреля 2008 года
Somebody
185 / / 24.12.2006
Цитата:

Как создать инсталляшку


Например есть прога CreateInstall. http://www.createinstall.com

562
25 апреля 2008 года
tarekon
175 / / 19.08.2003
Цитата: Jeyson
Доброго времени суток. Как видно из темы у меня 3 вопроса.
1. Как защитить свою программу. Т.е. грамотно проработать ввод серийника, например, кол-во запусков, если серийник не введен. Тут я
чайник и даже мыслей не имею как это грамотно сделать.



Никак :).
Судя по остальным вопросам, уровня подготовки не хватит, чтобы сделать это грамотно. Без обид. Хакеры нынче действительно хорошо подготовлены и поломать любую твою защиту смогут меньше, чем за сутки. Если, конечно, вообще заинтересуются программой (как в анекдоте про "неуловимого" Джона).
С другой стороны, среднестатистический пользователь всё тупее и тупее. Поэтому против него элементарно подойдут маленькие дешевые трюки типа "секретного" ключа в реестре. Особенно в ветке HKLM\Software\Classes\CLSID\. Ну положи там какую-нибудь величину, зависящую от компьютера. Например, запусти втихоря systeminfo и сделай нетривиальное преобразование "Original install date". Таким образом, дабы "поломать" твою программу придется залезать в её код, т.к. не будет универсального ключа, подходящего всем компьютерам.
Число запусков храни там же. Только сделай хотя бы простое преобразование, чтобы нельзя было понять, что именно означает число, допустим, 34565.

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

Если действительно хочется сделать профессионально, то следует начать с изучения математики. А именно алгоритмов шифрования и цифровой подписи, аутентификации, разделения ключей. Потом изучить ассемблер. Далее понять в деталях принципы функционирования программ в операционной системе. Что такое DLL, что такое исполняемый модуль, как они связаны. Что кроется под словом "рантайм", как линкер собирает файл из объектных модулей. Как функционирует отладчик, и многое другое. Это потребует дофига времени. И даже после изучения всего этого (причем детальнейшего) потребуется еще огромная куча времени, чтобы написать нормальную защиту, которая потребует месяц, а то и два, работы хакера. Но даже при этом - вряд ли больше.

Игра не стоит свеч в проектах, написанных одним-двумя программистами.

Цитата: Jeyson
2. Как собрать программу, чтобы она запускалась без требований библиотек на машинах, на которых Visual не установлен.



Собственно из этого вопроса и вытекает невозможность написания хорошей защиты. В опциях проекта выбери Linker->C\C++->Code Generation. Runtime Library = Multi-thread или Multi-thread Debug. А перед этим почитай в MSDN, что это такое.

9.3K
29 апреля 2008 года
iridum
175 / / 26.08.2007
Если напихать программу всевозможными ф-ями проверки лицензии, а потом в хаотичном порядке на каждом действии программы их проверять разными ф-ми, причём зделать так чтобы каждая часть контроллировала только часть той самой лиценции, да патом пакануть упаковщиком исполняемых файлов раза 2, и использовать несколько вариантов защиты одновременно,то небось отлично нервы взломщику можно будет потрепать ггггг :D

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

Вообщем когда он ломанёт, программа будет уже неактуальна ггг.

ps.я в защите валенок полный, но мысли сами напрашиваются.
5.3K
30 апреля 2008 года
Somebody
185 / / 24.12.2006
Всё зависит от профессинализма взламывающего. Ведь во всем известных программах не простое сравнение двух строк в одном месте, но всё равно к ним если не патчи, то кейгены, если не кейгены, то ключи.
Цитата:

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


Много проверок во всех подряд местах? Как мне кажется, если кто и сделает такое, то никто не будет устранять проверки, а просто взламывающий возьмётся искать, как бы так сделать, чтобы лицензия считалась правильной. Никто не делает патчи на один известный антивирус, но для него есть ключи и "вечный триал".

289
03 мая 2008 года
Jeyson
207 / / 20.04.2000
Спасибо всем, информацию получил полезную, однако тему можно не закрывать. Может у кого еще мысли есть?
9.3K
03 мая 2008 года
iridum
175 / / 26.08.2007
Цитата: Somebody

Много проверок во всех подряд местах? Как мне кажется, если кто и сделает такое, то никто не будет устранять проверки, а просто взламывающий возьмётся искать, как бы так сделать, чтобы лицензия считалась правильной. Никто не делает патчи на один известный антивирус, но для него есть ключи и "вечный триал".



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

5.3K
04 мая 2008 года
Somebody
185 / / 24.12.2006
Цитата: iridum
Да но чтобы ему отгадать ключ лицензии - надо будет пройти все те проверки которые в хаотичном порядке и отвечают за данный кусок ключа, тоесть в итоге найти пересечение множеств всех этих проверок. так что помучатся таки придётся :p


Вообще да, но в любом случае проверки надо делать какие-нибудь хитрые. Если будет
if (!ok) Nafig();
то это просто изменится людьми для кого плохими, для кого хорошими на
if (0) Nafig();
поэтому всё-таки мозгами пошевелить придётся.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог