O mundo secreto dos arquivos .DLL
Publicado por Redação em 01/02/11 às 10h29
Componentes fundamentais para o funcionamento de todo o sistema, esses arquivos só chamam a atenção quando se tornam fonte de problemas. Mas, afinal, para que servem? Por Aylons Hazzud


Por Aylons Hazzud,
Publicado originalmente na Revista Oficial do Windows #35.


Uma recente onda de ataques originados na internet direcionou os holofotes aos arquivos com extensão .DLL do Windows. Enigmáticos para muita gente, esses operários discretos – mas onipresentes – não estão necessariamente associados a um programa em especial (ao contrário dos .DOC ou .JPG, por exemplo) e não podem ser vistos e editados. Apesar disso, quem usa o Windows já deve ter se deparado mais de uma vez com mensagens como “kernel32.dll não está respondendo” ou “um arquivo .dll necessário não foi encontrado”.


E onipresença não é exagero: o Windows simplesmente não funcionaria sem a presença deles. São vitais para praticamente tudo: são responsáveis por exibir as janelas dos programas, conectar o computador à internet, salvar e carregar arquivos... de uma maneira ou de outra, todos os aplicativos que rodam no Windows dependem deles para realizar suas tarefas.


E a origem do nome DLL? É abreviatura de “Dynamic-link library”, ou “biblioteca de ligação dinâmica”, uma expressão que remete à maneira como esses arquivos são vinculados aos aplicativos que lhes darão ordens. Coisa de gerente, ou melhor, programador.
Vendo e aprendendo


E para entender como fazem todo esse trabalho, podemos traçar um paralelo com uma fábrica chamada Windows onde trabalham os DLLs – tal qual os oompa-loompas da Fantástica Fábrica de Chocolate (lembra-se dos assistentes do Willy Wonka?).


Digamos que você abra um aplicativo – um documento do Word, por exemplo. Este software seria como uma seção da fábrica, nesse caso, a responsável por gerar documentos. Os funcionários do “setor de Word” são altamente especializados: geram as páginas, formatam as fontes, corrigem o texto e tudo mais.


O problema é que o Word não sabe fazer tarefas simples: por exemplo, buscar um arquivo no disco rígido do computador. Ele precisa pedir (como uma criança mimada, em alguns momentos) para um empregado fazer isso. É aí que entra o arquivo DLL, que faz todo o trabalho sujo: a mando do aplicativo, abre a janela na qual você selecionou o arquivo (já reparou como elas são quase sempre iguais? Pois é, isso ocorre porque se trata do mesmo oompa-loompa!), pega o documento que você indicou e entrega, de mão beijada, para quem pediu, o Word.


Essa e muitas outras janelas familiares no Windows estão dentro do arquivo Comdlg32. dll. Mas não há só janelas nos DLLs: os programas também usam esses serviços para criar sons, conectar-se à internet, salvar arquivos... praticamente tudo que o computador pode fazer é realizado por um DLL para os aplicativos.


E um olhar minucioso mostra que a presença desses arquivos vai além. Ao despir um programa como o Word, descobrimos que ele também tem uma coleção de suas próprias DLLs. Muitas vezes, o arquivo executável (.EXE) faz pouco além de convocar as DLLs para que efetivamente façam a magia acontecer – quem não conhece um chefe assim?


O próprio Windows é, em grande parte, uma coleção desses arquivos, até porque a principal função de um sistema operacional é servir de base para que aplicações possam funcionar sem se preocupar com detalhes. Tal qual Willy Wonka, que prefere deixar a inspeção do chocolate para seus funcionários em vez de ir ele mesmo remando para lá, os programadores querem que o trabalho pesado seja feito sem terem de lidar com as pequenas e numerosas exigências do sistema.


Assim, esses arquivos ajudam a formar a base do sistema, permitindo que os aplicativos façam seu serviço especializado sem se preocupar com os inúmeros detalhes das tarefas rotineiras.
O temido ataque da injeção de DLL


Em agosto, a Microsoft divulgou um alerta sobre uma nova forma de infecção cibernética que se esconde sob a forma de DLLs. Esse ataque é curioso, pois o usuário não precisa abrir o arquivo propriamente infectado – basta abrir outro arquivo, na mesma pasta, para que o estrago seja feito.


E antes de apontar o dedo na cara do Windows, é bom saber que não se trata de uma falha de segurança do sistema, e sim na de alguns programas que empregam DLLs em suas tarefas. Ao tentar abrir o arquivo, o programa pode procurar DLLs para ajudar na tarefa. Mas se o programa não verificar se está chamando no lugar certo, um DLL “pirata” pode se passar pelo original e, com isso, conseguir acesso ao PC. Para piorar, normalmente esse DLL do mal fica na mesma pasta do arquivo inocente, pois muitos programas procuram ali primeiro.


Na internet, uma maneira comum de ser atacado é com serviços de WebDAV e SMB, os quais permitem o acesso de pastas na internet como se elas estivessem no disco rígido do computador. Pen drives também podem provocar a infecção, mesmo que os arquivos dentro dele estejam abrindo normalmente e o vírus nunca tenha sido clicado pelo usuário. De novo, basta abrir um arquivo nessa mesma pasta.


A correção do bug depende de cada programador, que deve alterar seu aplicativo para evitar a confusão. Para amenizar a situação, a Microsoft liberou alguns programas que evitam o comportamento inadequado do software. O problema é que essas soluções podem interferir no funcionamento de outros aplicativos. E como são complexas, devem ser empregadas somente por profissionais ou administradores de rede experientes.
DLLs de renome


kernel32.dll
pelo nome se vê sua importância. “Kernel” é uma expressão que pode ser traduzida como “núcleo”. Isso indica a posição central no sistema deste DLL por realizar tarefas mais nobres, como salvar arquivos e gerenciar o uso da memória RAM pelo computador.


comdlg32.dll:
"dlg" vem de diálogo. E quem usa o Windows, de fato, já "conversou" muito com este arquivo, pois ele guarda as janelas padronizadas para salvar e abrir arquivos. E nem sempre a conversa é amigável: aquelas mensagens de erro também costumam ser entregues por ele.


user32.dll:
sempre a seu serviço, é ele quem cuida dos menus que aparecem na tela, do papel de parede e do ponteiro do mouse. E é ele quem segura a tesoura e a cola na hora do Ctrl + C / Ctrl + V, pois é o responsável pela área de transferência do Windows.



Comentários