CPL (formato)

Control Panel Applet
Extensão de arquivo
.cpl
Tipo de mídia da Internet
application/x-dosexec
Número mágicoMZ
Desenvolvido porMicrosoft
Estendido deDLL

No sistema operacional Windows, a extensão CPL é atribuída aos Control Panel Applets, que são miniaplicativos utilizados pelo Painel de Controle, introduzidos no Windows 3.x, mas ainda utilizados em versões atuais como o Windows 7. O Painel de Controle carrega estes miniaplicativos e exibe ícones para que estes sejam acessados facilmente.

Estrutura

Um arquivo CPL é uma DLL (biblioteca de vínculo dinâmico) ou um EXE[1] e por isso herda toda a estrutura já definida para o formato PE. A diferença mais notável é que os CPL normalmente possuem somente uma função exportada chamada CPlApplet()[2], enquanto as DLL em geral possuem várias funções exportadas (disponíveis para serem chamadas a partir de outro programa).

Execução

Quando a janela do Painel de Controle é aberta, todos os arquivos CPL na pasta de sistema do Windows são lidos e seus applets são carregados e exibidos na janela do Painel de Controle. Cada arquivo CPL pode conter um ou mais applets. É possível verificar isso com os métodos de execução abaixo:

Usando o control.exe

O programa control.exe (que carrega o Painel de Controle) utiliza a seguinte sintaxe para carregar applets CPL:


control.exe arquivo.cpl,@n,t


Onde n é o índice do applet dentro do arquivo, começando em 0 (zero) e t é o índice da aba deste applet, para applets com mais de uma aba, também começando em 0 (zero). Por exemplo, para carregar o primeiro applet do arquivo main.cpl posicionado na primeira aba, pode-se comandar:

C:\> control main.cpl,@0,0


Para ver a segunda aba deste mesmo applet, basta:


C:\> control desk.cpl,@0,1


Já para ver o segundo applet:


C:\> control main.cpl,@1,0


Caso o índice de applet ou aba seja inválido ou omitido, o Windows busca o applet padrão do arquivo e o exibe sem emitir erros.

Utilizando a função Control_RunDLL

Há ainda a possibilidade de se executar um arquivo CPL utilizando diretamente uma função da shell32.dll chamada Control_RunDLL. Este é o método que o Windows utiliza internamente e também é o que ocorre quando é dado um duplo-clique num arquivo CPL. Exemplo:


C:\> rundll32 shell32.dll,Control_RunDLL timedate.cpl,@0,0


O comando acima abre as propriedades de data e hora do Windows diretamente. Por ter essa característica, arquivos CPL podem ser executados diretamente no sistema operacional, bastando para isso um duplo-clique neles. Sendo assim, o efeito é similar aos arquivos EXE e à essa característica se deve a fama de que arquivos CPL são "DLLs que executam com dois cliques".

Utilizando o objeto Shell.Application

Um script em VBScript ou JScript pode carregar um CPL através do método ControlPanelItem() de um objeto Shell.Application. O código abaixo carrega o applet de configuração de joysticks:


VBScript
Dim obj
Set obj = CreateObject("Shell.Application")
obj.ControlPanelItem("joy.cpl")


Segurança


Por ser um formato flexível e que pode ser executado com um duplo-clique, criadores de ameaças também criam malware utilizando o formato CPL[3]. É comum no Brasil usuários receberem e-mails falsos com links para downloads de arquivos comprimidos com um mais arquivos CPL dentro. Em geral, este tipo de arquivo não é transferido via rede com frequência pois seu maior uso está no Windows em si, portanto muito cuidado é necessário antes de dar um duplo clique em arquivos CPL recebidos por e-mail ou que tenham sido baixados na internet.

Por ser um tipo de arquivo pouco conhecido, mesmo por analistas de segurança experientes, vários programas como proxy firewalls e outras soluções de segurança não tratam o download de um arquivo CPL com a devida atenção.

O bloqueio de download de arquivos deste tipo deve ser tratado com cuidado, no entanto, visto que alguns fabricantes de hardware distribuem arquivos CPL juntamente com programas e drivers de dispositivo.

Applets nativos

Windows 3.x[4]

Nome do arquivoNome do ícone no Painel de Controle
CPWIN386.CPLAvançado
DRIVERS.CPLControladores
MAIN.CPLCores, Fontes, Portas, Mouse, Área de Trabalho, Teclado, Impressoras, Internacional, Data e Hora e Rede (se instalada)
SND.CPLSom

Windows XP[6]

Nome do arquivoNome do ícone no Painel de Controle
Access.cplAções de acessibilidade
Appwiz.cplAdicionar ou remover programas
Desk.cplVídeo
Hdwwiz.cplAdicionar hardware
Inetcpl.cplOpções da Internet
Intl.cplOpções regionais e de idiomas
Irprops.cplDispositivos Infra-vermelho
Joy.cplControladores de jogo
Main.cplMouse
Mmsys.cplSons e dispositivos de áudio
Ncpa.cplConexões de rede
Nusrmgr.cplContas de usuário
Nwc.cplServiços de Gateway para NetWare
Odbccp32.cplFontes de dados (ODBC), dentro de "Ferramentas administrativas"
Powercfg.cplOpções de energia
Sapi.cplFala
Sysdm.cplSistema
Telephon.cplOpções de telefone e modem
Timedate.cplData e hora

Referências

  1. ↑ «Implementing Control Panel Items». Microsoft. Consultado em 12 de Dezembro de 2017
  2. ↑ «Using CPLApplet». Microsoft. Consultado em 12 de Dezembro de 2017
  3. ↑ Mercês, Fernando (27 de Janeiro de 2014). «A Look Into CPL Malware» (PDF). Trend Micro. Consultado em 12 de Dezembro de 2017. Arquivado do original em 7 de março de 2014
  4. ↑ «Control Panel .CPL Files and Icon Installation». Microsoft. Consultado em 12 de Dezembro de 2017
  5. ↑ «How to run Control Panel tools by typing a command». Microsoft. Consultado em 12 de Dezembro de 2017
  6. ↑ Datta, Chandan. «Description of Control Panel Files in Windows XP». Consultado em 12 de Dezembro de 2017