Re[5]: Как защитить свою программу?
От: Виталий Россия  
Дата: 03.06.03 12:21
Оценка:
Здравствуйте, Kaa, Вы писали:

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


D>>вроде есть такая фича, как ASProtectDie...

Kaa>Наверно, название не верно. Google молчит, как партизан. Нет у него такого Сам прямо сейчас внедряю ASProtect, потому так интересны способы, какими можно защиту обойти.

Ну, самый "простой" способ — это сдампить уже распакованную программу и потом восстановить руками таблицу импорта, после чего изучать непосредственно защиту, если она вообще есть. Не могу сказать что это так уж и просто, но если набить руку, то и не очень сложно. Автоматических анпакеров можно не особо бояться, так как в большинстве случаев они работают некорректно.
Re[5]: Как защитить свою программу?
От: Alex Mova  
Дата: 03.06.03 12:49
Оценка: 3 (1)
Здравствуйте, Kaa, Вы писали:

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


D>>вроде есть такая фича, как ASProtectDie...

Kaa>Наверно, название не верно. Google молчит, как партизан. Нет у него такого Сам прямо сейчас внедряю ASProtect, потому так интересны способы, какими можно защиту обойти.
То, что Гугл его не находит — это хорошо Называется это чудо "Die ASProtectDie". Поищи также "AsprStripperXP" Вроде, что то еще было из этой серии.
Но что они могут сделать? Снять триал. Одни "роются" в реестре и вычищают дату первого запуска, другие "снимают" защиту с экзешника. Но, естественно, ни одна из этих программ не может восстановить зашифрованный код. Вывод прост — главное ограничение — ограничение функциональности, кое-какие возможности должны быть недоступны в триальной версии. Кроме того, хорошо бы не ограничиваться возможностями навесной защиты и самому расставлять несложные "ловушки" в коде. Это не сделает программу "непробиваемой", но крови взломщику попортит
Хотя, по-моему, главное — продумать систему ограничений триальной версии так, что бы пользователю хотелось купить программу и пользоваться всеми ее возможностями, а не искать способ продлить триал.

WBR, Александр Мова
Re[6]: Как защитить свою программу?
От: Nikeware http://www.nikeware.com
Дата: 03.06.03 12:58
Оценка:
Здравствуйте, Alex Mova, Вы писали:

Kaa>>Наверно, название не верно. Google молчит, как партизан. Нет у него такого Сам прямо сейчас внедряю ASProtect, потому так интересны способы, какими можно защиту обойти.

AM>То, что Гугл его не находит — это хорошо Называется это чудо "Die ASProtectDie". Поищи также "AsprStripperXP"
Я находил в Google по "ASProtect Die" (с пробелом перед Die).

"To merge or not to merge?"
www.visual-comparer.com
Re[5]: Как защитить свою программу?
От: Nikeware http://www.nikeware.com
Дата: 03.06.03 13:05
Оценка:
Здравствуйте, IPv6, Вы писали:

IP>А сколько он сейчас стоит если не секрет?

99$

IP>и еще вопрос — есть ли для него отдельный модуль генерации ключей (должен быть по крайней мере)...

Модуль есть. Есть и пример его использования. Все это можно посмотреть, скачав с сайта триал-версию 1.21.

"To merge or not to merge?"
www.visual-comparer.com
Re[6]: Как защитить свою программу?
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 03.06.03 15:15
Оценка:
Здравствуйте, Alex Mova, Вы писали:

AM>Но что они могут сделать? Снять триал. Одни "роются" в реестре и вычищают дату первого запуска, другие "снимают" защиту с экзешника.


Я тут провел микро-исследование вопроса. Оказалось как всегда, что край перепахан вдоль и поперек и защищаться можно только от тех кому не нужно ничего ломать. Также по пути оказалось, что и версия ASProtect (trial) у меня уж больно древняя, так-что особо попробовать то, что я накачал, не получится

AM>Но, естественно, ни одна из этих программ не может восстановить зашифрованный код. Вывод прост — главное ограничение — ограничение функциональности, кое-какие возможности должны быть недоступны в триальной версии. Кроме того, хорошо бы не ограничиваться возможностями навесной защиты и самому расставлять несложные "ловушки" в коде. Это не сделает программу "непробиваемой", но крови взломщику попортит


Да (вздыхает), прийдется А как хочется жить в идеальном мире. По моем постановке в триале должно быть все, а единственное ограничение — время. Однако, видимо, постановка не верна (ну, если упирать на сложность обнуления защиты).

Спасибо за информацию
Алексей Кирдин
Re[5]: Как защитить свою программу?
От: codera http://www.livejournal.com/~codera
Дата: 03.06.03 15:52
Оценка: 3 (1)
Здравствуйте, Kaa, Вы писали:

D>>вроде есть такая фича, как ASProtectDie...

Kaa>Наверно, название не верно. Google молчит, как партизан. Нет у него такого Сам прямо

c ASPackDie перепутали, надо думать.
а против аспра есть caspr, asap, anti aspr.

Kaa>сейчас внедряю ASProtect, потому так интересны способы, какими можно защиту обойти.


аспротект всегда было на порядок сложнее снять, чем прочие пакеры/протекторы. ибо хитро зашифрованная таблица импортов (с расшифровкой на лету), и anti-debug tricks, и т.д.
старые версии аспра снимаются в той или иной мере вышеозначенными программами.
касаемо новых версий утверждать не могу, но прогресс не стоит на месте не только у защитников, но и у их противников. =)

в любом случае, даже если "взломщику" не удастся ни распаковать защиту на автомате, ни сдампить/поправить, в запасе у него есть еще такой вариант, как loader. а лоадеру в общем случае никакого дела нет до того, в каком виде, за.. или распакованном, исполняемый файл хранится на диске.
Re[7]: Как защитить свою программу?
От: Виталий Россия  
Дата: 03.06.03 16:05
Оценка:
Здравствуйте, Kaa, Вы писали:

Kaa>Да (вздыхает), прийдется А как хочется жить в идеальном мире. По моем постановке в триале должно быть все, а единственное ограничение — время. Однако, видимо, постановка не верна (ну, если упирать на сложность обнуления защиты).


Можно попробовать такой вариант: дату, когда программа прекращает работать просто защивать в программу и нигде не хранить, но при этом придется постоянно обновлять дистрибутив на сайте. С первого взгляда может показаться не очень удобным, но ведь процесс можно автоматизировать
Re[6]: Как защитить свою программу?
От: codera http://www.livejournal.com/~codera
Дата: 03.06.03 16:05
Оценка:
Здравствуйте, Виталий, Вы писали:

Kaa>>Наверно, название не верно. Google молчит, как партизан. Нет у него такого Сам прямо сейчас внедряю ASProtect, потому так интересны способы, какими можно защиту обойти.

В>Ну, самый "простой" способ — это сдампить уже распакованную программу и потом восстановить руками таблицу импорта, после чего изучать непосредственно защиту, если она

защиту изучать можно и без дампа — в режиме real-time, отладчиком. суть действия паковщиков не в том состоит, чтобы затруднить анализ кода (для этого они мало пригодны). а в том, чтобы затруднить _изменение_ кода (патч).
ну т.е. если у вас программа самопроверяется на предмет триальности посредством некоего ключевого файла или серийного номера, причем алгоритм проверки обратим, то в данном случае применение аспротекта для защиты от взлома сопоставимо с применением валенок для защиты от дождя.

B>вообще есть. Не могу сказать что это так уж и просто, но если набить руку, то и не очень сложно. Автоматических анпакеров можно не особо бояться, так как в большинстве случаев они работают некорректно.


да.
Re[6]: Как защитить свою программу?
От: codera http://www.livejournal.com/~codera
Дата: 03.06.03 16:58
Оценка: 9 (1)
Здравствуйте, Alex Mova, Вы писали:

AM>Но что они могут сделать? Снять триал. Одни "роются" в реестре и вычищают дату первого запуска, другие "снимают" защиту с экзешника. Но, естественно, ни одна из этих программ не может восстановить зашифрованный код. Вывод прост — главное ограничение — ограничение


суть-то не в том, чтобы "восстановить зашифрованный код". а в том, чтобы получить рабочий экзешник, который можно пропатчить. полностью код действительно не восстанавливается этими программами. но, к примеру, asap успешно снимал защиту каких-то версий аспротекта, при этом для с неснимаемыми ее элементами (по-моему, расшифровкой импортов on fly) он боролся посредством dll-библиотечки с соответствующими функциями расшифровки, взятыми непосредственно из asprotect'a.

AM>Хотя, по-моему, главное — продумать систему ограничений триальной версии так, что бы пользователю хотелось купить программу и пользоваться всеми ее возможностями, а не искать способ продлить триал.


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

если же хочется все-таки реализовать защиту технически, то наиболее успешен комплексный подход. хорошая защита (не идеальная!!, а только лишь "геморройная" для взломщика), на мой взгляд, отличается тремя основными критериями:
1. затруднено нахождение валидного серийного номера или ключевого файла;
2. затруднено изменение кода программы (патч);
3. затруднена собственно локализация "регистрационных" участков кода программы.

