O trabalho oculto da modernização Malwarebytes

| 4 de setembro de 2026
Malwarebytes aparece atrás de três pessoas ilustradas a trabalhar nos seus computadores portáteis.

A maior parte do trabalho que mantém um produto de segurança fiável é invisível. Os utilizadores veem uma verificação concluída, uma ameaça bloqueada, uma atualização aplicada durante a noite. Não veem a plataforma subjacente. Runtimes, bibliotecas geridas, drivers nativos e Windows Todos os requisitos devem permanecer atualizados e funcionar em conjunto em milhões de endpoints. A nossa migração para o .NET 10 é um exemplo de como mantemos esta plataforma em constante evolução e será o foco deste artigo.

Seria fácil chamar a estas atualizações tarefas de manutenção e avançar. Mas isso seria subestimá-las. O nosso código é executado continuamente, com privilégios elevados, perto de algumas das partes mais sensíveis do sistema. Windows .

Cada dependência na nossa pilha, desde o ambiente de execução e bibliotecas de terceiros até aos controladores nativos e aos requisitos do sistema operativo, afeta o ambiente em que o nosso software é executado. Quando uma delas muda, tudo o que depende dela também pode ter de ser alterado.

O problema: as plataformas ficam para trás por estarem paradas. 

Na segurança de endpoints, o cenário está em constante evolução. Windows Evolui. As ameaças evoluem. O hardware evolui, desde os portáteis ARM64 até máquinas com muito mais memória e armazenamento mais rápido do que aquelas para as quais o nosso código foi originalmente escrito.  

Uma plataforma que permanece estática não se mantém igual. Ela fica para trás. Cada lançamento tardio de uma dependência ou ambiente de execução alarga o fosso entre o ecossistema sobre o qual o construímos e aquele que é estável hoje.  

Um ambiente de execução moderno, e o . NET 10 em particular, pode proporcionar-nos maior segurança, caminhos de código mais rápidos, menor consumo de memória e diagnósticos mais completos. Também oferece aos nossos engenheiros melhorias na linguagem e nas ferramentas, ajudando-os a trabalhar de forma mais eficiente. 

Os riscos são também particularmente elevados para o software de segurança: 

  • Uma aplicação web pode ser revertida com uma implantação. O software já instalado no dispositivo do cliente não pode. 
  • O nosso código é executado com elevados privilégios, juntamente com drivers de kernel e proteções contra adulteração.   
  • Uma regressão em tempo de execução não afeta apenas um servidor. Tem o potencial de afetar milhões de máquinas.  

Assim, tratamos uma atualização de tempo de execução com o mesmo rigor que uma funcionalidade de segurança. 

O desafio: tudo se move em conjunto. 

Malwarebytes para Windows Não se trata de um programa único. É um sistema coordenado: uma interface orientada para o utilizador, vários programas de longa duração... Windows Serviços, um instalador, um pipeline de atualização automática, uma superfície de plugins e dependências geridas de terceiros.  

Estes componentes estão acima dos drivers nativos e do nosso mecanismo de deteção. A migração para o .NET 10 abrangeu as partes geridas de Malwarebytes deixando este núcleo nativo intacto. Mas as diferentes camadas ainda precisam de trabalhar em conjunto. 

A migração teve de satisfazer vários requisitos em simultâneo:  

  • O código sensível à segurança tinha de se comportar de forma idêntica antes e depois da alteração.  
  • Os controladores nativos e as camadas anti-adulteração precisavam de continuar a funcionar corretamente com o código gerido. 
  • O processo de instalação e atualização precisava de implementar os novos ficheiros de tempo de execução e limpar os antigos.  
  • Os plugins e as dependências de terceiros precisavam de permanecer compatíveis. 
  • Existente Malwarebytes As instalações tiveram de continuar a funcionar.  
  • A nossa validação automatizada precisava de ser suficientemente abrangente para confiarmos no resultado sem termos de inspecionar cada caminho manualmente. 

A fronteira entre o código gerido e o código nativo merece especial atenção. O código gerido nos nossos serviços comunica com os componentes nativos através de interfaces como P/Invoke e COM. Uma alteração em tempo de execução pode afetar subtilmente a forma como estas diferentes partes do sistema interagem. Malwarebytes Comunicar e trabalhar em conjunto. 

Estas diferenças podem nunca aparecer numa demonstração. Podem surgir em apenas uma máquina a cada 10.000. O importante é encontrá-las antes que os clientes as encontrem. 

Nem todas as atualizações são iguais. 

Existem três razões principais pelas quais atualizamos uma dependência: optamos por fazê-lo, a plataforma subjacente força-nos a isso ou uma vulnerabilidade obriga-nos. Cada uma delas tem um horário diferente.  

Modernização opcional. Podemos optar por migrar para um novo ambiente de execução, uma nova versão principal de uma biblioteca ou uma nova capacidade de plataforma para tirar partido de novas funcionalidades, correções ou melhorias de segurança.  

Alterações na linha de base. À medida que os requisitos da plataforma evoluem, algumas restrições de compatibilidade antigas podem dificultar a modernização. Por exemplo, a migração para o . NET 10 permitiu-nos atualizar a linha de base da aplicação e adotar um runtime mais recente e compatível. Como parte dessa mesma mudança, Windows O suporte para a versão 7 foi descontinuado. 

Correções obrigatórias. Por vezes, uma vulnerabilidade é descoberta numa biblioteca que distribuímos ou num sistema do qual dependemos. A alteração deixa de ser facultativa e o cronograma não está sob o nosso controlo. O que podemos controlar é a nossa prontidão: os testes, o processo de lançamento e a implementação gradual que nos permitem responder rapidamente sem introduzir novos problemas. 

Razões e prazos diferentes, mas todos exigem a mesma abordagem cuidadosa. 

A migração para o .NET: Porque a fizemos? 

A migração para o .NET 10 proporciona Malwarebytes uma base mais segura, apoiada e capaz para Windows , com diversos benefícios cumulativos: 

Segurança. Um ambiente de execução moderno beneficia do trabalho contínuo da Microsoft em matéria de segurança, incluindo configurações padrão mais seguras, encriptação mais robusta e mitigações para bugs de memória e interoperabilidade. Manter um ambiente de execução com suporte ativo da Microsoft significa que podemos continuar a aplicar correções quando são descobertas vulnerabilidades.  

Uma base sólida. Pode não ser um motivo glamoroso, mas o .NET 10 mantém-nos numa plataforma com suporte e desenvolvimento ativo, mais alinhada com as versões mais recentes do .NET Framework. Windows Isto facilita a adoção de correções, características e melhorias futuras como trabalho de rotina, em vez de projetos pontuais. 

Diagnóstico e observabilidade. O . NET moderno possui recursos integrados mais robustos de rastreio, métricas e diagnóstico de avarias. Num produto de segurança, compreender como o código se comporta em produção é fundamental. Um diagnóstico mais eficiente ajuda-nos a identificar e resolver problemas de fiabilidade.  

Desempenho e eficiência da memória. As versões recentes do . NET melhoraram o compilador just-in-time, o garbage collector e as bibliotecas principais. Os nossos processos são executados em segundo plano durante todo o dia, pelo que a eficiência com que executam e gerem a memória é crucial. Estas características oferecem-nos mais oportunidades para melhorar a eficiência, embora o impacto varie entre componentes. 

A migração para o .NET: como fizemos  

O princípio orientador é simples: nunca avance mais depressa do que a evidência permite.  

Começamos por isolar o trabalho numa ramificação dedicada. Redefinimos a plataforma e atualizámos todas as dependências geridas para que o novo ambiente de execução e a base de código concordassem exatamente sobre quais os componentes que deveriam ser distribuídos.  

Isto trouxe à tona algumas das consequências menos óbvias da atualização logo no início: bibliotecas que tinham sido renomeadas ou incorporadas no ambiente de execução, ficheiros que já não eram necessários e novos ficheiros que tinham de ser distribuídos no seu lugar. 

Caminho de migração

A implementação é fácil de ser negligenciada e dispendiosa se for feita incorretamente. Uma migração em tempo de execução não se resume apenas ao código que é executado. Refere-se também ao que é instalado no disco do cliente.  

O nosso instalador e serviço de atualização tiveram de aprender o novo layout de ficheiros do ambiente de execução. Precisaram de remover as dependências que o ambiente de execução agora fornece, parar de distribuir ficheiros renomeados e entregar as substituições corretamente durante novas instalações e atualizações no local.  

A implementação correta é o que diferencia uma atualização que os utilizadores nem se apercebem de uma que gera problemas de suporte. 

Assim que a compilação estava a funcionar corretamente, o foco passou para a validação. 

