Введення коду поширене у Windows. Додатки “вводять” шматки власного коду в інший запущений процес, щоб змінити його поведінку. Цей прийом можна використовувати для добра чи зла, але в будь-якому випадку він може спричинити проблеми.
Введення коду також зазвичай називають введенням DLL, оскільки введений код часто має форму a Файл DLL (бібліотека динамічних посилань) . Однак програми можуть також вводити в процес інші типи коду, які не є DLL.
Для чого використовується ін’єкція коду
Введення коду використовується для виконання всіляких хитрощів та функціональних можливостей у Windows. Хоча законні програми використовують це, воно також використовується шкідливим програмним забезпеченням. Наприклад:
- Антивірусні програми часто вводять код у веб-браузери. Наприклад, вони можуть використовувати його для моніторингу мережевого трафіку та блокування небезпечного веб-вмісту.
- Шкідливі програми можуть додавати код у ваш веб-переглядач, щоб краще відстежувати ваш веб-переглядач, викрадати захищену інформацію, таку як паролі та номери кредитних карток, та змінювати налаштування вашого браузера.
- WindowBlinds від Stardock, який тематизує ваш робочий стіл, вводить код змінити спосіб малювання вікон .
- Stardock’s Fences вводить код змінити спосіб роботи робочого столу Windows .
- AutoHotkey, який дозволяє вам створювати сценарії та призначати загальносистемні гарячі клавіші для них , вводить код для цього.
- Графічний драйвер, як вбудовані DLL-файли NVIDIA, для виконання різноманітних завдань, пов’язаних із графікою.
- Деякі програми вводять DLL, щоб додати додаткові опції меню до програми.
- Інструменти для обману ігор для ПК часто вводять в ігри код, щоб змінити їх поведінку та отримати несправедливу перевагу над іншими гравцями.
Чи ін’єкція коду погана?
Ця техніка постійно використовується в самих різних програмах Windows. Це єдиний реальний спосіб виконати різноманітні завдання. У порівнянні із сучасною мобільною платформою, як iOS від Apple або Android від Android, робочий стіл Windows настільки потужний, що якщо запропонувати таку гнучкість розробникам.
Звичайно, з усією цією владою виникає певна небезпека. Введення коду може спричинити проблеми та помилки в додатках. Google заявляє, що користувачі Windows, які вводять код у свій браузер Chrome, на 15% частіше стикаються зі збоями Chrome, саме тому Google працює над блокуванням цього. Microsoft зазначає, що зловмисні програми можуть використовувати ін’єкцію коду для втручання в налаштування браузера, що є однією з причин, через яку вона вже заблокована в Edge.
Подія Microsoft забезпечує інструкції для перевірки завантаження сторонніх бібліотек DLL у Microsoft Outlook, оскільки вони спричиняють стільки збоїв у роботі Outlook.
Як зазначив співробітник Microsoft у блог розробника з 2004 року:
Введення DLL ніколи не є безпечним. Ви говорите про розбризкування коду в процес, який ніколи не розроблявся, не будувався та не перевірявся автором процесу, а про кооптацію чи створення потоку для запуску цього коду. Ви ризикуєте створити проблеми з синхронізацією або синхронізацією, яких раніше не було, або посилити проблеми, які там були.
Іншими словами, введення коду - це свого роду брудний хак. В ідеальному світі було б більш безпечним способом досягти цього, який не спричинив би потенційної нестабільності. Однак введення коду - це звичайна частина сьогоднішньої платформи Windows. Це постійно відбувається у фоновому режимі на вашому ПК з Windows. Ви можете назвати це необхідним злом.
Як перевірити наявність введених бібліотек DLL
Ви можете перевірити наявність ін’єкції коду у вашій системі за допомогою потужного Microsoft Провідник процесів застосування. В основному це вдосконалена версія диспетчера завдань з додатковими функціями.
Завантажте та запустіть Провідник процесів, якщо хочете це зробити. Клацніть Перегляд> Перегляд нижньої панелі> Бібліотеки DLL або натисніть Ctrl + D.
Виберіть процес у верхній панелі та подивіться на нижню, щоб побачити завантажені бібліотеки DLL. Стовпець "Назва компанії" надає корисний спосіб фільтрування цього списку.
Наприклад, звичайно бачити тут різноманітні бібліотеки DLL, створені корпорацією Microsoft, оскільки вони є частиною Windows. Також нормально бачити бібліотеки DLL, виготовлені тією ж компанією, що і процес, про який йде мова - "Google Inc." у випадку з Chrome на скріншоті нижче.
Тут ми також можемо помітити кілька бібліотек DLL, виготовлених програмою “AVAST Software”. Це вказує на те, що антивірусне програмне забезпечення Avast у нашій системі вводить у Chrome код, такий як “Бібліотека фільтрів блокування сценарію Avast”.
Ви не можете багато чого зробити, якщо виявите ін’єкцію коду у вашій системі - окрім видалення програми, що вводить код, щоб запобігти її виникненню проблем. Наприклад, якщо Chrome регулярно аварійно завершує роботу, ви можете перевірити, чи є програми, що вводять код у Chrome, і видалити їх, щоб запобігти втручанню в процеси Chrome.
Як працює ін'єкція коду?
Введення коду не змінює основну програму на вашому диску. Натомість він чекає запуску цього додатка, і він вводить додатковий код у цей запущений процес, щоб змінити його функціонування.
Windows включає в себе різноманітні інтерфейси прикладного програмування (API) який можна використовувати для введення коду. Процес може приєднатися до цільового процесу, виділити пам'ять, записати DLL або інший код до цієї пам'яті, а потім доручити цільовому процесу виконати код. Windows не заважає процесам на вашому комп’ютері перешкоджати подібним чином.
Для отримання додаткової технічної інформації перегляньте цю публікацію в блозі з поясненнями як розробники можуть вводити DLL і цей погляд на інші типи введення коду в Windows .
У деяких випадках хтось може змінити базовий код на диску - наприклад, замінивши файл DLL, який постачається разом із ПК-грою, на модифікований, щоб увімкнути шахрайство або піратство. Це технічно не "введення коду". Код не вводиться в запущений процес, але програма натомість обманюється завантажити іншу DLL з тим самим іменем.
Кредит зображення: Лукатме /Shutterstock.com.