Як підібрати цифровий код до програми Ліцензійний ключ програми чи гри. Фізичний злам програми

При підборі пароля ніхто не гарантує успіх цього підприємства). Однак є деякі правила, які здатні значно підвищити Ваші шанси на сприятливий результат цієї справи.

З чого почати

  1. Найчастіше потрібен як пароль, а й логін. Якщо Ви намагаєтесь підібрати логін, наприклад, для проникнення в комп'ютер Вашого колеги, використовуйте його ім'я. Якщо воно не підійшло, подивіться як ця людина називає саму себе в соціальних мережах (Twitter, Facebook, Vkontakte та ін.) — найчастіше це працює 100%.
  2. Подивіться, чи є обмеження на довжину пароля, що вводиться, або використовувані символи. Найчастіше пароль повинен складатися з не менше шести символів і містити мінімум одну цифру. Якщо Ви не знаєте, є й такі обмеження, спробуйте завести свій власний обліковий запис, наприклад, на сайті, підбір пароля до якого Ви здійснюєте - при реєстрації Вам буде сказано про вимоги до паролів.
  3. Запитайте запитання-підказку. Найчастіше сторінки введення паролів мають таку функцію. Як правило, як питання-підказки використовують такі питання, як «Дівоче прізвище матері?», «Як звуть Вашого домашнього вихованця?», «У якому місті Ви народилися?» та ін. Це дозволить значно звузити можливі варіантислів, особливо якщо Ви хоч щось знаєте про людину!

