![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| CasperSC |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 27.11.2009 Репутация: нет Всего: 1 |
Смысл темы в том, что давайте поможем начинающим (мне в том числе), как создавать shareware защиту программ, конкретно генератор ключей и проверка в программе, не надо ухищрений как спрятать проверку подальше, это всё можно найти интернете, да и думаю никто особо стараться не будет. Просто нужно на конкретных примерах показать как это делается. Я просмотрел кучу сайтов и ничего не понял, там вообще ничего толком не объясняется. Знаю только, что для это нужно пространство имён System.Security.Cryptography
например шаблон на основе которого нужен конкретный код:
//вызов проверки при загрузке приложения (чисто для примера, а там уже каждый аорганизует как надо)
Можно ещё выдавать код в одном виде, а впрограмме, чтобы он расшифровывался по какому нибудь заранее определённому алгоритму и уже расшифрованный проверялся, незнаю надо это или нет. Помогите, кто нибудь, думаю многим это не составит проблем. нашёл такой код и что-то не пойму где его использовать, можно и его запихать в выше приведённый шаблон:
Если из этой темы, что нибудь выйдет и если я разбирусь с защитой, выложу более менее приличный метод защиты. Это сообщение отредактировал(а) CasperSC - 27.1.2010, 18:38 |
||||||
|
|||||||
| CasperSC |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 27.11.2009 Репутация: нет Всего: 1 |
Неужели никто не умеет? Все программируют, все защищают, никто не умеет? Ну хоть что нибудь напишите.
|
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 1 Всего: 128 |
Для .NET вразумительных попыток защиты кода сейчас немного. Из нормальных - это обфускация. Есть еще попытки динамической расшифровки кода, но она в стадии разработки, бешеной цены и не кроссплатформенная. Других методов пока не придумано.
|
|||
|
||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
Я поднимал такую тему. Ссылка
Собственными силами, Вы не напишите адекватной защиты. Это сообщение отредактировал(а) ДобренькийПапаша - 26.1.2010, 19:33 -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| Sfate |
|
|||
![]() Angry Beaver ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 7.9.2008 Где: mov AL, BL Репутация: нет Всего: нет |
когда то тоже интересовался защитой кода... нашел программу, которая сжимает размер программы, путем замены некоторых значений на более простые... в итоге, просмотреть код программы тем же net.reflector уже нельзя... но полная работоспособность программы не гарантируется))
--------------------
"Начинающий программист твердо уверен, что в 1 кбайте 1000 байт, а опытный точно знает, что в 1 километре 1024 метра..." © Unknown |
|||
|
||||
| gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
Лучше написать 2 программы, одна полная-вторая урезанная, ибо все защиты тем более в .net на ура ломаются.
Вы можете написать самую невероятную защиту, но в итоге она сведется к одному bool значению, и для работы с программой достаточно его поменять, т.е. изменить один бит и вся ваша защита падает. |
|||
|
||||
| CasperSC |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 27.11.2009 Репутация: нет Всего: 1 |
Можно сделать кучу условий и не только с bool и не в одном методе. Поверь я хоть и новичок ну не на столько глуп. Вообще цель не код защитить, а написать метод для генерации серийников, на основе каких нибудь пользовательских данных. Просто я не знаю как сгенерировать серийник, чтобы выдать пользователю, а дальше сам разберусь. |
|||
|
||||
| gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
||||
|
||||
| CasperSC |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 27.11.2009 Репутация: нет Всего: 1 |
Работает 1 - 5 тамер(ов) Имею ввиду например пользователь вводит пароль и нажимает принять, при этом происходит ложная проверка, можно ещё при ложной проверке как нибудь повлиять на какие нибудь переменные (опять же как нибудь замудрённо, чтобы это небыло очевидно). 1 из 5-ти таймеров проверяет нажимали ли кнопку, если да, то запустить 40 таймеров, 3 - 8 из которых реально проверяют, 1 из 40 таймеров проверяет ту переменную которая была изменена при нажатии на кнопку (где производилась ложная проверка), но в разное время, например 1 через минут 20, остальные позже. и если там переменная не изменена, а программа как бы работает, то завершить программу и удалить себя с компьютера пользователя или низнаю, мож зашифроваться или заархивироваться, короче как нибудь неявно стать неработоспособной. Да вообще можно такого бреда понаписать, что сам потом не разберёшься Это сообщение отредактировал(а) CasperSC - 27.1.2010, 23:00 |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
Из всего, что вы написали эффективен только хороший обфускатор (с криптованием строк, с качественной обфускацией control flow, с невалидными конструкциями с точки зрения декомпилеров и т. д.). А в остальном - вы будете мучаться больше, чем взломщик. Проверка на "запущенность" рефлектора вообще убила - рефлектор это дизассемблер/декомпилятор, а не дебаггер! |
|||
|
||||
| gambit |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
Правильно, поставим комп на колени.
Это все отсеивается в 2 секунды. Я вам еще раз повторяю, какую бы защиту вы не написали, в итоге все сведется к
Так что все свелось к одному биту.
А вообще улыбнуло, реализуйте, я вам на примере покажу что это хренотень. Добавлено через 1 минуту и 36 секунд
Дочитал до конца, я бы вас принял на работу. Мне так хочется вас уволить. |
||||||||
|
|||||||||
| CasperSC |
|
||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 27.11.2009 Репутация: нет Всего: 1 |
40 таймеров не обязательно работающих с интервалом 100 миллисекунд. можно и раз в час проверять, комп от этого уж точно не встанент на колени, даже не почувствует и вообще это просто грубый пример.
Не спорю, может быть, только интересно чем?
Надо попробовать, правда генерация пароля будет полной лажей, так как не знаю как его генерировать. Мне даже интересно, может это всё и вправду хрень?
Во первых какая работа, я только начал учить C#, да и вообще программирование в целом. Всё что я понаписал я начитался на сайтах по защите кода, правда там писали про Delphi и ещё советовали не использовать VCL (вроде) и API функции. Короче видимо мне запудрили мозги. Ну и практически всё я сочинил на ходу не обдумывая деталей. P.S Ну а вообще, полюбому такой способ, пусть даже не такой замудрённый всё равно доставит проблем, чем просто if(true) {} else {} вот такое думаю как раз в 5 сек и ловиться и выключается. Вообще надо было тему назвать: Генерация ключей. Вопрос как сгенерировать, а не то поможет ли защита такая-то. Люди если кто умеет на C# покажите пример пожалуйста. На любом форуме одно и тоже. Не ответ на вопрос, а просто обсуждение, что это всё фигня и не поможет. Это сообщение отредактировал(а) CasperSC - 28.1.2010, 11:49 |
||||||||
|
|||||||||
| CasperSC |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 27.11.2009 Репутация: нет Всего: 1 |
Да Ещё раз спрошу: Как сгенерировать код на основе 3 - ёх каких либо строк, например имя ПК - Пользоватея - ещё что нибудь? |
||||
|
|||||
| gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
самый элементарный md5(имяПК + серийный номер любой платы) Я только не понимаю, какую защиту вам даст получение ключа у пользователя. Мне всегда казалось что это мы должны пользователю ключ давать, а не он нам. Добавлено через 2 минуты и 54 секунды Или схема такая? Программа генерит код, отсылает его вам, потом вы присылаете его пользователю, он вводит и удивляется - как это вы создали код который только на этом компе работает? |
|||
|
||||
| CasperSC |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 27.11.2009 Репутация: нет Всего: 1 |
[QUOTE=gambit,28.1.2010, 14:47]
Слушай, а у тебя есть чувство юмора Вот писал, для друга, он не знает как установить аську, типа учил его. Так вот обработали её 2 обфускатора, будь другом скажи такая защита ломается? По сути паролей и т.д. там нет, просто код реально прочитать? Ведь если его можно прочитать, то и защиту как я понимаю сломать? http://narod.ru/disk/17349523000/Protected...sounds.rar.html Вообще-то, надо, чтобы только на его компе работал этот ключ, а как иначе? Он просто его выложит где нибудь и всё. Это сообщение отредактировал(а) CasperSC - 28.1.2010, 16:26 |
|||
|
||||
| gambit |
|
||||||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
Стараемся
1. Помнишь фильм, я к сожалению не помню как он называется, там труп попросили 2 раза проформалинить. Вот 2 обфускатора, напомнили мне именно этот момент. в этом нет смысла
если можно прочитать код, то можно вскрыть, но это не значит, что если код прочитать не удается, то вскрыть невозможно.
1. Ты зацепился за номер видео карточки, а пользователь ее сменил, все получается он остался без программы, хотя заплатил за нее. Можно поступить как касперский, программа регится только через инет, пользователь прислал код, ты отправляешь в ответ разрешение на работу, и больше этот код не принимаешь (ну они принимают на случай переустановки винды и пр., но не стоит наглеть, при частых регистрациях его блокируют). Я так и не понял в чем вопрос? а) как защитить код от просмотра? б) как защитить копию программы? в) как создать ключ? Давайте все таки определим ветвь дискуссии. |
||||||
|
|||||||
| CasperSC |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 27.11.2009 Репутация: нет Всего: 1 |
нет ну просто 1-ый обфускатор работает не полностью, точнее программы не работают, если в нём в настройках все пункты выбрать, ну типа защита по максимуму. Так вот программы работают, если выбрать только 2 пункта: 1) Strings obfuscation 2) Control Flow obfuscation. после обработки, насколько помню, все имена методов классов и пространств имён остаются не тронуты. Пропускаю через второй обфускатор, всё норм становиться, но он не умеет, того что умеет первый. Получается бесплатная нормальная защита.
А чё толку? Никто всё равно конкретного кода не приводил и видимо не приведёт. Я только понял, что видимо меня не очень поняли, когда я просил показать как генерировать код имел ввиду как сгенерировать код наподобии - FD4RT-SD5GN-QP9K0-AV1W1 Ну как бы хотел узнать как это делают профессионалы, а не тупо пробовать "перемешивать" строки и т.д. На основе namespace System.Security.Cryptography хотелось бы научиться это делать. Мне предлагали на одном форуме использовать CPU ID (ага знать бы как его получить). Это сообщение отредактировал(а) CasperSC - 29.1.2010, 12:53 |
||||
|
|||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
CasperSC, Вы Криса Касперски читали? Если нет, почитайте (Касперски "Отладка без исходных текстов"), увидите как ломаются программы написанные на С++, даже такие которые пишут отличные системные программисты. После этого у Вас отпадут глупости по поводу защиты .NET.
Это сообщение отредактировал(а) ДобренькийПапаша - 29.1.2010, 13:50 -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
1. Любой генератор паролей 2. Используйте GUID 3. хеш от оборудования Но при 3 варианте, будьте готовы к разборкам, в стиле, пользователь сменил комп или компонент - прога больше не работает. В этом пространстве, собраны все таки классы для шифрования данных, а не защиты проги. http://forum.vingrad.ru/topic-119723.html правда там про делфи, но почитайте, вам будет интересно. но для этого надо писать функции, работы с памятью, что приводит к тому, что c# только мешается. Добавлено через 5 минут и 30 секунд
вам как будто жалко, что в ваш код заглянут. Кроме того, вся прелесть .net в последующем использовании компонентов программы. Например, я написал обалденную прогу для работы с БД на WinForm. Пока писал формы стали не модными, стало модно WPF или web. В этом случае я просто пишу UI и подключаю библиотеку для работы с БД, все прога готова. При обфусификации, подключить библиотеку уже довользо затруднительно, значит надо искать и достовать ее исходник, а если исходник потерял, то писать заново. Добавлено через 12 минут и 3 секунды А вообще посмотрите класс diagnostic, может там что и найдете, но врятли |
|||
|
||||
| gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
Вообще, защита программ, на мой взгляд, это больше юридический аспект, нежели технический.
Еще почитайте Майкл Ховард "Защищенный код" там правда основной упор на другое, но по поводу взлома кое что есть Добавлено через 2 минуты и 28 секунд а в этой статье http://www.cracklab.ru/art/?action=view&id=350 разбор программы после обфусификации |
|||
|
||||
| AGENTxXx |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 8.6.2009 Репутация: нет Всего: 1 |
Ребята, а каким образом можно дописать в exe файл какие ни будь данные и не повредить его? т.е. есть 2 exe файла которые написанны на C#. Нужно чтобы один добавил данные в другой. Это реально? Пишу по теме, так как думаю как разработать тоже защиту
|
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
||||
|
||||
| AGENTxXx |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 8.6.2009 Репутация: нет Всего: 1 |
Не, не с помощью лезть во внутрь, а с помощью отдельного exe файла который тоже сам пишешь
|
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
||||
|
||||
| AGENTxXx |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 8.6.2009 Репутация: нет Всего: 1 |
Спасибо! Чет ни чего, кроме Обфускации не нашел по поводу хорошей защиты. Хотя если подумать... долго подумать, то найдется все равно хороший метод который бы защитил от взлома. Например, придумали ведь шифрование с помощью открытого и закрытого ключа. И ведь пипец как долго его ломать, если приличной длины брать. Тут нужно что ни будь похожее по своей защите реализовать бы
|
|||
|
||||
| AGENTxXx |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 8.6.2009 Репутация: нет Всего: 1 |
Вот, хорошая статья. Как защитить прогу (любую). Конечно тоже не 100% но время взлома точно увеличит: тут ссылка
|
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
"Не используйте стандартные функции" - сурово... "Ассеблер, ассемблер" - у нас же .Net вроде?
В целом - стандартные, отчасти очевидные, отчасти маниакальные и.. вообщем-то бессмысленные советы. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |