Pesquisa personalizada

2005/06/19

Entendendo o mecanismo de controle da versão trial do IBExpert

Alguma justificativa

De início esclareço que este artigo tem o único propósito de mostrar como funciona o mecanismo de segurança do IBExpert. Eu não incentivo ninguém a usar a informação ou software aqui contidos com fins de usar o IBExpert sem remunerar devidamente seus autores. Também, não apoio o uso ilegítmo de determinados softwares, como é o caso do IBExpert. Penso que o IBExpert é um excelente produto e que seus autores devem ser recompensados pelo trabalho, dedicação e esforço necessário para se produzir e manter um produto como esse.

Ressalto porém, que também penso que o valor de EUR 199,00 (cento e noventa e nove euros! aff) é um tanto alto para o padrão do desenvolvedor independente brasileiro, assim como tenho a absoluta certeza que este valor é mais alto ainda para a Russia, país donde se origina os autores. Tanto que lá pelos confins da ex URSS, eles não cobram nada dos usuários residentes desses paises. De certa forma, o resto do mundo paga para que eles tenham esse benéficio. Os autores do IBExpert acreditam que os russos não tem grana para bancar pelo produto e como eles sabem que os russos costumam (não digo todos, digamos a maioria) crackear (de fato, boa parte dos crackers são russos) o software que não podem adquirir, então imaginaram que seria melhor que deixassem que usassem o produto deles de graça. Acho que esse pensamento teve sentido, pois basta uma simples busca no Google, Astalavista e eMule para verificar que não há crackers para os mais recentes lançamentos (últimos seis meses) do IBExpert. Creio que se os autores do IBExpert tivessem noção da situação brasileira, eles também pensariam numa forma de baixarem o preço para nossa realidade. Veja que não estou afirmando que nenhum brasileiro pode pagar o preço que pedem, mas sim que a maioria dos desenvolvedores independentes, como o meu caso, não podem pagar por ele.

Lembro que o IBExpert tem uma versão Free, mas que infelizmente não oferece todos os recursos da versão comercial. Acredito, porém, que para a maioria dos desenvolvedores a versão Free do IBExpert os atenderá. A versão free pode ser baixada diretamente do site do IBExpert.

O mecanismo da versão trial

Na primeira vez que você instala a versão trial do IBExpert, ele utiliza a data do sistema (do seu computador) para fazer o controle da expiração da versão de demonstração. Normalmente ele te dará alguns dias para que você o avalie e decida se deseja comprá-lo ou não. Após esse périodo ele permite que você continue usando-o, mas começa a incomodá-lo apresentando uma série de popups informando-o que o périodo de avaliação já acabou. Ele não mostra sempre uma mesma popup, mas sim um conjunto de popups. Se você deseja usá-lo após o périodo de teste ter se esgotado, isso irá chateá-lo um pouco. O que descrevo é como burlar essa limitação e fazer com que ele sempre "pense" que está sendo executado pela primeira vez. De forma que para o IBExpert, você sempre esteja dentro do périodo de teste. Para isto, basta identificar as três chaves de controle do IBExpert e excluí-las todas as vezes antes de rodar o IBExpert.

O mecanismo de controle de expiração da versão trial do IBExpert funciona por meio de três chaves que são gravadas no registry (registro do Windows). Essas três chaves seguem sempre esse padrão de nome:
HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000000000}\InProcServer32
Note que onde aparece {00000000-0000-0000-0000-000000000000} conterá uma outra sequência de identificação (UUID). Essa sequência é determinada pelo IBExpert de acordo com o nome de sua máquina. Portanto, na prática haverá sequências diferentes para máquinas com nomes diferentes. O IBExpert gerará três chaves com essa mesma estrutura. Dentro de cada chave haverá um par de valores, como o abaixo:

NomeTipoValor
ThreadingModelREG_SZ2J3pX0_jyfp5E>Evdf@sXKEhbs^EU7

Esse par também segue sempre um mesmo padrão. E o valor 2J3pX0_jyfp5E>Evdf@sXKEhbs^EU7 terá sempre o mesmo tamanho, mas terá valores diferentes. Dentro das chaves não haverá mais nenhuma outra entrada e se você conhece a estrutura das chaves que ficam dentro de HKEY_CLASSES_ROOT\CLSID notará que as chaves criadas pelo IBExpert, de fato, tem valores que dissoam das chaves usuais.


Para a nossa ambição de identificar as três chaves de controle do IBExpert, temos um problema visto que não sabemos qual é o algoritmo usado pelo IBExpert para gerar suas chaves. Descobrir qual é esse algoritmo está no momento fora de nosso escopo. Uma outra abordagem é tentar determinar quais são essas chaves, mas sem saber de fato quais são elas exatamente. Devemos, então, usar de método heurístico para determinar se uma dada chave foi criada pelo IBExpert ou não.

