Внедрение кода — очень распространенный метод в Windows. Приложения «внедрят» свой собственный код в другой работающий процесс, чтобы изменить его поведение. Этот метод можно использовать как в хороших, так и в плохих целях, но в любом случае он может вызвать нежелательные проблемы. Антивирусное программное обеспечение , например антивирусное программное обеспечение , внедряет код в Chrome , чтобы изменить его поведение. Это приводит к более частому возникновению проблем с браузером.
Внедрение кода также часто называют внедрением DLL, поскольку фрагменты кода, внедряемые в другие процессы, обычно имеют форму файлов DLL — библиотеки динамической компоновки. Однако иногда приложения могут также внедрять в другой процесс другие типы кода, которые не представлены в виде файлов DLL.

Для чего используется внедрение кода?
Внедрение кода используется для выполнения всех трюков и функций в Windows. Внедрение кода используется как легальным программным обеспечением, так и вредоносным ПО, например:
- Антивирусные программы часто вставляют сценарии в веб-браузеры и используют их для мониторинга сетевого трафика и блокировки опасного веб-контента.
- Вредоносные программы могут добавить код в ваш веб-браузер для отслеживания истории посещений и информации, а затем украсть защищенную информацию, такую как пароли, номера кредитных карт и изменения, установленные в вашем браузере.
- WindowBlinds от Stardock внедряет код для изменения способа открытия окон.
- Fences от Stardock внедряет код, меняющий способ работы Windows.
- AutoHotkey вставляет коды, позволяющие создавать сценарии и назначать общесистемные горячие клавиши.
- Графические драйверы, такие как NVIDIA, отправляют файлы DLL для выполнения различных задач, связанных с графикой.
- Некоторые программы внедряют файлы DLL для добавления дополнительных опций в приложение.
- Читы для компьютерных игр часто внедряют в игры код для изменения их характеристик, тем самым давая мошенникам несправедливое преимущество перед другими игроками.
Внедрение кода — это плохо?
Этот метод постоянно используется множеством различных приложений в Windows. Он поистине уникален для выполнения самых разных задач. По сравнению с современной платформой мобильной операционной системы, такой как iOS от Apple или Android от Google, Windows гораздо мощнее, поскольку предлагает разработчикам такую гибкость.
Конечно, здесь есть и некоторые опасности. Внедрение кода может вызвать проблемы и ошибки в приложении. Google заявляет, что пользователи Windows, у которых есть программное обеспечение, которое внедряет код в Chrome, на 15% чаще сталкиваются с ошибками в Chrome, чем обычно, и именно поэтому Google работает над предотвращением внедрения кода.
Microsoft даже предоставляет инструкции, позволяющие пользователям проверить, загружаются ли сторонние DLL-файлы в Microsoft Outlook, поскольку эти файлы вызывают множество проблем в Outlook.
Сотрудник Microsoft поделился этой проблемой в блоге в 2004 году:
Файлы DLL, внедренные в другие приложения, никогда не бывают безопасными, поскольку код незаконно проникает в процесс, который не был спроектирован, построен или протестирован автором этого процесса. Вы рискуете столкнуться с проблемами синхронизации или ресурсов, с которыми никогда раньше не сталкивались, или эти файлы усугубят существующие проблемы в приложении.
Другими словами, Code Injection — это незаконный взлом. Однако внедрение кода — это всего лишь распространенный метод, используемый сегодня на платформе приложений Windows. Он постоянно используется в фоновом режиме в Windows на вашем компьютере.
Как проверить файлы DLL, внедренные в приложение.
Вы можете проверить внедрение кода в своей системе с помощью приложения Microsoft Process Explorer. По сути, это приложение представляет собой расширенную версию диспетчера задач, дополненную необходимыми дополнительными функциями.
Сначала вы загружаете и запускаете Process Explorer. Затем нажмите «Вид» > «Вид нижней панели» > «DLL» или нажмите Ctrl + D.

Выберите процесс на верхней панели и посмотрите на панель ниже, чтобы увидеть, какие файлы DLL загружаются. Столбец «Название компании» предоставит вам удобный способ фильтровать этот список.
Например: когда вы видите кучу файлов DLL, созданных корпорацией Microsoft, это совершенно нормально, поскольку они являются частью Windows. Совершенно нормально, что файлы DLL, исходящие от материнских компаний приложения, находятся в этом приложении (например, «Google Inc» на снимке экрана ниже).
Судя по изображению ниже, в этом списке мы также можем обнаружить несколько файлов DLL, созданных «AVAST Software». Это показывает, что антивирусное приложение Avast в системе внедряет в Chrome такой код, как «Библиотека фильтров блокировки сценариев Avast».

Даже если вы обнаружите внедрение кода в своей системе, вы мало что можете сделать, кроме как удалить программу, внедряющую код, чтобы предотвратить возникновение дальнейших проблем. Например, если ваш Chrome часто выходит из строя, вы можете проверить, не внедряют ли какие-либо программы код в Chrome, и если да, удалите эти программы, чтобы они больше не мешали вашему прогрессу.
Как работает внедрение кода?
Внедрение кода не влияет на базовые приложения, хранящиеся на вашем диске. Вместо этого он ждет, пока приложение запустится, а затем внедряет код в работающий процесс, чтобы изменить способ работы этого процесса.
Как мы все знаем, Windows содержит ряд интерфейсов прикладного программирования (API), которые можно использовать для внедрения кода. Процесс может присоединиться к целевому процессу, выделить память, затем записать в эту память DLL или другой код и дать указание целевому процессу выполнить код. Windows абсолютно не препятствует таким образом процессам на вашем компьютере мешать друг другу.
В некоторых случаях кто-то может изменить базовый код на диске, например, заменив DLL-файл, поставляемый в комплекте с компьютерной игрой, на другой фрагмент кода, который был изменен, что может привести к мошенничеству в игре или нарушению авторских прав. Технически это не внедрение кода, поскольку код не внедряется в запущенные процессы, а вместо этого процесс обманывается другим файлом DLL с тем же именем.
Узнать больше: