Como desinstalei o software da NoPing

O desinstalador da NoPing faz uma questionário para concluir a desinstalação, e é preciso “acertar” as respostas.


O problema

Recentemente estava com o ping altíssimo em uma aplicação, e cogitei usar uma VPN para ver se melhoraria. Lembrei da NoPing, que, apesar de ser voltada exclusivamente para jogos, já tinha ouvido algumas pessoas falando muito bem. Além disso, eu não tinha nada a perder, não é mesmo?

Rapidamente instalei e ativei o meu período de testes de 7 dias. Assim que rodei já percebi que não ajudou em nada no ping. Sendo assim, na mesma rapidez que instalei o programa também rodei o desinstalador pelo Windows.

Eis que me deparo com o seguinte questionário:

Quais seriam as resposta certas?
Quais seriam as resposta certas?

Respondi qualquer coisa e tive essa surpresa:

Erro: Por favor, insira uma resposta coerente com a pergunta
Erro: Por favor, insira uma resposta coerente com a pergunta
Erro: Você precisa responder a essa pergunta
Erro: Você precisa responder a essa pergunta

Depois de mais inúmeras tentativas, a angústia foi se transformando em desespero: eu não conseguia desinstalar esse programa. Nenhuma resposta era aceita.

Pesquisando na Internet, achei algumas reclamações no Reclame Aqui, porém sem solução aparente:

Reclame Aqui
Reclame Aqui

Também apareceu sugestões de software que faziam a desinstalação na força bruta, mas primeiro eu queria tentar com as minhas próprias mãos, antes de instalar mais qualquer coisa no meu computador.

A solução

Rodei o programa no Cheat Engine e olhei as strings do desinstalador:

Strings do desinstalador
Strings do desinstalador

Podemos ver que é um programa PHP por debaixo dos panos, fazendo a query pra uma API (!!!) pra validar as respostas, além de coletar diversas informações do meu computador.

Também notei o mais importante aqui:

AI_SetMsiProperty
AI_SetMsiProperty

Talvez se eu conseguisse forçar essa chamada do AI_SetMsiProperty ALLOW_UNINSTALL "True" o meu problema estaria resolvido.

Olhando a lista de DLLs do Cheat Engine, encontrei a função nativa do Windows equivalente a AI_SetMsiProperty: MsiSetPropertyW.

MsiSetPropertyW
MsiSetPropertyW

Setei um breakpoint no início dessa função e rodei novamente o questionário. Assim que cliquei em Validar Respostas o breakpoint ativou. Analisei os registros e percebi que o r8 apontava em memória para um valor False e pouco antes tínhamos a string ALLOW_UNINSTALL:

MsiSetPropertyW e o registro r8 em False
MsiSetPropertyW e o registro r8 em False

Setei manualmente o valor para True e Voilà.

MsiSetPropertyW e o registro r8 em True
MsiSetPropertyW e o registro r8 em True
Agora foi
Agora foi
Finalmente
Finalmente
Acabou a angústia
Acabou a angústia

Tenho certeza que há inúmeras formas de contornar esse “problema”, mas particularmente nunca tinha visto um desinstalador tão complicado assim.