Домашня » як » Що таке ін'єкція коду в Windows?

    Що таке ін'єкція коду в Windows?

    Ін'єкція коду є звичайною для Windows. Програми "вводять" частини власного коду в інший запущений процес, щоб змінити його поведінку. Ця техніка може бути використана для добра або зла, але так чи інакше вона може викликати проблеми.

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

    Для кого використовується ін'єкція коду

    Ін'єкції коду використовуються для виконання всіх видів трюків і функціональності Windows. Хоча її використовують законні програми, вони також використовуються шкідливими програмами. Наприклад:

    • Антивірусні програми часто вводять код у веб-браузери. Вони можуть використовувати його для моніторингу мережевого трафіку і блокування небезпечного веб-контенту, наприклад.
    • Шкідливі програми можуть додати код до веб-переглядача, щоб краще відстежувати перегляд, красти захищену інформацію, наприклад, паролі та номери кредитних карт, а також змінювати налаштування веб-переглядача.
    • WindowBlinds Stardock, який викладає тему вашого робочого столу, вводить код, щоб змінити як малюються вікна.
    • Загородження Stardock вносить код, щоб змінити спосіб роботи робочого столу Windows.
    • AutoHotkey, що дозволяє створювати скрипти та призначати їм загальносистемні гарячі клавіші, вводять код для виконання цього.
    • Графічні драйвери подібні до інсталяції DLL для NVIDIA для виконання різноманітних завдань, пов'язаних з графікою.
    • Деякі програми вводять DLL для додавання додаткових пунктів меню до програми.
    • Інструменти для обманювання комп'ютерних ігор часто вводять код у ігри, змінюючи їх поведінку і отримуючи несправедливу перевагу над іншими гравцями.

    Чи є ін'єкція коду поганою?

    Ця техніка постійно використовується широким спектром додатків на Windows. Це єдиний реальний спосіб досягти різноманітних завдань. У порівнянні з сучасною мобільною платформою, такою як iOS від Apple або Android від Google, робочий стіл Windows настільки потужний, тому що, якщо запропонувати розробникам такого роду гнучкості.

    Звичайно, при всій цій владі виникає небезпека. Ін'єкція коду може викликати проблеми та помилки в додатках. Google стверджує, що користувачі Windows, які мають код, введений у свій браузер Chrome, на 15% частіше відчувають аварії Chrome, тому Google працює над блокуванням цього. Корпорація Майкрософт відзначає, що ін'єкція коду може бути використана шкідливими програмами для втручання в налаштування браузера, що є однією з причин того, що вона вже блокується в Edge.

    Корпорація Майкрософт навіть надає інструкції щодо перевірки завантаження в Microsoft Outlook бібліотек DLL сторонніх виробників, оскільки вони викликають стільки аварій Outlook.

    У 2004 році співробітник корпорації Microsoft розмістив його в блозі розробників:

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

    Іншими словами, ін'єкція коду є свого роду брудним рухом. У ідеальному світі буде безпечнішим способом досягти цього, що не викликає потенційної нестабільності. Однак ін'єкція коду сьогодні є звичайною частиною платформи додатків Windows. Це постійно відбувається у фоновому режимі на ПК з ОС Windows. Ви можете назвати це необхідним злом.

    Як перевірити вбудовані DLL

    Ви можете перевірити для ін'єкції коду у вашій системі з потужною програмою Microsoft Провідник програми. Це в основному розширена версія диспетчера завдань з додатковими функціями.

    Завантажте та запустіть Process Explorer, якщо ви бажаєте це зробити. Натисніть Перегляд> Нижній перегляд панелі> DLL або натисніть Ctrl + D.

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

    Наприклад, нормально бачити різноманітні DLL-файли, зроблені компанією Microsoft Corporation, оскільки вони є частиною Windows. Також нормально бачити бібліотеки DLL, зроблені тією ж компанією, що й процес, про який йде мова - “Google Inc.” у випадку Chrome на скріншоті нижче.

    Ми також можемо побачити кілька DLL-файлів, створених компанією «AVAST Software» тут. Це вказує на те, що антивірусне програмне забезпечення Avast в нашій системі вводить код, подібний до "Avast Script Blocking filter library", у Chrome.

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

    Як працює ін'єкція коду?

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

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

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

    У деяких випадках хтось може змінити базовий код на диску, наприклад, замінивши файл DLL, який постачається з комп'ютерною грою, на модифікований, щоб увімкнути шахрайство або піратство. Це технічно не є "ін'єкцією коду". Код не вводиться в запущений процес, але програма замість цього обманюється, завантажуючи іншу DLL з тим же ім'ям..

    Зображення: Lukatme / Shutterstock.com.