Ласкаво просимо до dev.net.ua Увійти | Приєднатися | Допомога | Увійти Live ID
в Пошук

usarskyy

Тріал період у ... 0 днів!

Всім алоха!

Warning! Якщо ваші релігійні чи ще_якісь_там погляди не дозволяють користуватись такою чудовою тулзою як Reflector, прохання далі не читати! Так як в основі даного поста буде лежати саме його використання.

Думаю, цей пост буде цікавий насамперед новачкам у .NET, тому прохання до "фулів" і "суперіорів" не писати коменти в стилі "ми таке в дитсадку робили".


Частина перша: передісторія
Недавно я вирішив додати до однієї з власних програмок трохи гламуру (під "власною" я розумію тулзу, яку використовую виключно я і тільки я). Конкретніше, мені знадобився красивий ListView Smile Гугл видав декілька результатів, але мій вибір впав саме на цей контрол.
І хоча виробник не давав ліцензії "for non-commercial use", я все-одно вирішив викачати бібліотеку і протестувати її тріальну версію Smile

Скачав... проінсталював... переніс контрол на форму... тут мені запропонували або купити контрол, або задовільнитись 30-денним тріальним періодом, я вибрав тріал (у нашому колгоспі поки не дають грошей на такі гламурні штуки Crying )... додав декілька колонок у ListView... натиснув F5... і тут мені повідомляють:



Не знаю як хто, але я розраховував на трохи більший тріал-період Big Smile
Повторний запуск не дав жодних позитивних результатів Tongue Tied


Випивши чаю і обдумавши ситуацію, я вирішив що просто так не здамся і все-таки подивлюсь як виглядає скачаний ListView в дії (звичайно ж крякнувши його перед цим Devil )! Єдине що лякало в цій ситуації - це захист бібліотеки.

Я більш ніж упевнений, що люди, які зробили скачаний мною контрол - професіонали своєї справи. І як професіонали вони вирішили скористатись послугами таких же професіоналів з захисту програмних продуктів.
Часи коректування ключів реєстру з назвами IsRegistered давно минули, тому мені мало б світити повне фіаско у справі "крякання"... але, як кажуть, "проба грошей не коштує" Cool

Отож, що ми маємо на цей момент?
1) GUI-бібліотека, яка відмовляється працювати гарантовані 30 днів - 1шт.
2) Велике бажання спробувати цю бібліотеку в дії - 1 ВЕЛИКА шт.
3) Автор цього поста, юзверь який прочитав статтю "Reflector for dummiesGeeked - 1 шт.

А що нам необхідно?
1) Все вище перелічене (хоча, третій пункт прийдеться замінити Wink )
2) Reflector і один чудовий Add-in до нього


Зовсім випадково весь необхідний набір виявився у мене на вінчестері Yes Тому я переходжу до наступної частини!


Частина друга: темні справи
Відкриваємо папку, куди був встановлений наш GUI-компонент і дивимось які там є бібліотеки. У моєму випадку їх 3:
1) LidorSystems.IntegralUI.DLL
2) LidorSystems.IntegralUI.Lists.DLL
3) LidorSystems.IntegralUI.Lists.ListView.dll

Судячи з назв, декомпілювати їх прийдеться у перерахованому вище порядку...

Відкриваємо Reflector, додаємо потрібні нам ліби і зберігаємо їхні "сорси" на хард-диск Smile Як зберегти сорси показано на малюнку нижче (не забудьте встановити скачаний Add-in!):



В результаті маємо отримати 3 незалежні проекти.


Наступний крок: створюємо WinForms-проект (для тестування нашого контрола) і додаємо до нього проекти декомпільованих бібліотек. Після цього потрібно не забути поправити референси в кожному з декомпільованих проектів один на одного, так як на даний момент всі референси вказують на бінарники, а нам потрібно щоб вони були "проектними" (project reference).

Тепер пробуємо скомпілювати весь наш солюшн... З першого разу може і не вдатись, так як можуть бути незначні помилки в коді, які потрібно буде виправити. Після вдалого компілювання не поспішайте додавати контрол на форму і пити пиво! Памятаєте заради чого я почав писати цей пост? Правильно! заради обходу механізму тріал-періоду Wink

Тому спробуємо додати ListView програмно (хоча достатньо буде просто створити екземпляр його класу):

        private void button1_Click(object sender, EventArgs e)
        {
            ListView testControl = new ListView();
            Controls.Add(testControl);
        }


Запускаємо WinForms-проект і натискаємо на button1... На моніторі має зявитись вікно аналогічне першому малюнку. Ввічливо відмовляємось від купівлі компоненти і отримуємо exception в методі Init() класу LidorSystems.IntegralUI.Lists.ListView. Код, що викликав exception виглядає так:

if (!base.DesignOnly && !this.Intialize(this))
            {
                throw new Exception("Your evaluation has expired");
            }


Думаю, логічно буде закоментувати цю частину коду Wink Після цього компонент можна вільно тестувати!
А щоб все було взагалі ідеально, видаліть атрибут LicenseProvider(typeof(EncryptedLicenseProvider)) класу ListView.


Заключна частина
Як висновок можу сказати одне, платити гроші за всякі "хитрі" LicenseProvider-и для компонентів не має змісту. Всі вони легко обходяться і не становлять якусь надзвичайну міру захисту :( В найгіршому випадку, прийдеться витратити на пів години більше часу на видалення перевірки ліцензії Smile


Памятайте, що використання "крякнутих" пограмних продуктів категорично заборонене! За таке можна "отримати по вухах" :)
Опубліковані Thursday, March 06, 2008 12:23 AM від usarskyy
Помічено як: , ,

Коментарі

 

Mike Chaliy сказав:

Ідеального захисту немає,увесь захист можна зламати, тому багато компаній не паряться з цього приводу. Деякі компанії навіть вихідний код розповсюджують(Infragisitcs). Фішка в тому що вони за три місяці випусть нову версію. А ви її вже не отримаєте, або вам потрібно буде її заново ломати. Так і 300-800 баксів далеко не лоя кожної контори гроші ізза яких треба нехутвати підтримкою.

До речі в майкрів є і більш менш складне рішення для коде протекшену. Але воно вже коштує гроші, а не в бдоване в .Нет ;).

March 5, 2008 11:41 PM
 

usarskyy сказав:

Відколи Infragisitcs розповсюджує код своїх продуктів (якщо я його не купую, звісно)..? Я б не проти отримати декілька їхніх контролів :)

Я не старався поставити рекорд по швидкості кряку, але на дизактивацію захисту цього контрола у мене 100% пішло не більше пів години... Тому нова версія аж ніяк не стане чимось недоступним :)

А взагалі, як я уже писав, крякати програмні продукти заборонено! Якщо у вас є нормальний тріальний період (а не так як у мене) - оцінюйте продукт на здоровя і нічим не парьтесь!

March 6, 2008 1:55 AM
 

Артур Ракицкий сказав:

Сборки со строгим именем и подписаны?

March 6, 2008 3:45 AM
 

usarskyy сказав:

Якщо ваше питання стосується можливої помилки при компіляції "ви повинні додати референс на бібліотеку 'таку_то;, версія='така_то', паблік_кей_токен='такий_то'", то скажу що це "лікується" за 10-15 хв :)

P.S.: ця бібліотека була не підписана

March 6, 2008 5:06 AM
 

Артур Ракицкий сказав:

"ця бібліотека була не підписана." Ну, собственно, безответственное отношение к защите прав собственности налицо :)

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

March 6, 2008 7:31 AM
 

usarskyy сказав:

я думаю що вони просто забули :)

якщо говорити чесно, то я спершу крякнув інший контрол цієї компанії (TreeView), а вже потім вирішив написати цей пост... але так як робити одне і теж по 2 рази - нудно, то всю роботу провів над їхнім ListView :)

ну так ось, TreeView був "підписаний", але це його ніяк не врятувало.

взагалі, захистити контрол - практично нереально. якщо до закритого програмного продукту можна застосувати обфускатор, то тут таке уже не пройде по тій простій причині, що назви класів "aa"/"bb" навряд чи сподобаються кінцевому користувачу :(

March 6, 2008 11:15 AM
 

usarskyy сказав:

о! доки не забув, хочу порекомендувати ось цю бібліотеку: http://www.componentfactory.com/products.php#toolkit

хлопці виконали завдання на 5+ і не страдають "тріальною" хворобою :)

March 6, 2008 11:19 AM
Анонімні коментарі деактивовані. Увійдіть або Зареєструйтесь щоб мати доступ до ресурсів Спільноти.