+ для любителей: 4. мелкие пакости ;)

соответственно пунктам, возможные методы:
1. проверка "зарегистрировано/нет" — на ваш вкус, лишь бы не было легко обратимых алгоритмов. ДА: проверенные криптоалгоритмы. НЕТ: привязка к железу (больше проблем будет, чем выгоды).
2. сильная навесная защита. тот же аспротект (версии поновее). свой пакер писать практически бессмысленно.
3. различные anti-debugging tricks, запутывание потенциального взломщика параллельными потоками и невнятными вычислениями и прочий туман. очень много ломателей отсеются просто от того, что запарятся прорываться сквозь эти дебри.
4. не говорить, "зарегистрировано" или нет сразу после ввода пароля; (пример) программа считает свой crc и если "чует недоброе", то продолжает работать как обычно... пару дней =); (пример) если серийник входит в black-list, то продолжаем работать как ни в чем не бывало... ну вы поняли, пару дней =); (пример) программа проверяет, "а не ломают ли меня", и если есть подозрения, то осуществляет над введенными рег. данными совершенно левые преобразования и проверки %D.
Re[8]: Как защитить свою программу?
От: codera http://www.livejournal.com/~codera
Дата: 03.06.03 17:10
Оценка:
Здравствуйте, Виталий, Вы писали:

В>Можно попробовать такой вариант: дату, когда программа прекращает работать просто защивать в программу и нигде не хранить, но при этом придется постоянно обновлять дистрибутив на сайте. С первого взгляда может показаться не очень удобным, но ведь процесс можно автоматизировать :)


ну а кто помешает умельцу подправить эту самую дату в экзешнике или то место, где она проверяется? аспротект помешает начинающему умельцу. про loader'ы я писала ниже по треду.

кроме того, некоторые не смущаются постоянно менять дату перед запуском time-trial программы. и даже утилиты, помнится, были, которые это автоматически предлагали делать. =)
Re[7]: Как защитить свою программу?
От: Alex Mova  
Дата: 03.06.03 17:35
Оценка: +1
Добрый вечер, codera, Вы писали:

AM>>Но что они могут сделать? Снять триал. Одни "роются" в реестре и вычищают дату первого запуска, другие "снимают" защиту с экзешника. Но, естественно, ни одна из этих программ не может восстановить зашифрованный код. Вывод прост — главное ограничение — ограничение


C> суть-то не в том, чтобы "восстановить зашифрованный код". а в том, чтобы получить рабочий экзешник, который можно пропатчить. полностью код действительно не восстанавливается этими программами. но, к примеру, asap успешно снимал защиту каких-то версий аспротекта, при этом для с неснимаемыми ее элементами (по-моему, расшифровкой импортов on fly) он боролся посредством dll-библиотечки с соответствующими функциями расшифровки, взятыми непосредственно из asprotect'a.


Ну и что это даст в случае, когда определенная часть функционала находится в зашифрованном состоянии? Только снимет ограничение по времени.

AM>>Хотя, по-моему, главное — продумать систему ограничений триальной версии так, что бы пользователю хотелось купить программу и пользоваться всеми ее возможностями, а не искать способ продлить триал.


C> Да. это — единственный оправданный способ защиты. потому что если программа очень хорошая — сломают все равно, так или иначе =).

У меня еще более пессимистичный взгляд на эту проблему — не сломают, так купят по ворованной кредитке. И с этим ничего не поделаешь. Так что "заморачиваться" очень серьезной защитой не считаю нужным. Делайте свои программы лучше, серьезнее продвигайте их, делайте больше продаж — этим Вы заработаете куда больше положительных эмоций (не считая денег чем теша свое самолюбие своей крутой защитой

WBR, Александр Мова
Re[8]: Как защитить свою программу?
От: codera http://www.livejournal.com/~codera
Дата: 03.06.03 19:13
Оценка:
Здравствуйте, Alex Mova, Вы писали:

C>> импортов on fly) он боролся посредством dll-библиотечки с соответствующими функциями расшифровки, взятыми непосредственно из asprotect'a.

AM>Ну и что это даст в случае, когда определенная часть функционала находится в зашифрованном состоянии? Только снимет ограничение по времени.

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

C>> Да. это — единственный оправданный способ защиты. потому что если программа очень хорошая — сломают все равно, так или иначе =).

AM>У меня еще более пессимистичный взгляд на эту проблему — не сломают, так купят по ворованной кредитке. :( И с этим ничего не поделаешь. Так что "заморачиваться" очень серьезной защитой не считаю нужным. Делайте свои программы лучше, серьезнее продвигайте их, делайте больше продаж — этим Вы заработаете куда больше положительных эмоций (не считая денег :)) чем теша свое самолюбие своей крутой защитой:)

