Програмне Забезпечнння Обфускація

Обфуска́ція (від лат.

«Заплутування» коду може здійснюватися на рівні алгоритму, початкового коду та/або асемблерного коду. Для створення заплутаного асемблерного коду можуть використовуватися спеціалізовані компілятори, які використовують неочевидні або недокументовані можливості середовища виконання програми. Існують також спеціальні програми, що здійснюють обфускацію, які називаються обфуска́торами (англ. Obfuscator).

Цілі обфускації

  • Ускладнення декомпіляції/зневадження та вивчення програм з метою виявлення функціональності.
  • Ускладнення декомпіляції пропрієтарних програм з метою запобігання зворотної розробки або обходу DRM і систем перевірки ліцензій.
  • Порушення авторських прав програмістів і приховування авторства. Парадокс у тому, що використовується це переважно в пропрієтарних програмах.
  • Оптимізація програми з метою зменшення розміру працюючого коду і (якщо використовується мова, яка не компілюється) прискорення роботи.
  • Демонстрація неочевидних можливостей мови і кваліфікації програміста (якщо проводиться вручну, а не інструментальними засобами).

Технології

На рівні початкового коду

На JavaScript, VBScript і подібних скрипт-мовах користувачу доступний початковий код програми. В цьому випадку форматуванням тексту й заміною імен можна зробити текст менш прочитним.

Початковий код:

 int COUNT = 100;  float TAX_RATE = 0.2;  for (int i=0; i 

Код після обфускації:

 for(int a=0;a<100;a++){b[a]=c[a]*0.2;d[a]=c[a]+b[a];} 

На рівні машинного коду

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

Найпростіший спосіб обфускації машинного коду — вставка в нього недіючих конструкцій (таких як or ax, ax ).

На рівні проміжкового коду

На відміну від звичайних мов, таких як C++ і Pascal, які компілюють в машинний код, мова Java, NetP і мови платформи .NET компілюють початковий код в проміжний код (байт-код), який містить досить інформації для адекватного відновлення початкового коду. З цієї причини, для цих мов застосовується обфускація проміжного коду.

Призначення

Ускладнення дослідження коду

Як було сказано вище, декомпіляція програм Java і .NET досить проста. У цьому випадку обфускатор надає неоціненну допомогу тим, хто хоче приховати свій код від сторонніх очей. Найчастіше після обфускації декомпільований код повторно не компілюється.

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

Найпростіший приклад обфускованого HTML:

 Європа 

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

Оптимізація

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

Проблема зменшення розміру важлива, наприклад, при програмуванні для стільникових телефонів на J2ME, де розмір програми серйозно обмежений. Обфускація JavaScript зменшує розмір HTML-файлів і, відповідно, прискорює завантаження.

Недоліки

Втрата гнучкості коду

Код після обфускації може стати більш залежним від платформи або компілятора.

Складності зневадження

Обфускатор не дає сторонній особі з'ясувати, що робить код, але й не дає розробнику зневаджувати його. При зневадженні доводиться відключати обфускатор.

Недостатня безпека

Хоча обфускація допомагає зробити розподілену систему безпечнішою, не варто обмежуватися тільки нею. Обфускація — це безпека через приховування. Жоден з існуючих обфускаторів не гарантує складності декомпіляції і не забезпечує безпеки на рівні сучасних криптографічних схем. Цілком імовірно, що ефективний захист неможливий (принаймні в деякому конкретному класі вирішуваних завдань).

Помилки в обфускаторах

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

Виклик класу за іменем

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

Див. також

Посилання

Tags:

Програмне Забезпечнння Обфускація Цілі обфускаціїПрограмне Забезпечнння Обфускація ТехнологіїПрограмне Забезпечнння Обфускація ПризначенняПрограмне Забезпечнння Обфускація НедолікиПрограмне Забезпечнння Обфускація Див. такожПрограмне Забезпечнння Обфускація ПосиланняПрограмне Забезпечнння ОбфускаціяАлгоритмАнглійська моваДекомпіляторЛатинська моваПочатковий код

🔥 Trending searches on Wiki Українська:

DiscordТаблиця математичних символівСловаччинаЮщенко Віктор АндрійовичЧелсі (футбольний клуб)ЕстоніяПольщаКива Ілля ВолодимировичПакт Молотова — РіббентропаШахед-13628 березняНімецько-радянська війнаРеволюція гідностіXXXArmement Air-Sol ModulaireНаселення УкраїниПрезидентські вибори в Росії 2024Неоподатковуваний мінімумТурчинов Олександр ВалентиновичЦиферблат (гурт)МіГ-29КременчукСписок головних тренерів збірної України з футболуПолліаннаКривий РігШахтар (Донецьк)Таловєров Максим ВадимовичCanvaДержавний прапор УкраїниСписок капітанів збірної України з футболуДжо БайденРоксоланаМельбурнСписок найпоширеніших прізвищ в УкраїніАманда БайнсФашизмСиневирЧехіяОперативне командування «Північ»Західноукраїнська Народна РеспублікаАвстро-УгорщинаПутін Володимир ВолодимировичКарти GoogleЖадан Сергій ВікторовичТом ГенксЗалужний Валерій ФедоровичKraken (спецпідрозділ)ХристиянствоТуберкульозДія (сервіс)БМ-21 «Град»ІндіяЧемпіонат Європи з футболуMIM-104 PatriotКримська війнаОргазмЧарльз IIIОсманська імперіяОбвал мосту Френсіса Скотта КіСухопутні війська Збройних сил УкраїниКАБ-250Іван ВиговськийДюна (роман)ІспаніяДіана, принцеса УельськаПравославна церква УкраїниКолумбіяКам'янець-ПодільськийЧисло МахаГорбачов Михайло СергійовичГлобальне потеплінняРосійське вторгнення в Україну (з 2022)Зоряні війниХресна дорога116-та окрема механізована бригада (Україна)Нормативно-правовий актЯрмоленко Андрій Миколайович🡆 More