Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.05.03;
Скачать: [xml.tar.bz2];

Вниз

Защита программ: генерирование серийных ном., активационных etc   Найти похожие ветки 

 
Anatoly Podgoretsky ©   (2009-02-18 16:25) [160]

> Maaacheba  (18.02.2009 15:59:37)  [157]

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


 
Maaacheba   (2009-02-24 10:03) [161]

Мож поднимем тему, спецы подтянутся...


 
Maaacheba   (2009-02-27 11:36) [162]

Если у кого появились интересные мыслишки - высказывайте!


 
Юрий Зотов ©   (2009-02-27 12:34) [163]

> Если у кого появились интересные мыслишки - высказывайте!

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

Эта ветка существует 2 недели. За такое же время защита, о которой я говорил выше, была не только продумана, но и реализована.

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

Потому что тем, кто этим реально не занимался, сказать уже нечего. А те, кто занимался, ничего конкретного, естественно, не скажут.


 
Thomas Anders   (2009-02-28 02:38) [164]

Вобщем-то в [163] уже все сказано, но все равно добавлю.

Вы хотите реализовать серьезную защиту, и в то-же время говорите:

Времени на такое нету.
- к чему лучше привязываться? насколько грамотно привязываться к ID процессора?

Насчет привязки к винчестеру - ведь вариантов может быть множество - IDE винчестер, SCSI, может быть вообще RAID-массив, там как?
Еще нужно расмотреть вариант установки Mobile Rack"ов, да и вообще загрузка может осуществляться по сети.

Есть какие-нибудь проверенные способы?


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

С другой стороны: задача - привязать программу к "рабочему месту". Берем ручку и лист бумаги разделяем его пополам и с одной стороны описываем типовую конфигурацию "рабочего места" - установленного на него программного и аппаратного обеспечения (если программа стоящая, то и особенные требования найдутся). На другой половине описываем
какие изменения (и какова их степень) приводит к тому что теперь это другое рабочее место и есть основание заявить о необходимости переустановки программы, в общем, решить для себя - что значит "запустили программу на другом компьютере". Вариантов к чему "привязаться" масса - в дополнение к вышесказанному: дате изготовления/контрольной сумме BIOS, можно взять информацию об устройсвах из конфигурационного пространства PCI, идентификация модулей оперативной памяти по информации SPD (Serial Presence Detect), видеокарта (VendorID, тип и количество видеопамяти, etc), контроллер USB, к ProductId Windows (хотя это уже не железо) и на что еще фантазии хватит. Далее, определияемся с форматом хранения этой информации и способа интеграции в код программы для наибольшей зависимости
(можно написать свой линковщик, можно использовать java П-код и генерировать на нем часть программы - выполнять в другом потоке исползуя какую нибудь JVM, написать свою виртуальную машину,  наконец, etc). Далее применяем нейронные (НС) сети для анализа этого описания - что позволяет сделать более мягкую проверку на изменение конфигурации,
с каждым запуском нужно сохранять результат анализа, то есть новую конфигурацию. При этом должно быть накопление (в разумных пределах) результатов анализа и периодической смены эталона с которым нужно сравнение. Защиваем генератор НС - для этого система будет состоять из 3-х частей: программа установки, сама программа, генератор НС. Конечному пользователю высылается программа установки и сама программа. Программа установки, формирует предварительное описание рабочего места - передает разработчику. На основе этого описания - генератор формирует НС и высылает назад. Программа установки вшивает НС в рабочую программу (любые другие варианты). Таким образом разработчику нужно защищать только генератор НС (не допустить его утечки).

Плюсы - сложность трассировки. Интеграция в нейронные сети своего кода достаточно проста, в связи с компонентной архетиктурой Delphi,
так-же можно сделать зависимость от степени узнавания - степень ограничений на функциональность программы. Так как в НС нет прямых переходов - если, иначе - то банальная замена инструкций не поможет взломщику, снимок программы из памяти тоже, знание НС не дает ничего.

Минусы - а теперь представьте, на сколько должна быть стоящей Ваша программа.

;)


 
криптор   (2009-02-28 03:09) [165]

Раз уж тема всплыла....

Миша,

Купи 2 штуки VmProtect+ExeCryptor (сейчас в сумме где-то 500 зеленых). Второй накатывай после первого. Бери от них все. Поверь, ты лучше не напишешь, ибо это не твой профиль.

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


 
KSergey ©   (2009-02-28 07:38) [166]

