O que é injeção de código no Windows?

A injeção de código é comum no Windows. Os aplicativos “injetam” pedaços de seu próprio código em outro processo em execução para modificar seu comportamento. Essa técnica pode ser usada para o bem ou para o mal, mas de qualquer forma pode causar problemas.

A injeção de código também é comumente chamada de injeção de DLL porque o código injetado geralmente está na forma de um  arquivo DLL (biblioteca de vínculo dinâmico) . No entanto, os aplicativos também podem injetar outros tipos de código que não são DLLs em um processo.

Para que serve a injeção de código

A injeção de código é usada para realizar todos os tipos de truques e funcionalidades no Windows. Embora programas legítimos o usem, ele também é usado por malware. Por exemplo:

  • Os programas antivírus geralmente injetam código em navegadores da web. Eles podem usá-lo para monitorar o tráfego da rede e bloquear conteúdo perigoso da web, por exemplo.
  • Programas maliciosos podem adicionar código ao seu navegador para rastrear melhor sua navegação, roubar informações protegidas, como senhas e números de cartão de crédito, e alterar as configurações do navegador.
  • O WindowBlinds da Stardock, que tem como tema sua área de trabalho, injeta código para modificar a forma como as janelas são desenhadas .
  • O Stardock’s Fences injeta código para mudar a maneira como a área de trabalho do Windows funciona .
  • AutoHotkey, que permite criar scripts e atribuir teclas de atalho em todo o sistema a eles , injeta código para fazer isso.
  • Drivers gráficos como os da NVIDIA injetam DLLs para realizar uma variedade de tarefas relacionadas a gráficos.
  • Alguns programas injetam DLLs para adicionar opções de menu adicionais a um aplicativo.
  • As ferramentas de trapaça para jogos de PC geralmente injetam código nos jogos para modificar seu comportamento e obter uma vantagem injusta sobre os outros jogadores.
Recomendado:  Como incorporar uma planilha do Microsoft Excel em seu blog ou site

A injeção de código é ruim?

Essa técnica é usada constantemente por uma ampla variedade de aplicativos no Windows. É a única maneira real de realizar uma variedade de tarefas. Comparado a uma plataforma móvel moderna como o iOS da Apple ou o Android do Google, o desktop Windows é tão poderoso porque oferece esse tipo de flexibilidade aos desenvolvedores.

Claro, com todo esse poder vem algum perigo. A injeção de código pode causar problemas e bugs nos aplicativos. O Google diz que os usuários do Windows que têm código injetado em seu navegador Chrome têm 15% mais chances de travar o Chrome, e é por isso que o Google está trabalhando para bloquear isso. A Microsoft observa que a injeção de código pode ser usada por aplicativos maliciosos para adulterar as configurações do navegador, o que é um dos motivos pelos quais já está bloqueado no Edge.

A Microsoft ainda fornece instruções para verificar se DLLs de terceiros estão carregadas no Microsoft Outlook, pois elas causam muitas falhas no Outlook.

Como um funcionário da Microsoft colocou em um blog de desenvolvedor de 2004:

A injeção de DLL nunca é segura. Você está falando sobre injetar código em um processo que nunca foi projetado, construído ou testado pelo autor do processo e cooptar ou criar um thread para executar esse código. Você corre o risco de criar problemas de tempo, sincronização ou recursos que não existiam antes ou de agravar os problemas que existiam.

Em outras palavras, a injeção de código é uma espécie de hack sujo. Em um mundo ideal, haveria uma maneira mais segura de fazer isso que não causasse instabilidade potencial. No entanto, a injeção de código é apenas uma parte normal da plataforma de aplicativos do Windows hoje. Isso está constantemente acontecendo em segundo plano no seu PC com Windows. Você pode chamá-lo de um mal necessário.

Recomendado:  Por que você não deve usar ferramentas “anti-espionagem” para Windows 10

Como verificar se há DLLs injetadas

Você pode verificar se há injeção de código em seu sistema com o poderoso aplicativo Process Explorer da Microsoft . É basicamente uma versão avançada do Gerenciador de Tarefas com recursos adicionais.

Baixe e execute o Process Explorer se desejar fazer isso. Clique em Exibir> Exibição do painel inferior> DLLs ou pressione Ctrl + D.

Selecione um processo no painel superior e observe o painel inferior para ver as DLLs carregadas. A coluna “Nome da empresa” fornece uma maneira útil de filtrar essa lista.

Por exemplo, é normal ver aqui uma variedade de DLLs feitas pela “Microsoft Corporation”, já que fazem parte do Windows. Também é normal ver DLLs feitas pela mesma empresa que o processo em questão— “Google Inc.” no caso do Chrome, na imagem abaixo.

Também podemos localizar algumas DLLs feitas pelo “Software AVAST” aqui. Isso indica que o software antimalware Avast em nosso sistema está injetando código como a “biblioteca de filtros de bloqueio de script Avast” no Chrome.

Não há muito que você possa fazer se encontrar injeção de código em seu sistema – além de desinstalar o programa injetando código para evitar que ele cause problemas. Por exemplo, se o Chrome travar regularmente, você pode querer ver se há algum programa injetando código no Chrome e desinstalá-lo para evitar que interfira nos processos do Chrome.

Como funciona a injeção de código?

A injeção de código não modifica o aplicativo subjacente em seu disco. Em vez disso, ele espera que o aplicativo seja executado e injeta código adicional nesse processo em execução para alterar como ele funciona.

O Windows inclui uma variedade de interfaces de programação de aplicativos (APIs) que podem ser usadas para injeção de código. Um processo pode anexar-se a um processo de destino, alocar memória, gravar uma DLL ou outro código nessa memória e, em seguida, instruir o processo de destino a executar o código. O Windows não impede que os processos no seu computador interfiram uns com os outros desta forma.

Recomendado:  Por que os contatos não são colocados uniformemente nos cartões SD?

Para obter mais informações técnicas, confira esta postagem do blog explicando como os desenvolvedores podem injetar DLLs  e veja  outros tipos de injeção de código no Windows .

Em alguns casos, alguém pode alterar o código subjacente no disco – por exemplo, substituindo um arquivo DLL que vem com um jogo de PC por um modificado para permitir trapaça ou pirataria. Tecnicamente, isso não é “injeção de código”. O código não está sendo injetado em um processo em execução, mas o programa está sendo enganado para carregar uma DLL diferente com o mesmo nome.

Crédito de imagem:  Lukatme /Shutterstock.com.