Використовуйте хитрощі

  1. Просто вгадайте пароль. Найчастіше люди користуються одними і тими ж стандартними паролями. Їхній список вже давно відомий і постійно поповнюється). Нижче Ви знайдете 25 найпоширеніших паролів (за версією Splash Data):
    password
    123456
    12345678
    abc123
    qwerty
    monkey
    letmein
    dragon
    111111
    baseball
    iloveyou
    trustno1
    1234567
    sunshine
    master
    123123
    welcome
    shadow
    ashley
    football
    jesus
    Michael
    ninja
    mustang
    password1

    А ось деяка статистика:
    4,7% користувачів використовують пароль password;
    8,5% користувачів вибирають один із двох варіантів: password або 123456;
    9,8% користувачів вибирають один із трьох варіантів: password, 123456 або 12345678;
    14% користувачів вибирають один із 10 найпопулярніших паролів;
    40% користувачів вибирають один із 100 найпопулярніших паролів;
    79% користувачів обирають один із 500 найпопулярніших паролів;
    91% користувачів вибирає один із 1 000 найпопулярніших паролів.

  2. Застосовуйте відомі правила підбору. Досвідченим шляхом встановлено, що якщо пароль має у своєму складі цифри, це буде цифра 1 або 2, і вона буде наприкінці нього. Також, якщо пароль має велику букву, то вона буде на самому початку слова, а за нею йтиме голосна.
  3. Стать людини може підказати. Відомо, що жінки як паролі вважають за краще використовувати особисті імена (ім'я чоловіка або коханця), а чоловіки - свої хобі та інтереси (назва улюбленої спортивної команди, марки автомобіля тощо).

Використовуйте інформацію, що стосується людини

  1. Імена власні: імена подружжя, членів сім'ї, домашніх вихованців, спортсменів, дитячі прізвиська та ін.
  2. Хобі та інтереси: назви улюблених передач, героїв фільмів, професій, кулінарні страви та ін.
  3. Важливі числа та дати: день народження, адреса, номер телефону та ін.

Disclaimer: все нижченаписане написано виключно з просвітницькими та дослідницькими цілями, а також розуміння механізмів захисту від злому. Автор у жодному разі не рекомендує використовувати цю інформаціюдля злому програм.

У цій статті я хочу розповісти про три з половиною основні способи злому програм на .NET, мета, яку я переслідую - допомогти розробникам краще зрозуміти механізми захисту своїх програм, тобто. з'ясувати найбільш очевидні загрози та вжити відповідних заходів (або не вживати).

Я не заглиблюватимуся в деталі і використовуватиму складні інструменти для злому. Все буде розписано для чайників, тобто. всі інструменти будуть простими, доступними і безкоштовними. А основним буде Reflector, декомпілятор програм під.NET

Як піддослідний кролик я вибрав Expresso - аналізатор регулярних виразів. Ця програмабезкоштовна, в ліцензії начебто нічого не вказано про злом, але при цьому без реєстрації вона працюватиме лише 60 днів. Іншими словами, шкода від злому даної програми мінімальна, до того ж внутрішній її пристрій дуже добре підходить для тренування. Сподіватимуся, що автор цієї програми не образиться на мене.


Для початку короткий лікнеп за структурою .NET програми, для тих хто не знайомий з розробкою під даний Framework: весь код, написаний будь-якою мовою. IL або MSIL. Це щось типу асемблера, тільки дуже розумного і дуже потужними інструкціями. І це, в принципі, така сама рівноправна мова як і C#, тільки синтаксис гірший (а можливості більше). З іншого боку, у програмі на.NET активно використовуються метадані, тобто. вся інформація про класи, методи, проперти, атрибути і решту збережена у виконуваному файлі.
Тобто. насправді, декомпіляція програми не дуже правильне поняття в даному випадку. Вона і так вся у відкритому вигляді лежить, а інструменти у вигляді Reflectorа займаються тим, що приводять конструкції MSIL до відповідних конструкцій C# або іншої мови, підвищуючи читабельність коду.

Перейдемо, власне, до злому.

0. Обнулення тріалу

Власне це навіть не злом, а напівлегальний спосіб продовжити термін використання неактивованої програми. Полягає він у тому, що знаходиться місце, де зберігається дата першого запуску та змінюється/знищується. Після цього все можна скористатися програмою до наступного терміну.

Подивимося на нашого піддослідного рефлектором:
Трохи погулявши за кодом, знаходимо цікавий рядок у конструкторі MainForm


Відкриваємо редактор реєстру, йдемо в HKEY_CURRENT_USER\Software\Ultrapico\Expresso і бачимо такі ключі:


Видаляємо їх та отримуємо ще 60 днів роботи.

Даний варіант, звичайно, простий і очевидний, але якщо він навіть був би складнішим - потрібно було б трохи більше часу провести в рефлекторі, щоб з'ясувати всі місця, куди пишеться інформація та зачистити їх.

Порада розробникам, які намагатимуться записати дані в таємне місце: пишіть акуратніше, бо все може обернутися проблемами звичайним користувачам, у яких чомусь не виявиться даного місця, або не вистачить на нього прав.

1. Написання keygen"а

Найжахливіший для розробника варіант, і найприємніший для кінцевого злого користувача. Програма вважає себе ліцензійною, жодних страшних рухів тіла не потрібно робити.

Відкриваємо рефлектор і шукаємо код на предмет класів, що містять License або Registration, бачимо:

При введенні імені та коду на ім'я обчислюється якийсь хеш, який і порівнюється з кодом.


Цей хеш використовує DES і будь-які префікси


Байти конвертуються в рядок за допомогою цього методу.

Тепер все з'ясувалося, відкриваємо IDE та копіюємо всі необхідні шматки коду (або самі реалізовуємо). Залишилося тільки з'ясувати, які значення Prefix, Suffix і параметри реалізації MyDES. Я їх не наводитиму, це вже технічні деталі.

В результаті генеруємо ключ на будь-яке ім'я та бачимо:


Бінґо!

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

2. Використання враппера

Перевірка коректності ліцензії, досить клопітна справа та нешвидка. Тому розробники програм зазвичай перевіряють ліцензію один раз, і далі використовують отриманий прапорець - валідна/невалідна (як варіант наскільки валідна, якщо допускається кілька типів ліцензії, що відрізняються можливостями). Тут можна на цьому зіграти, використавши наступний алгоритм:
  1. Вказати програмі, що ліцензія вже перевірена
  2. Вказати програмі, що ліцензія коректна
Як це зробити? Я вже згадував про наявність метаданих у виконуваних файлахна початку, цим і скористаємося. Подивимося як запускається програма та як перевіряється ліцензія:


Із запуском нічого цікавого, а у перевірці видно, що якщо вже програма зареєстрована, то вона вважає, що все добре і не робить подальшої роботи щодо з'ясування коректності ліцензії.

Скористаємося цим:
Зробимо новий проект, додамо Reference на Expresso.exe і запустимо його через себе:


Дивимося, що вийшло:


Ну, хто б сумнівався.

В даному випадку все виявилося просто, але якби автор програми замінив публічні властивості на приватні, то лише довелося б використовувати Reflection для доступу і все звелося б до вихідної задачі.

Думаю зрозуміло, як можна намагатися захиститися від цього - перевіряти ліцензію періодично, дивитися оточення з якого запущена програма, унеможливити встановлення потрібної змінної.

Але всі ці захисту призведуть до того, що зловмисник використовуватиме

3. Фізичний злам програми

Тут уже все серйозно. Програма повністю декомілюється в MSIL а з нього вже збирається назад (пам'ятаєте, я писав, що MSIL це така сама мова, як і C#?). Для декомпіляції нам знадобиться утиліта із SDK під назвою ildasm, а для компіляції компілятор із .NET Framework ilasm.

Запускаємо ildasm, відкриваємо Expresso.exe та зберігаємо дамп в.il файл. Знаходимо вже розглянутий метод IsRegistered і додаємо трошки свого коду (без міток):

Потім беремо ilasm і збираємо все назад (не забувши підключити ресурси).

Що робить цей код: встановлює потрібне ім'ядля реєстрації (не обов'язково) і повертає статус, що все добре.
Щоб було зрозуміліше, так це виглядає в рефлекторі, C#

Тобто. цілком очевидно, що тепер все буде добре:

Трохи про код у MSIL: це стекова машина, яка не має регістрів, всі операції мають вигляд: засунути в стек потрібну кількість параметрів, виконати функцію, яка забере потрібну кількість параметрів і покладе результат. Та й назад: встановити значення змінної тим, що лежить у стеку. Щоб краще зрозуміти роботу всього цього, рекомендую простий прийом: пишіть маленьку програму звичною мовою, компілюєте, дивіться що вийшло в MSILe і розумієтеся на конструкціях мови.
При цьому деякі речі в MSIL можна зробити дуже красиво, наприклад, поміняти дві змінні місцями - 4 симпатичні рядки (на C# менше, але некрасиво).

Чим жертвує зловмисник: підписом програми тепер вона вже не автора, а його. У деяких випадках це проблема, якщо програма використовує безліч бібліотек. Тоді злому хакеру доведеться розбирати їх усі і збирати їх заново, але якщо він із цим впорається, то у нього буде «своя» версія програми, підписана йогоключем.

Захисту від цього неподобства власне небагато: проводити обфускацію чи виносити частину логіки/перевірки захисту в нативний код.

Висновок

Думаю, я розповів, як просто все можна розламати на .NET, якщо творець не доклав зусиль для захисту своєї програми. А ви вже вирішуйте, чи варто робити захист і витрачати час і ресурси. А може просто зробити web-систему, або безкоштовну обмежену версію. Вирішувати розробникам.

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

Генератор промокодів- Специфічний сервіс, який може бути використаний власниками організацій та торгових підприємств для проведення акцій та розіграшів.

НаприкладЗа промокодом можуть надаватися знижки, діяти подарункові сертифікати в магазинах, на інших сервісах за їх допомогою може бути надано доступ до більш широкого спектру послуг.

Вибір

Для тих користувачів, які досить часто використовують промокод, важливо знайти функціональний і зручний генератор, що відповідає всім вимогам.

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

Вони відрізняються за налаштуваннями та списком можливостей.

Правильно обраний генератор здатний значно спростити процес роботи з організації акцій та спецпропозицій, а також розіграшів.

Основні характеристики

Усі популярні (і не дуже) генератори відрізняються один від одного за цілим рядом параметрів.

Серед них такі показники як число знаків у коді, наявність префікса та постфікса (що спрощує класифікацію та поділ кодів на групи), що використовуються у т.д.

Крім того, різні сервіси пропонують різну кількість кодів для одночасної (натисканням однієї кнопки) генерації.

Основні технічні характеристикирозглянутих нижче сервісів наведено у таблиці.

Таблиця 1 . Порівняльні характеристики різних сервісів з генерації промокодів
НазваЛіцензіяПрефікс, постфіксВибір символів, що використовуютьсяВибір числа символівШвидка генерація кількох кодів
GetEasyCode.ruУмовно безкоштовна, платна розширенаТакТакТакТак
RandomizeБезкоштовнаНіТакТакТак
TakeTheCodeБезкоштовнаТільки префіксТакТакТак
AcademyБезкоштовнаНіНіНіНі
Генератор ukrbio.comБезкоштовнаНіОбмеженийТакТак
Studio F1БезкоштовнаНіОбмеженийТакТак
InglobalБезкоштовнаТільки префіксОбмеженийТакТак

Грунтуючись на цих характеристиках, простіше зробити правильний вибір.

GetEasyCode.ru

Це постій і швидко завантажується односторінковий сайт з генератором, який працює швидко та стабільно.

Буває доступний майже завжди.

Основна відмінна риса сервісу– максимальна функціональність та висока швидкість роботи.

Меню просте та інтуїтивно зрозуміле, дизайн приємний та не відволікає від раби.

  • Дозволяє створити префікс та постфікс;
  • Можна генерувати одразу кілька кодів (від 1 до 100 штук);
  • Користувач може вибрати, які символи використовувати в коді.
  • незручне перемикання кількості кодів;
  • Платне надання від 100 до 999 кодів - ціна 299 рублів (на момент написання статті);
  • Платне надання від 1000 кодів - ціна 999 рублів (також на момент написання статті);
  • Необхідно постійно натискати кнопку «Я не робот».

Ось що кажуть користувачі, які вже використовували даний генератор: "Зручний, багатофункціональний сервіс", "Достатньо високі ціни на генерацію", "Зручно використовувати цей генератор - застосовую тільки його".

Randomize

Цей сайт призначений для генерації випадковим чином різних паролів, промокодів, чисел і т.д.

Він багатофункціональний та зручний для тих, хто проводить різні розіграші або використовує безліч паролів.

Цей генератор позиціонується як преміум-сервіс для інтернет-магазинів.

Це не найпростіший у використанні, але дійсно багатофункціональний та безкоштовний сервіс.

Основна особливість сервісу є, так званого «індивідуального» режиму побудови коду.

У цьому режимі можна прописати існуючий код, вказавши, що потрібно змінювати лише певні символи.

  • Можливість прописати префікс;
  • Можливість прописати символи, що використовуються вручну;
  • Наявність "індивідуального" режиму налаштувань генерування;
  • Можна згенерувати до 10 мільйонів кодів та завантажити їх у тому чи іншому форматі;
  • Вказує можливість підбору для кодів різного типу.
  • Відсутність можливості прописати постфікс;
  • Обмежена невелика кількість символів (від 4 до 16);
  • Генерується щонайменше 1000 кодів.

Користувачі відгукуються про сервіс таким чином: «Зручно, що можна згенерувати відразу дуже багато кодів», не дуже зручне меню».

Academy

Цей генератор доступний для використання за посиланням https://academy.ru/personal/promo-gen/.

Це багатофункціональний сайт, серед багатьох його функцій є, в тому числі, і генератор промокодів.

Досить складний дизайн та безліч сторінок веде до того, що сервіс досить довго вантажиться.

Важливо розуміти, що цей сайт не спеціалізований генератор. Він може допомогти одноразової генерації.

Але в масових масштабах використати його неможливо.

  • Швидка генерація без зайвих налаштувань;
  • Зручне копіювання коду натисканням однієї кнопки;
  • Готова база невикористаних промокодів.
  • Дуже мала кількість функцій – не можна вибрати кількість або число кодів, що одночасно генеруються, тощо;
  • Не можна прописати префікс або постфікс, дизайн коду також вибирається за замовчуванням;
  • Досить багато різних посилань та дизайнерських ускладнень на сторінці, що робить роботу не надто простою.

Користувачі відгукуються про генератор так: «Для отримання одного промокоду може і нормально, але як використовувати його ширше – незрозуміло», «Дуже незручно і мало функцій».

Генератор ukrbio.com

Це односторінковий генератор із простим меню та інтуїтивно зрозумілим інтерфейсом.

Має простий та приємний дизайн, завдяки якому сторінка швидко завантажується.

Сервіс працює стабільно та надає достатній набір функцій.

Даний сервіс дозволяє генерувати комбінації тільки з цифр, тільки з літер, змішані, включаючи або .

Також можна налаштувати регістр літер та вивести всі коди у тому чи іншому форматі.

  • Просте меню та мінімалістичний дизайн сторінки сайту;
  • Безкоштовне створення дуже великої кількості кодів (від 1 до 9999 штук);
  • Досить широкі можливості настроювання формату та зовнішнього вигляду майбутніх кодів.
  • <Рис. 8 Studio F1>

    Цей багатофункціональний сервіс з генерації доступний за посиланням https://studiof1.ru/blog/developing/passgen/.

    Сайт є багатофункціональним ресурсом з сервісами для розкрутки сайтів і т.п.

    Ресурс має досить простий дизайн і використовувати його зручно в тих випадках, коли користувач, крім акцій, проводить розіграші та інші заходи для залучення аудиторії.

    Строго кажучи, цей сервіс називається генератором паролів, він здатний створювати досить складні та різноманітні комбінації, які можна використовувати як промо-коди.

    Адже цей сервіс дозволяє використовувати майже ті самі налаштування, які пропонує генератор промо-кодів.

    • Можливість вибрати довжину пароля та його склад (малі та великі літери, цифри, знаки);
    • Можливість генерувати відразу кілька паролів-кодів;
    • На цьому сайті «під рукою» знаходиться безліч допоміжних часто необхідних функцій.
    • Неможливість встановити префікс та постфікс;
    • Неможливо обмежити або вибрати символи, що використовуються;
    • Усі коди прописуються одним словом без пробілів і мають приблизно однаковий зовнішній вигляд, їх неможливо завантажити - тільки скопіювати як звичайний текст, що незручно при великій кількості.

Уявімо ситуацію, коли Вам довелося «знести вінду» (видалити операційну систему windows) та встановити нову. Якщо з цим Ви впораєтеся, то може виникнути така проблема, як встановлення вже звичних для Вас програм та ігор. Добре якщо вони знаходяться у вільному доступі та безкоштовні, але що робити коли Ви заплатили за програму (або гру), а при перевстановленні вона від Вас вимагає ліцензійний ключ(і це цілком нормальне явище)? Добре, якщо Ви його десь зберегли та записали, а що робити якщо втратили чи не залишили ключ? У такому разі є два варіанти рішення.

1) Написати на підтримку цієї програми та пояснити ситуацію. Якщо розробники нормальні і Ви їм доведете, що дійсно купили їхній продукт, то вони Вам допоможуть.
2) Скористатися однією безкоштовною програмою, про яку буде нижче текст.

Отже, програма називається Belarc Advisor - Free Personal PC Audit

Процес установки нормальний.
Спочатку погоджуємося з інформаційним повідомленням про те, що є у них версія і для Android

Потім погоджуємось із ліцензійною угодою


Далі тиснемо кнопку Install (програма не запитує куди встановити) і погоджуємося з аналізом системи на пошук ключів:


Чекаємо на завершення


І зрештою відкриється вікно (такий вид звіту) з різноманітною інформацією (операційна система, всі комплектуючі, користувачі, мережі тощо). Тут шукаємо внизу пункт Software Licenses і бачимо, що знайшла програма:

У мене так багато, т.к. користуюся переважно безкоштовними рішеннями, але сенс зрозумілий.

Таким чином, за допомогою цієї програми можна дізнатися ліцензійні ключі не тільки на операційну системуі програми, а також дізнатися докладну статистику про Ваш комп'ютер (аж до останніх флешок, що підключаються). Тому я думаю ця програма стане Вам у нагоді і варто про неї знати.




Top