ну а что, можно и потешить. приятно ведь видеть, как свежий релиз никто не может сломать неделю, месяц.. [а потом таки ломают и пишут письмо, что да, защита хорошая, было интересно =) (это из древней статьи по защите shareware (с) Сергей Леонов, "Компьютерра") ]

по этому поводу вспоминается:
некто Andy Karimov, написавший антивирус Stop!, оснастил свое детище, по слухам, сказочной защитой. а будучи фидошником, почитывал эхи $crack$* (для неосведомленных: туда постятся кряки и запросы на них, в основном к shareware как раз). программу его всё никак не могли сломать, зато в эхе регулярно возникали письма с запросами типа "Дайте кряк на Stop!", на которые автор самолично отвечал: "И мне, и мне!!!". догадывались нечасто, а некоторые даже отвечали ворованным кодом.
Re[9]: Как защитить свою программу?
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 03.06.03 19:42
Оценка:
Здравствуйте, codera, Вы писали:

C> по этому поводу вспоминается:

И чем закончилось?
Алексей Кирдин
Re[9]: Как защитить свою программу?
От: Alex Mova  
Дата: 03.06.03 19:55
Оценка:
Здравствуйте, codera, Вы писали:

C>>> импортов on fly) он боролся посредством dll-библиотечки с соответствующими функциями расшифровки, взятыми непосредственно из asprotect'a.

AM>>Ну и что это даст в случае, когда определенная часть функционала находится в зашифрованном состоянии? Только снимет ограничение по времени.

C> дык в зашифрованном состоянии находится та часть функционала, которая с триально-регистрационными проверками не связана. а именно, адреса апи ф-ий, импортируемых из системных библиотек. задача-то — заставить программу работать как полноценную, не-триальную. а для этого необязательно расшифровывать ее до оригинального первоначального состояния.

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

WBR, Александр Мова
Re[10]: Как защитить свою программу?
От: codera http://www.livejournal.com/~codera
Дата: 03.06.03 20:00
Оценка:
Здравствуйте, Kaa, Вы писали:

C>> по этому поводу вспоминается:

Kaa>И чем закончилось?

в фидо я не смотрю уж давно,
но, судя по всему, авторский стеб продолжается,
а кейген к Stop! так и не сделали..
Re[10]: Как защитить свою программу?
От: codera http://www.livejournal.com/~codera
Дата: 03.06.03 20:26
Оценка:
Здравствуйте, Alex Mova, Вы писали:

AM>Похоже, мы говорим о разном. Под "функционалом находящимся в зашифрованном состоянии" я подразумеваю некоторую часть кода, которая может быть расшифрована и выполнена только при наличии рег ключа (этим ключом и расшифровывается). Если ключа нет, то этот код не может быть расшифрован и, соответственно, выполнен. В этом коде может быть что угодно, а не только "адреса апи ф-ий, импортируемых из системных библиотек". Без ключа программа не сможет работать как полноценная, в ней не будут доступны "главные" возможности.


действительно, о разном.
по поводу вашего варианта вот что скажу. во-первых, аспротект таких "услуг" не предоставляет, насколько я знаю. так что все ручками придется, все зашифровки, расшифровки и проверки. (муторно, и поэтому, кстати сказать, редко встречается в shareware). во-вторых, "без ключа программа не сможет работать" — не факт. если не потрудиться над алгоритмом шифрования, то могут и восстановить.

как пример: пусть имеется рег_код, которым расшифровывается по вашему алгоритму кусок кода. пользователь вводит рег_код. как будем проверять его валидность? не пускать же на выполнение свежерасшифрованный кусок кода, гарантируя пользователю бурный обвал программы/системы в случае ошибки в одном знаке. значит, надо либо как-то считать crc рег_кода, либо crc расшифрованного кода, либо брать из расшифрованного кода пару байт и сравнивать с оригиналом. при этом часть карт неизбежно раскрывается (в частности, уменьшается область перебора рег_кодов, либо дается подсказка об оригинальном содержимом зашифрованного участка, ну и т.д.)

это лишь пример методики. на самом деле, тут все решает алгоритм шифрования. если постараться, то предыдущий абзац не поможет. этот способ защиты на самом деле неплох. но и, соответственно, время/мозго/ресурсо..затратен.
Re[11]: Как защитить свою программу?
От: Alex Mova  
Дата: 03.06.03 20:34
Оценка:
Здравствуйте, codera, Вы писали:

C>Здравствуйте, Alex Mova, Вы писали:


AM>>Похоже, мы говорим о разном. Под "функционалом находящимся в зашифрованном состоянии" я подразумеваю некоторую часть кода, которая может быть расшифрована и выполнена только при наличии рег ключа (этим ключом и расшифровывается). Если ключа нет, то этот код не может быть расшифрован и, соответственно, выполнен. В этом коде может быть что угодно, а не только "адреса апи ф-ий, импортируемых из системных библиотек". Без ключа программа не сможет работать как полноценная, в ней не будут доступны "главные" возможности.


C> действительно, о разном.

C> по поводу вашего варианта вот что скажу. во-первых, аспротект таких "услуг" не предоставляет, насколько я знаю. так что все ручками придется, все зашифровки, расшифровки и проверки. (муторно, и поэтому, кстати сказать, редко встречается в shareware). во-вторых, "без ключа программа не сможет работать" — не факт. если не потрудиться над алгоритмом шифрования, то могут и восстановить.
Ключевая фраза "насколько я знаю" Он (AsProtect) их предоставляет. Ктоме того, на AsProtecte свет клином не сошелся. Есть и другие защиты, например, ExeCryptor, который может даже разные участки шифровать разными ключами.

WBR, Александр Мова
Re[12]: Как защитить свою программу?
От: codera http://www.livejournal.com/~codera
Дата: 03.06.03 20:50
Оценка:
Здравствуйте, Alex Mova, Вы писали:

AM>Ключевая фраза "насколько я знаю":) Он (AsProtect) их предоставляет. Ктоме того, на AsProtecte свет клином не сошелся. Есть и другие защиты, например, ExeCryptor, который может даже разные участки шифровать разными ключами.


хорошо. дальнейшие аргументы буду приводить по ликвидации своей отсталости от жизни =)
Re[6]: Как защитить свою программу?
От: dyakovlev Украина www.prof-uis.com
Дата: 04.06.03 06:44
Оценка:
Здравствуйте, codera, Вы писали:

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


D>>>вроде есть такая фича, как ASProtectDie...

Kaa>>Наверно, название не верно. Google молчит, как партизан. Нет у него такого Сам прямо

C> c ASPackDie перепутали, надо думать.

C> а против аспра есть caspr, asap, anti aspr.

Ничего я не перепутал. Я специально нашел эту прогу у себя и вот привожу вырезку из ее хелпа:

Die, ASProtect, Die! — что это такое
Эта программа предназначена для удаления из реестра ключей, создаваемых программами,
защищенными при помощи ASProtect.
...
Данная программа позволяет легко выявить ключи, созданные ASProtect и окончательно деинсталлировать программу вручную (по крайней мере, с встреченными автором версиями ASProtect программа справилась успешно — при тестировании на множестве различных утилит, защищенных ASProtect, лишние ключи реестра были успешно выявлены во всех случаях).
...
если Вы удалите ключи, созданные ASProtect, защитный механизм будет считать, что программа только что установлена и не было произведено ни одного запуска, а потому начинает заново отсчитывать испытательный срок. Соответственно, Вы можете пользоваться программой и далее, до истечения этого нового испытательного срока.


Kaa>>сейчас внедряю ASProtect, потому так интересны способы, какими можно защиту обойти.


C> аспротект всегда было на порядок сложнее снять, чем прочие пакеры/протекторы. ибо хитро зашифрованная таблица импортов (с расшифровкой на лету), и anti-debug tricks, и т.д.

C> старые версии аспра снимаются в той или иной мере вышеозначенными программами.
C> касаемо новых версий утверждать не могу, но прогресс не стоит на месте не только у защитников, но и у их противников. =)

C> в любом случае, даже если "взломщику" не удастся ни распаковать защиту на автомате, ни сдампить/поправить, в запасе у него есть еще такой вариант, как loader. а лоадеру в общем случае никакого дела нет до того, в каком виде, за.. или распакованном, исполняемый файл хранится на диске.
Re: Как защитить свою программу?
От: shmakov Россия  
Дата: 04.06.03 08:03
Оценка:
Здравствуйте, dyakovlev, Вы писали:

D>Хочу продавать свою прогу. Но для этого надо сделать Trial-версию, добавить защиту от несанкционированного копирования (Привязку нужно делать к hardware), .... и т.д.

D>Подскажите пожалуста какие пакеты для этого можно использовать. Какие стоит а какие не стоит.

D>P.S. Слышал про ASProtect, но у меня возникли сложности с его использованием, не получается у меня внедрить его защиту в мой MFC-шный проект.


D>Вобщем что еще есть стоящего в этой области?



Armadillo (http://www.siliconrealms.com) — от туда качай.
Генератор ключей найдешь на (http://www.astalavista.com)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.