Comparando as chaves criada pelo IBExpert com as chaves que geralmente são criadas dentro de HKCR\CLSID, é possível verificar algumas diferenças que possibilitam determinar as chaves que são do IBExpert das que não são. Uma chave criada pelo IBExpert tem as seguintes características:

  • É uma subchave de HKEY_CLASSES_ROOT\CLSID
  • A seqência da chave tem o formato de uma CLSID (UUID)
  • A chave da CLSID não tem qualquer par de nomes (entrada) e nem um valor default
  • A chave da CLSID tem uma única subchave de nome InProcServer32
  • A única entrada na chave InProcServer32 é do tipo REG_SZ e tem o nome ThreadingModel
  • O valor da entrada ThreadingModel tem sempre 30 caracteres

O Utilitário

Para descobrir cada uma das três chaves do IBExpert usando o método de identificação acima, poderiamos fazê-lo manualmente, mas seria muito entediante ter que conferir chave-por-chave. Para isso, resolvi criar um pequeno utilitário em Delphi. Acredito que por ser fácil a implementação do método acima, você poderá facilmente criar um utilitário em sua linguagem preferida.


Abaixo está disponível o link para que se possa fazer o download do executável do utilitário e também de seu código fonte em Delphi 7.

Após baixar é só descompactar o pacote e rodar o executável.
Para procurar as chaves, clique no primeiro botão e espere ele fazer a busca. Na minha máquina é instantâneo Ele exibirá uma mensagem informando se localizou ou não. Se ele conseguiu localizar, aparecerá na caixa de texto os nomes das chaves que ele encontrou.
Para excluir, é necessário antes localizar as chaves. Se ele localizou, clique sobre o segundo botão para excluir as chaves.
Uma vez que ele localiza as chaves, ele as deixa em cache para que da próxima vez possa usá-las sem realizar uma busca. Este recurso é principalmente últil para máquinas lentas. De qualquer forma, para realizar uma nova busca é só clicar no primeiro botão.
Você também pode rodá-lo silenciosamente via prompt de comando usando o parâmetro: quiet. Exemplo:

Este recurso é particularmente útil se você planeja criar um arquivo de batch para automatizar o processo de rodá-lo antes do IBExpert.
Um exemplo de um arquivo de batch que rode o utilitário sempre antes do IBExpert, seria: r:\temp\exe\IBExpertTrialExtender.exe quiet c:\Arquivos de programas\HK-Software\IBExpert\ibexpert.exe É claro que você deve ajustar o caminho para os arquivos de acordo com o do seu sistema.
Se desejar, use este arquivo de batch. Após baixá-lo, não esqueça de editar o caminho dos arquivos.

Eu cheguei a estudar uma forma de fazer um programa que realizasse uma espécie de um patch no executável do IBExpert, mas eu não cheguei a concluir o trabalho no momento. Caso eu prossiga com os estudos e obtenha sucesso, em breve estarei publicando um novo artigo com a versão modificada do utilitário e se possível com detalhes sobre a implementação do patcher (que será genérico, funcionando com qualquer executável que tenha uma tabela de realocação).
No mais, espero que isto seja útil para alguém.
(y)

Labels:

6 Comments:

Blogger Unknown said...

Marcio, o IBExpert em minha máquina fecha sozinho... não consigo trabalhar mais do que 5 minutos e ele é encerrado. Já tentei desinstala-lo, limpar o registro do windows, instala-lo novamente e continua com o problema. Vc conhece alguma solução para isso, desde que não seja o pagamento da licença? ;-)
Grato.

11 March, 2006 15:03  
Blogger Unknown said...

Marcio obrigado pela força com o IBExpert, estou iniciando hoje a utilizando, agregada ao aplicativo que vc desenvolveu. Vamos ver no que dá.

Grande abraço !!!

05 March, 2009 11:10  
Blogger Unknown said...

opa, cara, eu usei esse teu executável ai, mas num mudou em nada os dias que aparecem ao abrir o IBexpert Trial...


pode me ajudar?

netox_toox@hotmail.com


obrigado cara, abraço

23 April, 2009 20:27  
Blogger Unknown said...

olá, cara, encontro os registros com teu executável, porém clico para apagar os registros e não apaga.

me ajuda por favor,

obrigado, abraço

netox_toox@hotmail.com

23 April, 2009 20:29  
Blogger Rogerio Montenegro said...

Teu programa não deletou, então remomei as chaves no registro e ele criou outras validando para 45 dias novamente. Então deletei as renomeadas.

26 April, 2009 17:12  
Blogger Rogerio Montenegro said...

Teu programa não deletou, então remomei as chaves no registro e ele criou outras validando para 45 dias novamente. Então deletei as renomeadas.

26 April, 2009 17:12  

Post a Comment

<< Home