главное после внедрения всех "привязок к железу" не забыть запустит прогу под пользователем с порезанными правами и пожалеть о бесцельно прожитых годах.


 
ZeroDivide ©   (2009-02-28 09:50) [167]


> Купи 2 штуки VmProtect+ExeCryptor (сейчас в сумме где-то
> 500 зеленых).


Хороший совет.

Не читал всю тему, но пару слов скажу:

Хакерам пофиг на все ваши алгоритмы шифрования... им просто важно найти какой call или jmp поменять на nop. Поэтому стоит постараться сделать побольше различных проверок, чтобы хакер реально запарился... Т.е. чтобы занопить нужно было кучу байтиков и в различных частях кода (а не в одном месте).

Ну и последнее: взлом программы на ранних стадиях ее развития - имеет только положительный маркетинговый эффект. А если программа действительно станет продаваться, то купить любую нормальную защиту - типа озвученных выше, вам не будет в напряг (500$ - это гораздо дешевле, чем сочинять чего-то самому).


 
Anatoly Podgoretsky ©   (2009-02-28 10:40) [168]

> Thomas Anders  (28.02.2009 2:38:44)  [164]

> Таким образом разработчику нужно защищать только генератор НС (не допустить его утечки).

Теперь скажи как, теперь будешь навешивать на него защиту и так далее.
Автор псих, в дрожь кидает от того, что кто то скопирует и прочее его чудо поделку.
Я знаю один способ, это не нам надо платить, а ему, что бы мы стали использовать его поделку.


 
Anatoly Podgoretsky ©   (2009-02-28 10:42) [169]

> ZeroDivide  (28.02.2009 9:50:47)  [167]

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


 
Maaacheba   (2009-02-28 16:27) [170]

Юрий Зотов ©   (27.02.09 12:34) [163]
Не пора ли и Вам приступить к делу?


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

Мне допустим очень понравился пост Алеса Коншина. Он написал букв в разы меньше, чем подавляющее большинство авторов. И составил мне пользу процентов в 80% от этой ветки.

Я понимаю, что спецов в данном вопросе найти сложно, которые еще захотят поделиться знаниями, но для меня это не повод не попробовать.


 
Maaacheba   (2009-02-28 16:37) [171]

Thomas Anders   (28.02.09 2:38) [164]
Для грамотной "привязки к железу" нужно писать драйвер/свой


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

Thomas Anders   (28.02.09 2:38) [164]
какие изменения (и какова их степень) приводит к тому что теперь это другое рабочее место и есть


я уже говорил, но повторюсь. Вопрос не в том, к чему можно привязаться принципиально, я понимаю из чего состоит из компьютер. Вопрос в том, к чему привязываться ГРАМОТНО. Или наименее глупо, кому как нравится.

Я уже описывал, привязка не должна создавать легальным пользоватлеям никаких проблем ну или по крайней мере минимум. Она должна работать на подавляющем количестве конфигураций. Очень желательно уметь работать, не обладая администраторскими правами (пока все делается для того, чтобы программе кроме как при установке не требовались для запуска права админа и это соблюдается на настоящий момент).

Thomas Anders   (28.02.09 2:38) [164]
Вариантов к чему "привязаться" масса


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

криптор   (28.02.09 3:09) [165]
Купи 2 штуки VmProtect+ExeCryptor


а какой от них негатив есть?

криптор   (28.02.09 3:09) [165]
Поверь, ты лучше не напишешь, ибо это не твой профиль.


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

KSergey ©   (28.02.09 7:38) [166]
главное после внедрения всех "привязок к железу" не забыть запустит прогу под пользователем с порезанными правами


да, этот вопрос меня сильно волнует. Надо без админских прав по возможности все это делать.


 
Mystic ©   (2009-02-28 17:15) [172]

Можно так же вшивать в инсталляцию свой серийный номер, а не брать его с винта. Читал по диагонали, предлагал кто?


 
Maaacheba   (2009-02-28 17:26) [173]


> Можно так же вшивать в инсталляцию свой серийный номер,
> а не брать его с винта. Читал по диагонали, предлагал кто?


я вообще не понял, а какой в этом случае эффект? Чем отличается от предоставлению клиента "универсального" дистрибутива + на бумажке его индивидуальный серийный номер?

Единственное, в последнем варианте клиенту придется вручную вбивать SK, в твоем же варианту он уже вбит. А какая в целом разница для защиты?


 
криптор   (2009-02-28 19:43) [174]

