Як зламати код?
Інформація, надана нижче, подана виключно з метою освіти, а також для сприйняття захисних методів від зломів. Не рекомендується застосовувати отримані знання для хакерських атак.
Даний посібник призначено для розтину програм на .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 збирається все назад.
Ця процедура дає можливість зловмиснику вкрасти програму. І щоб захиститися, потрібно проводити обфускаціі або заносити частина перевірки щодо захисту в нативний код.
Так що автору програмного забезпечення слід добре подумати над захистом свого проекту, скільки на це витратити часу і ресурсів, а може простіше написати безкоштовну обмежену версію. Вирішувати тільки творцеві софта, адже зламати код здатний будь-який досвідчений хакер.