Внедрение кода распространено в Windows. Приложения «вставляют» части своего собственного кода в другой запущенный процесс, чтобы изменить его поведение. Этот метод можно использовать во благо или во зло, но в любом случае он может вызвать проблемы.
Внедрение кода также обычно называется внедрением DLL, потому что введенный код часто имеет форму DLL (библиотека динамической компоновки) . Однако приложения также могут внедрять в процесс другие типы кода, не являющиеся библиотеками DLL.
Для чего используется внедрение кода
Внедрение кода используется для выполнения всевозможных трюков и функций в Windows. Хотя его используют легитимные программы, он также используется вредоносными программами. Например:
- Антивирусные программы часто внедряют код в веб-браузеры. Они могут использовать его, например, для отслеживания сетевого трафика и блокировки опасного веб-контента.
- Вредоносные программы могут добавлять код в ваш веб-браузер, чтобы лучше отслеживать ваши действия в Интернете, красть защищенную информацию, такую как пароли и номера кредитных карт, а также изменять настройки браузера.
- WindowBlinds Stardock, который задает темы для рабочего стола, внедряет код в изменить способ отображения окон .
- Stardock’s Fences внедряет код в изменить способ работы рабочего стола Windows .
- AutoHotkey, который позволяет создавать сценарии и назначать им общесистемные горячие клавиши , внедряет код для этого.
- Графический драйвер подобен встроенным DLL от NVIDIA для выполнения множества задач, связанных с графикой.
- Некоторые программы внедряют библиотеки DLL для добавления дополнительных пунктов меню в приложение.
- Инструменты для мошенничества в компьютерных играх часто вводят в игры код, чтобы изменить их поведение и получить несправедливое преимущество перед другими игроками.
Внедрение кода - это плохо?
Этот метод постоянно используется в самых разных приложениях Windows. Это единственный реальный способ решать самые разные задачи. По сравнению с современной мобильной платформой, такой как iOS от Apple или Android от Google, рабочий стол Windows настолько мощный, потому что он предлагает разработчикам такую гибкость.
Конечно, со всей этой мощью связана некоторая опасность. Внедрение кода может вызвать проблемы и ошибки в приложениях. Google говорит, что пользователи Windows, у которых есть код, внедренный в свой браузер Chrome, на 15% чаще сталкиваются с сбоями Chrome, поэтому Google работает над блокировкой этого. Microsoft отмечает, что внедрение кода может быть использовано вредоносными приложениями для изменения настроек браузера, что является одной из причин, по которой он уже заблокирован в Edge.
Мероприятие Microsoft предоставляет инструкции для проверки, загружены ли сторонние библиотеки DLL в Microsoft Outlook, поскольку они вызывают очень много сбоев Outlook.
Как выразился сотрудник Microsoft в блог разработчика с 2004 г .:
Внедрение DLL никогда не бывает безопасным. Вы говорите о впрыскивании кода в процесс, который никогда не проектировался, не создавался и не тестировался автором процесса, и о кооптировании или создании потока для выполнения этого кода. Вы рискуете создать проблемы со временем, синхронизацией или ресурсами, которых не было раньше, или усугубить проблемы, которые были там.
Другими словами, внедрение кода - это своего рода грязный прием. В идеальном мире был бы более безопасный способ добиться этого, не вызывающий потенциальной нестабильности. Однако сегодня внедрение кода - это обычная часть платформы приложений Windows. Это постоянно происходит в фоновом режиме на вашем ПК с Windows. Вы могли бы назвать это неизбежным злом.
Как проверить внедренные библиотеки DLL
Вы можете проверить внедрение кода в вашу систему с помощью мощных Обозреватель процессов заявление. По сути, это расширенная версия диспетчера задач с дополнительными функциями.
Загрузите и запустите Process Explorer, если хотите. Щелкните «Просмотр»> «Просмотр нижней панели»> «Библиотеки DLL» или нажмите Ctrl + D.
Выберите процесс на верхней панели и посмотрите на нижнюю, чтобы увидеть загруженные библиотеки DLL. Столбец «Название компании» предоставляет удобный способ отфильтровать этот список.
Например, здесь можно увидеть различные библиотеки DLL, созданные «Microsoft Corporation», поскольку они являются частью Windows. Также нормально видеть библиотеки DLL, созданные той же компанией, что и рассматриваемый процесс - "Google Inc." в случае с Chrome на скриншоте ниже.
Мы также можем обнаружить здесь несколько DLL, созданных «AVAST Software». Это означает, что антивирусное программное обеспечение Avast в нашей системе внедряет в Chrome код вроде «библиотеки фильтров блокировки сценариев Avast».
Если вы обнаружите инъекцию кода в своей системе, вы ничего не сможете сделать, кроме как удалить программу, внедряющую код, чтобы предотвратить возникновение проблем. Например, если Chrome регулярно дает сбой, вы можете проверить, есть ли какие-либо программы, внедряющие код в Chrome, и удалить их, чтобы предотвратить вмешательство в процессы Chrome.
Как работает внедрение кода?
Внедрение кода не изменяет базовое приложение на вашем диске. Вместо этого он ожидает запуска этого приложения и вводит дополнительный код в этот запущенный процесс, чтобы изменить его работу.
Windows включает в себя множество интерфейсы прикладного программирования (API) который можно использовать для внедрения кода. Процесс может присоединиться к целевому процессу, выделить память, записать DLL или другой код в эту память, а затем дать целевому процессу команду выполнить код. Windows не препятствует такому взаимодействию процессов на вашем компьютере друг с другом.
Для получения дополнительной технической информации ознакомьтесь с этим сообщением в блоге, объясняющим как разработчики могут внедрять библиотеки DLL и этот взгляд на другие типы внедрения кода в Windows .
В некоторых случаях кто-то может изменить базовый код на диске - например, заменив файл DLL, поставляемый с игрой для ПК, на модифицированный, чтобы разрешить мошенничество или пиратство. Технически это не «внедрение кода». Код не внедряется в запущенный процесс, а вместо этого обманом заставляют программу загружать другую DLL с тем же именем.
Кредит изображения: Лукатме /Шуттерсточк.ком.