Михаил, посмотри на криптор и вмпотект сам.
Везде есть дема. В крипторе оч. фиговая поддержка, в вмпротекте в разы лучше - можно просто по аське вопросы автору задавать.

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

в вмпротекте нет как таковой встроенной либы - есть только обфускатор. Зато может обфускачить целые функции или даже цепочки вызовов.
в крипторе есть навернутая либа - в частности есть gethardwareid.

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

вообще, это тема долгая и сложная.

одно могу сказать - без обфускатора быстренько снимут твою защиту. с обфускатором подумают, т.к. время займет изрядное.

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

конечно, такие подлянки должны быть продуманы таким образом, чтобы случались только после ГАРАНТИРОВАННОГО подлома предыдущих кусков.

твори!


 
Maaacheba   (2009-02-28 21:00) [175]

о, огромненький сенкс, буду активно думать в то направление.

Но кое-что непонятно...

криптор   (28.02.09 19:43) [174]
Зато может обфускачить целые функции или даже цепочки вызовов.


а как это в бинарном коде можно обфускачивать функции? Там ведь и функций то нету фактически в явном виде. Это бинарные обфускатели именно или исходного кода дельфи?

криптор   (28.02.09 19:43) [174]
в частности есть gethardwareid

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

Может ли работать в режиме НЕ админа?

криптор   (28.02.09 19:43) [174]
в крипторе есть навернутая либа


а не будет ли это являться самым слабым местом, что либу подменят и она моей проге один фиг будет выдавать один и тот же ID.


 
криптор   (2009-02-28 21:08) [176]

там есть демо-версии.


 
Maaacheba   (2009-03-01 11:26) [177]

ок, посмотрю.

Но все же - а какой от нее негатив? Замедление работы кода? Какие-то тех. сложности?

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


 
криптор   (2009-03-01 12:08) [178]

теоретически обе библиотеки имеют встроенные средства для противодействию отладке.

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

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

сейчас же все ок.

а негатив понятен - обфускаченные места работают на 3 порядка медленне. поэтому нужно выбирать эту кусочки.

обфускаченье происходит либо по меткам внутри кода (это обычно инклюд с асмовской вставкой), либо целых функций по мап файлу (это только вмпротект делать умеет).

еще раз - смотри, разбирайся, твори. уверен, что это должно решить твои проблемы.


 
KSergey ©   (2009-03-02 06:24) [179]

> криптор   (28.02.09 19:43) [174]
> 1. потом через еще часок ты на эту константу помножаешь
> параметр, если не 1, то программа упадет.

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


 
криптор   (2009-03-02 11:00) [180]


> KSergey ©   (02.03.09 06:24) [179]


> показывать (полосы вместо отчета), а не просто падать/кривуюу
> сутту в отчете насчитывать, например.
>


я же ему и говорю - твори. тут нужно думать. думать много.

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

хотя в целом с тобой, Сергей, согласен - валицо нужно красиво :)


 
KSergey ©   (2009-03-02 11:28) [181]

> криптор   (02.03.09 11:00) [180]
> я же ему и говорю - твори. тут нужно думать. думать много.

"Пусть лошадь думает. У нее голова большая."

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


 
Maaacheba   (2009-03-02 12:55) [182]

KSergey, ты уже пять раз повторил, что прозвучало много хороших идей. И при этом по моей просьюе не смог процитировать НИ ОДНУ хорошую в моем случае идею.

Вот это уже напрягает, да.


 
Anatoly Podgoretsky ©   (2009-03-02 13:04) [183]

> Maaacheba  (02.03.2009 12:55:02)  [182]

Ни грамма!



Страницы: 1 2 3 4 5 вся ветка

Форум: "Прочее";
Текущий архив: 2009.05.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.81 MB
Время: 0.024 c
3-1220360791
Медвежонок Пятачок
2008-09-02 17:06
2009.05.03
Трункануть дату/время в дату на ноль часов ноль минут


15-1234528231
Maacheba
2009-02-13 15:30
2009.05.03
Защита программ: генерирование серийных ном., активационных etc


2-1237447399
И. Павел
2009-03-19 10:23
2009.05.03
Вызов SQL-функции с меняющимся аргументом


2-1237800927
Iriss
2009-03-23 12:35
2009.05.03
InputBox


2-1237419179
Новичок
2009-03-19 02:32
2009.05.03
Программное добавление полей в ADOTable1





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский