Як зламати код?
Інформація, надана нижче, подана виключно з метою освіти, а також для сприйняття захисних методів від зломів. Не рекомендується застосовувати отримані знання для хакерських атак.
Даний посібник призначено для розкриття програм на .Net з метою надання допомоги програмістам у створенні кращих механізмів, які захищають свої розробки.
Принцип роботи .Net програм
До .Net мов програмування відносяться: C #, Visual Basic, F #, Delphi.Net. Код софта, прописаний на даних мовах, компілюється в MSIL або IL (Intermediate Language), який представляє собою стековий механізм без регістрів. Процес роботи в ньому виглядає так:
- В стек входить функція з певною кількістю змінних;
- Функція виконується;
- На виході виходить результат.
В .Net програмах поширені метадані, тобто інформація зберігається у виконавчому файлі. Абсолютно протилежний за дією код HTML - мова гіпертекстової розмітки, який тільки вказує комп`ютера, де і в якому вигляді інформація повинна знаходитися на веб-сторінці, що не є програмуванням.
Всі методи, розглянуті нижче, проводяться за допомогою декомпілятори програм під .Net Reflector. Як приклад використовується прикладна платформа Expresso, що виконує завдання аналізатора постійних значень.
Продовження терміну використання програми
Метод має на увазі, що шукається в програмному тексті рядок, де зберігається дата первинного пуску, яка або змінюється, або стирається. Далі знову певний час можна використовувати софт.
- Для здійснення задуманого слід зайти в конструктор Main Form і знайти посилання на ключі в ExpressoKey.
- Далі потрібно відкрити редактор реєстру за посиланням, де розташовуються ключі. Видаливши їх, можна продовжити термін роботи програми.
Тут рада розробникам: є можливість записати дані в "потаємне місце". Головне, щоб у користувача вони знайшлися.
Як зробити софт ліцензійним
Для того щоб зламати і ліцензувати програму, потрібно:
- Зайти в рефлектор і знайти місце в тексті, що відповідає за License або Registration.
- Ввести ім`я і код, за яким розраховується хеш, і порівняти їх.
- Тепер потрібно відкрити IDE і заповнити необхідний шматок в коді через копіювання або шляхом дописування. При цьому потрібно визначитися з параметрами Prefix, Suffix і змінними реалізації MyDES. Це все відноситься до технічних моментів.
Ключ можна згенерувати з будь-яким ім`ям. В такому випадку захист полягає в асиметричному шифруванні, тобто потрібно знати приватний ключ, без якого не можна отримати код.
Перевірка правильності ліцензії
Розробники софта зазвичай переглядають ліцензію раз, а далі просто застосовують прапорець: є чи ні.
Обійти цей момент можна двома способами:
- Обдурити програму фальшивої перевіркою ліцензії;
- Довести софту, що ліцензія дійсна.
Для цього в коді програми шукається місце перевірки ліцензії. Потім створюється новий проект. При цьому додається Reference на Expresso.exe і пропускається через себе. Якщо виявиться, що автор софта поміняв публічні властивості на приватні, то слід використовувати рефлектор для доступу, а потім все звести до вищеописаної процедури. Для захисту від подібних зломів потрібен час від часу перевіряти ліцензію, переглядати оточення запуску програм і виключити установку нової змінної.
Фізичний злом софту
Під фізичним зломом мається на увазі декомпіляція всієї програми в MSIL з наступним зворотнім збором. При цьому потрібно використовувати утиліту SDK з назвою ildasm і компілятор з .Net Framework ilasm. Процедура наступна:
- Завантажується ildasm;
- Виробляється запуск Expresso.exe і зберігається дамп в il. файлі;
- Знаходиться метод IsRegistered і змінюється код (без міток);
- За допомогою ilasm збирається все назад.
Ця процедура дає можливість зловмиснику вкрасти програму. І щоб захиститися, потрібно проводити обфускація або заносити частина перевірки щодо захисту в нативний код.
Так що автору програмного забезпечення слід добре подумати над захистом свого проекту, скільки на це витратити часу і ресурсів, а може простіше написати безкоштовну обмежену версію. Вирішувати тільки творцеві софта, адже зламати код здатний будь-який досвідчений хакер.