Hackeando o Windows CE

Depois que atualizei o firmware do iPaq para Windows Pocket 2003 um ícone do Bluetooth com um pequeno x vermelho começou a aparecer na tray icon. Estava claro que aquele ícone não ficaria ali por muito tempo me incomodando (o que ele fez? nada de mais, apenas a razão dele existir já é o suficiente pra mim :) .

Primeiro tive que descobrir o nome da aplicação que coloca o icone na bandeja, isso foi simples, bastou clicar no ícone e mandar ativar o bluetooth, então apareceu uma tela com a mensagem de erro e título BTTrayCE. Portanto o nome do aplicativo era BTTrayCE.exe.

Usando o File Explorer do WinCE entrei no diretório \Windows, porém o arquivo BTTrayCE.exe não existia ou não estava visível lá. Resolvi abrir o Internet Explorer e coloquei a URL: file://\Windows\BTTrayCE.exe. Funcionou, apareceu a tela com a mensagem de erro anterior.

Minha idéia era arrumar uma forma de apagar o arquivo BTTrayCE.exe, tentei passar alguns comandos do DOS pela barra de endereço do IE, mas nada de funcionar. Então me surgiu uma outra idéia, copiar um arquivo com o nome BTTrayCE.exe para dentro de \Windows e assim substituir o arquivo original.

Infelizmente o WinCE não exibe a extensão do arquivo, então eu não conseguiria criar um arquivo de texto e renomea-lo para .exe. Eu poderia criar um arquivo BTTrayCE.exe no computador e transferir para o PDA, mas resolvi fazer tudo usando apenas o sistema do próprio PDA. Segunda opção, copiar um arquivo executável qualquer de dentro de \Windows para outro local, renomear para BTTrayCE.exe e copiar de volta para dentro de \Windows. Mas isso não foi tão simples como parecia, pois o WinCE bloqueia copiar os arquivos da ROM do sistema para outro local. Entretanto o segredo é nunca desistir, fui tentando arquivo por arquivo, e finalmente consegui copiar o arquivo CreateAssetFile.exe para outro local.

Após renomear o arquivo CreateAssetFile para BTTrayCE, tento copiá-lo para o \Windows, primeiro apareceu a janela padrão perguntando se eu queria substituir o arquivo BTTrayCE (viu só como ele estava lá :) , após eu responde que “Sim” apareceu uma tela de acesso negado sugerindo as causas: ou o disco está cheio, ou está protegido contra escrita ou o programa está em execução. Imaginei que o problema fosse porque o programa estava em execução, então resolvi testar a idéia tentando sobrescrever um outro executável de \Windows que não estava em execução, mas a mesma mensagem de erro apareceu.

E agora? É melhor desistir e aceitar o fato que o WinCE venceu?

Nada disso, o segredo é nunca desistir :-D

Verifiquei que nenhum arquivo em \Windows tinha a opção de renomear. Nem mesmo o arquivo CreateAssetFile permitia ser renomeado, mas após ser copiado para outro local ele deixava-se renomear. Finalmente tive a idéia de renomer o CreateAssetFile para um nome que não existisse em \Windows e copiá-lo para lá, após copiá-lo verifico que a opção renomear está disponível, renomeio para BTTrayCE, para minha surpresa nem a tela perguntando seu eu gostaria de substituir apareceu.

Reinicio o PDA e confirmo que o ícone do Bluetooth sumiu da tray icon.

Conclusão: eu poderia ter procurado na internet uma forma de exibir os arquivos ocultos do sistema e de desbloquear a proteção contra deletar os arquivos do sistema (se é que isso é possível), mas como eu estava em casa sem acesso a internet tive que fazer da maneira mais difícil, mas nada substitui aquela sensação de ter conseguido. Não sei se esta falha ainda existe nas versões mais novas do WinCE (Windows Mobile), é uma falha tão trivial que parece inaceitável que tenha passado despercebida pela equipe de testes da MS, provavelmente ela está presente desde as primeiras versões deste sistema.

About these ads

3 thoughts on “Hackeando o Windows CE

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s