A migração envolveu: 

  • Testes automatizados abrangentes em todos os serviços, processos de instalação e atualização. 
  • Validação de compatibilidade com as configurações reais e instalações anteriores. 
  • Análise comparativa de desempenho para detetar regressões no comportamento de arranque, memória e scan. 
  • Implantação gradual e faseada, começando com pequenas populações e expandindo apenas quando os resultados mostrassem que era seguro fazê-lo. 
  • Monitorização contínua e deteção automática de regressão em campo. 
  • Trabalho multifuncional que envolve plataforma, controlo de qualidade, instalação e atualização, e engenharia de lançamento. 
Fluxo de implantação progressiva

“Nunca avançámos mais depressa do que as provas permitiam. Cada portão tinha de ficar verde por si só.” 

A migração para o .NET: as vantagens e desvantagens  

Nada disto foi gratuito, e as escolhas envolviam concessões deliberadas.  

A desvantagem da ramificação era a possibilidade de desvio. Isolar a migração protegia a base de código principal, mas quanto mais tempo essa ramificação existisse, mais poderia divergir do desenvolvimento ativo. Gerimos este risco através de integrações frequentes, em vez de deixar uma grande e arriscada fusão para o fim.  

A contrapartida na implementação foi a rapidez. A implementação faseada também significava que os clientes receberiam a atualização mais tarde do que receberiam com uma implementação completa de uma só vez. Aceitamos essa contrapartida. A experiência de utilizadores mais pequenos dá-nos a oportunidade de identificar problemas antes que uma atualização atinja um número muito maior de dispositivos. 

A desvantagem do AOT foi a flexibilidade. A compilação antecipada pode melhorar o desempenho de arranque, mas também pode restringir o comportamento dinâmico. Aplicamos o AOT seletivamente, componente a componente, em vez de em todo o lado por defeito. 

O que significa a migração para o .NET 10 para os clientes

O melhor resultado de um trabalho de infraestrutura é que os clientes beneficiem dele sem terem de se preocupar com isso.  

No .NET 10, estes benefícios para Malwarebytes Entre os clientes, incluem-se:   

  • Maior fiabilidade num ambiente de execução totalmente suportado e com manutenção ativa.  
  • Uma base mais segura que beneficia das melhorias contínuas de segurança da plataforma.  
  • Acesso a novas funcionalidades e correções do .NET. 
  • Melhor suporte para versões mais recentes de Windows . 
  • As ferramentas . NET mais recentes podem ajudar-nos a desenvolver e fornecer novas proteções mais rapidamente. 

Lições que vale a pena guardar  

Cada uma destas atualizações — o tempo de execução, as linhas de base, os patches de segurança — faz com que a equipa mantenha algumas convicções ainda mais firmes.  

As atualizações de plataformas são investimentos estratégicos em tudo o que é construído sobre elas. A modernização também funciona melhor quando é contínua: quanto mais tempo uma plataforma estiver desatualizada, mais difícil se pode tornar a atualização final. 

A automatização é particularmente importante para mudanças desta magnitude. Assim como as pequenas decisões, muitas vezes pouco glamorosas, tomadas anos antes, como manter limites bem definidos entre os componentes e ter um processo de produção que saiba exatamente o que está a ser enviado. 

São estes alicerces que tornam possíveis mudanças maiores.  

“A dívida técnica acumula-se como a dívida financeira. A atualização mais barata é aquela que nunca adiou.”  

O que vem a seguir?  

Nenhuma atualização é uma linha de chegada. Cada uma é um passo num padrão mais longo: modernizar continuamente, em etapas deliberadas, para que a plataforma nunca fique para trás. Os padrões de referência mudarão novamente. As vulnerabilidades surgirão sem aviso prévio. Cada uma delas atenderá à mesma disciplina: os mesmos testes, a mesma implementação gradual e as mesmas evidências antes de avançarmos. 

Esta disciplina é o que realmente define um produto fiável, capaz de funcionar todos os dias, em qualquer máquina, sem qualquer preocupação.  

Malwarebytes para Windows em .NET 10 foi lançado na versão 5.6.0. Este é o passo mais recente num compromisso de longa data de investir na plataforma subjacente ao produto, para que a proteção oferecida continue a ser melhorada. 


Prémio «Escolha dos Editores» da CNET 2026

Segundo a CNET.Leia a análise deles


Sobre o autor

Ana Tukhtarov

Diretor, Windows Engenharia

Diretor de Engenharia com 20 anos de experiência em desenvolvimento de software e ciência da computação, especializado em Windows Engenharia e cibersegurança. Experiência na criação e modernização de produtos de software complexos e na liderança de equipas de engenharia.