André Alves de Lima

Talking about Software Development and more…

Ferramentas de proteção contra pirataria no .NET

Uma coisa que deixa muitas empresas com uma baita dor de cabeça é a quantidade de pessoas que tentam piratear as suas soluções. Quanto maior e mais conhecida for a aplicação, maior será a capacidade de atrair potenciais hackers que farão de tudo para quebrar a sua proteção contra pirataria. Empresas grandes investem muito dinheiro para tornar as suas aplicações (e jogos) mais difíceis de serem pirateados.

Todo esse investimento faz muito sentido para empresas que produzem aplicações comerciais para as “massas“. É claro que a Microsoft tem que investir contra a pirataria do Windows e do Office, e é claro que a Adobe não vai querer que alguém utilize o Photoshop sem pagar. Afinal, essas empresas investiram pesado para desenvolver as suas aplicações, então, faz sentido que elas invistam uma quantidade de dinheiro considerável na sua proteção contra pirataria.

Porém, se você chegou nesse artigo, você provavelmente não é uma Microsoft ou Adobe. Possivelmente você é desenvolvedor em uma pequena ou média empresa (ou até mesmo um desenvolvedor autônomo) e está querendo proteger a sua aplicação contra pirataria. Apesar de eu ser da opinião de que você só deve investir dinheiro nisso caso a sua aplicação seja minimamente “famosa“, essa é uma pergunta que eu recebo com uma certa frequência: como proteger os nossos aplicativos desenvolvidos com o .NET contra pirataria?

Depois desse tema ter sido um dos ganhadores da minha pesquisa de temas no semestre passado, eu resolvi testar algumas ferramentas de proteção contra pirataria. Todas as ferramentas apresentadas neste artigo são pagas, porém todas elas têm algum tipo de versão “trial” que você utilizar para testar com o seu aplicativo. Quer ver quais são essas ferramentas e quais são as diferenças entre elas? Então, vamos lá.

IntelliLock

Esse é um dos softwares de proteção contra pirataria mais conhecidos no mercado. De acordo com a página da empresa desenvolvedora, o IntelliLock é utilizado por uma variedade de empresas renomadas, como Xerox, LG, Siemens e até mesmo a Microsoft. O que eu achei mais legal no IntelliLock é que não é necessário implementar nenhuma linha de código para ativarmos um sistema de licenciamento nas nossas aplicações (a não ser que você queira fazer um controle de licenciamento por funcionalidades, e não um bloqueio geral da aplicação).

Ao abrirmos o IntelliLock, logo na primeira tela nós temos uma opção onde podemos selecionar os assemblies da nossa aplicação:

Em seguida, na próxima etapa do assistente, nós podemos selecionar quais serão as restrições que serão aplicadas no nosso sistema. Nessa etapa nós conseguimos definir diversos tipos de restrição para aplicações “trial” (como tempo de expiração, data de expiração, quantidade de execuções, tempo de execução, etc). Caso nós não queiramos disponibilizar a nossa aplicação em período de testes, basta escolhermos a opção “Custom“. Dessa forma, a aplicação só funcionará caso o usuário tiver uma licença válida:

Ao adicionarmos uma camada de proteção contra pirataria na nossa aplicação .NET, é importante que nós obfusquemos o seu código. Caso contrário, algum usuário mal intencionado poderia simplesmente descompilar a aplicação e remover o código de proteção. Uns tempos atrás eu escrevi um artigo mostrando como podemos obfuscar as nossas aplicações .NET. O IntelliLock, porém, possui um sistema de obfuscação embutido na própria ferramenta:

Uma vez aplicada a proteção contra pirataria pelo IntelliLock, nós teremos um novo assembly com as proteções ativadas (que será gerado no subdiretório “_Locked“). Para destravar o aplicativo, o usuário deverá ter um arquivo de licença válido no mesmo diretório da aplicação. Esse arquivo de licença é gerado diretamente no projeto do IntelliLock:

Note que temos a opção de gerarmos licenças que são atreladas ao hardware do usuário. Sempre é recomendado que você utilize essa opção, caso contrário, qualquer usuário que tenha o arquivo de licença poderá instalar a aplicação em quantos computadores ela quiser.

Outra opção bastante interessante é a possibilidade de forçarmos a validação da licença através de um servidor. Eu não testei essa opção, mas pareceu ser bem tranquila de ser implementada (o SDK possui o código completo do site ASP.NET que implementa o servidor de ativação).

O IntelliLock possui um SDK e projetos de exemplo em diversas plataformas. A sua utilização é muito simples. Por exemplo, caso você precise exibir uma tela com o “Hardware ID” do usuário (para gerar uma licença que só seja válida para o computador dele), o código ficaria assim:

            // C#
            var travarCPU = true;
            var travarHD = true;
            var travarMacAddress = true;
            var travarPlacaMae = true;
            var travarBios = true;
            var travarSO = true;
            var hardwareID = IntelliLock.Licensing.HardwareID.GetHardwareID(travarCPU, travarHD, travarMacAddress, travarPlacaMae, travarBios, travarSO);
' VB.NET
Dim TravarCPU = True
Dim TravarHD = True
Dim TravarMacAddress = True
Dim TravarPlacaMae = True
Dim TravarBios = True
Dim TravarSO = True
Dim HardwareID = IntelliLock.Licensing.HardwareID.GetHardwareID(TravarCPU, TravarHD, TravarMacAddress, TravarPlacaMae, TravarBios, TravarSO)

Caso você queira trabalhar com funcionalidades customizadas no arquivo de licenças (para liberar algumas funcionalidades somente para alguns usuários específicos), você pode checar as informações customizadas da licença da seguinte maneira:

            // C#
            if ((IntelliLock.Licensing.EvaluationMonitor.CurrentLicense.LicenseStatus == IntelliLock.Licensing.LicenseStatus.EvaluationMode) || (IntelliLock.Licensing.EvaluationMonitor.CurrentLicense.LicenseStatus == IntelliLock.Licensing.LicenseStatus.Licensed))
            {
                for (int i = 0; i < IntelliLock.Licensing.EvaluationMonitor.CurrentLicense.LicenseInformation.Count; i++)
                {
                    var chaveCustomizada = IntelliLock.Licensing.EvaluationMonitor.CurrentLicense.LicenseInformation.GetKey(i).ToString();
                    var valorCustomizado = IntelliLock.Licensing.EvaluationMonitor.CurrentLicense.LicenseInformation.GetByIndex(i).ToString();
                }
            }
' VB.NET
If (IntelliLock.Licensing.EvaluationMonitor.CurrentLicense.LicenseStatus = IntelliLock.Licensing.LicenseStatus.EvaluationMode) OrElse (IntelliLock.Licensing.EvaluationMonitor.CurrentLicense.LicenseStatus = IntelliLock.Licensing.LicenseStatus.Licensed) Then
	For I As Integer = 0 To IntelliLock.Licensing.EvaluationMonitor.CurrentLicense.LicenseInformation.Count - 1
		Dim ChaveCustomizada = IntelliLock.Licensing.EvaluationMonitor.CurrentLicense.LicenseInformation.GetKey(I).ToString()
		Dim ValorCustomizado = IntelliLock.Licensing.EvaluationMonitor.CurrentLicense.LicenseInformation.GetByIndex(I).ToString()
	Next
End If

Site: http://www.eziriz.de/intellilock.htm
Custo: $179
Versão de avaliação: sim, sem restrições, mas adiciona uma mensagem no início da aplicação

Softactivate

A estratégia do Softactivate é um pouco diferente da estratégia do IntelliLock. Com o aplicativo do Softactivate, nós precisamos gerar um template de licença com as opções de bloqueio:

As opções de bloqueio do Softactivate são mais limitadas do que as do IntelliLock, principalmente no que diz respeito às versões de avaliação. Entretanto, nós conseguimos também utilizar valores customizados na licença (para ativar funcionalidades específicas para um grupo de usuários) e servidores de ativação (que eu não testei).

Uma vez gerado o template, nós podemos criar a quantidade de seriais que julgarmos necessário:

Por fim, da mesma forma que podemos fazer com o IntelliLock, nós conseguimos opcionalmente atrelar a licença a um hardware específico. Tendo em mãos o número da licença e o ID do hardware, nós conseguimos gerar o código de ativação para a licença:

O Softactivate conta com diversos projetos demonstrando a sua utilização em C#, VB.NET, C e C++. Eu dei uma olhada neles e, sinceramente, achei bastante complicado de entender. Eles disponibilizam algumas janelas que podemos utilizar para fazer a ativação da licença, mas, aparentemente fica um tanto quanto complicado caso queiramos implementar a nossa própria janela de ativação. Mas, pelo menos os códigos estão compilando e os exemplos funcionando.

Site: http://www.softactivate.com/
Custo: $49 – $399
Versão de avaliação: sim, sem restrições, mas a chave pública é sempre a mesma (ou seja, qualquer um pode desbloquear a aplicação)

XHEO DeployLX

Vou falar para você que eu fiquei impressionado depois de testar o XHEO DeployLX. Tudo bem, o preço é salgado (é a ferramenta mais cara que vou apresentar nesse artigo), mas a facilidade de utilização é incrível.

Uma vez aberta a ferramenta, nós conseguimos selecionar a opção “Protect Project“. Aí é só seguir o assistente, que fará todas as alterações no nosso projeto para que ele seja protegido:

Com a licença criada, nós podemos ajustá-la conforme a nossa necessidade. Podemos criar períodos de trial, extensões de trial, bloqueio por hardware, etc. Além disso, nós conseguimos adicionar também informações customizadas na licença, tornando possível a ativação de funcionalidades específicas somente para alguns usuários ou clientes.

Sério, você precisa assistir ao vídeo disponibilizado na página do produto, onde o apresentador adiciona proteção em um aplicativo desktop em menos de 5 minutos. Eu salvei o vídeo e estou disponibilizando aqui, caso a XHEO venha a tirá-lo do ar no futuro:

Site: http://xheo.com/products/copy-protection
Custo: $699 – $1299
Versão de avaliação: sim, 45 dias

Ellipter

Essa foi a opção com o pior custo / benefício de todas as que eu encontrei. Esse software tem apenas a funcionalidade de gerar chaves as privadas e públicas e seus respectivos seriais para ativação. A única opção de customização “out of the box” que recebemos dessa ferramenta é a possibilidade de configurarmos uma data de expiração para o serial.

Com o Ellipter, nós utilizamos a sua aplicação desktop para gerarmos as chaves de criptografia e os seriais:

Tendo essas informações em mãos, nós adicionamos a referência para a biblioteca do Ellipter no nosso projeto e verificamos se um determinado serial é válido ou não, com base na chave pública:

            // C#
            var manager = new SeriousBit.Ellipter.SerialsManager("NomeDesenvolvedor", "ChaveAtivacaoEllipter", SeriousBit.Ellipter.KeyStrength.Use128Bits);
            manager.PublicKey = "WQ5UMNN7RZRVB5UKAR2RVSFZDCJ6BTWSPNBNNRQD9GME7TUKHR6ZE";

            if (manager.IsValid("QT5GQ3-87NB4A-VV9FMF-EUXK2D-L87A1Q-QQA"))
                MessageBox.Show("QT5GQ3-87NB4A-VV9FMF-EUXK2D-L87A1Q-QQA é válido");
            else
                MessageBox.Show("QT5GQ3-87NB4A-VV9FMF-EUXK2D-L87A1Q-QQA é inválido");

            if (manager.IsValid("XPTO"))
                MessageBox.Show("XPTO é válido");
            else
                MessageBox.Show("XPTO é inválido");
' VB.NET
Dim Manager = New SeriousBit.Ellipter.SerialsManager("NomeDesenvolvedor", "ChaveAtivacaoEllipter", SeriousBit.Ellipter.KeyStrength.Use128Bits)
Manager.PublicKey = "WQ5UMNN7RZRVB5UKAR2RVSFZDCJ6BTWSPNBNNRQD9GME7TUKHR6ZE"

If Manager.IsValid("QT5GQ3-87NB4A-VV9FMF-EUXK2D-L87A1Q-QQA") Then
	MessageBox.Show("QT5GQ3-87NB4A-VV9FMF-EUXK2D-L87A1Q-QQA é válido")
Else
	MessageBox.Show("QT5GQ3-87NB4A-VV9FMF-EUXK2D-L87A1Q-QQA é inválido")
End If

If Manager.IsValid("XPTO") Then
	MessageBox.Show("XPTO é válido")
Else
	MessageBox.Show("XPTO é inválido")
End If

No próprio site do Ellipter eles disponibilizam alguns códigos de exemplo em C#, porém a funcionalidade não vai muito além do que eu mostrei no código de exemplo acima. A única outra coisa que podemos checar com os seriais gerados pelo Ellipter é uma string com “informação do produto“. Nessa string nós poderíamos, por exemplo, armazenar alguma informação que indicaria quais funcionalidades seriam liberadas para o usuário que tivesse aquele serial.

E é isso. Sem servidor de ativação, sem bloqueio por hardware (pelo menos não de forma intuitiva), e tudo isso por, no mínimo, $499. Não sei você, mas eu achei bastante caro, principalmente se compararmos com os valores das outras ferramentas apresentadas.

Site: http://ellipter.com/
Custo: $499 – $2499
Versão de avaliação: sim, sem restrições, mas só funciona no computador de desenvolvimento

LimeLM

Vou te falar que eu achei essa ferramenta muito interessante. Todo o gerenciamento das licenças funciona completamente online. Você cria o seu produto e seus respectivos seriais (que podem ser enviados por e-mail). Aí você distribui junto com a aplicação o arquivo de licença (que identifica o aplicativo que está sendo distribuído) e um “assistente de ativação“, que é assustadoramente parecido com a ativação do Windows, Office, etc:

Uma vez que o usuário tiver ativado a aplicação, as informações são gravadas em disco, porém, via código nós podemos implementar um mecanismo que fará uma re-checagem da licença a cada X dias, para ver se o serial não foi revogado.

Quando trabalhamos com proteção contra pirataria atrelada ao hardware do usuário, é muito comum que alguns clientes instalem a aplicação em máquinas virtuais. Dessa forma, uma vez ativada a aplicação na máquina virtual, o cliente pode replicar essa máquina virtual N vezes e terá acesso à nossa aplicação em todas as cópias que tiverem sido criadas. O LimeLM tem até um esquema (opcional) que detecta se o usuário está utilizando o sistema em máquinas virtuais e bloqueia a ativação nesse cenário:

O código para verificarmos se a aplicação está ativada ou não é muito simples. No próprio site do LimeLM temos à nossa disposição um tutorial bem completo em C#, mas se quisermos fazer uma simples checagem se a aplicação já foi ativada, este seria o código:

            // C#
            var ta = new wyDay.TurboActivate.TurboActivate("GUID_DA_APLICACAO");
            if (ta.IsGenuine(90, 14) == wyDay.TurboActivate.IsGenuineResult.Genuine && ta.IsActivated())
            {
                // Aplicação ativada...
            }
' VB.NET
Dim Ta = New wyDay.TurboActivate.TurboActivate("GUID_DA_APLICACAO")
If Ta.IsGenuine(90, 14) = wyDay.TurboActivate.IsGenuineResult.Genuine AndAlso Ta.IsActivated() Then
	' Aplicação ativada...
End If

Como cada serial pode ser revogado a qualquer momento no gerenciador central do LimeLM, é importante implementarmos uma re-checagem da ativação de tempos em tempos. No código apresentado acima, através do método “IsGenuine” nós implementamos re-checagem da ativação a cada 90 dias, com um período de carência de 14 dias (para os casos em que o acesso à Internet não estiver disponível para fazer a re-checagem). A ativação funciona também sem acesso à Internet, através de um arquivo de ativação.

Site: http://wyday.com/limelm/
Custo: gratuito – $349 por mês
Versão de avaliação: sim, limitado a um produto, 10 usuários ativados e 200 usuários em período trial

Qual é a melhor opção?

Apresentadas as 5 principais opções comerciais de proteção contra pirataria no .NET, a pergunta que fica é: qual dessas 5 ferramentas seria a melhor opção para proteger a minha aplicação? A resposta é, como sempre, “depende“.

Caso a sua aplicação seja pequena e com poucas ativações, a versão gratuita do LimeLM é um excelente começo. Com ela, você conseguirá gerenciar o licenciamento de somente um produto, podendo ativá-lo em até 10 clientes e/ou 200 versões trials do produto.

Caso a sua aplicação cresça um pouco, na minha opinião, ainda sim valeria o investimento de $11 por mês da assinatura mais básica do LimeLM, que permite o gerenciamento de um produto, com 300 ativações e 6000 trials. Com o LimeLM todo o gerenciamento das ativações é feito de maneira centralizada e você pode facilmente revogar seriais de qualquer usuário a qualquer momento (muito útil quando algum cliente resolve atrasar o pagamento).

Se o gerenciamento centralizado não é importante para você e se você conseguir investir pelo menos um pouco de dinheiro, talvez, eu recomendaria a edição básica do Softactivate, que sai atualmente por $49. Essa é a ferramenta mais em conta que você conseguirá encontrar no mercado e já possui boas opções para protegermos as nossas aplicações.

Porém, se você conseguir guardar um pouquinho mais de dinheiro, eu recomendaria fortemente a aquisição do IntelliLock. Como eu mencionei no artigo, a quantidade de opções disponibilizadas pelo IntelliLock é impressionante. Pagando uma vez os $179 da ferramenta você teria acesso a uma infinidade de opções para proteger a sua aplicação contra pirataria, inclusive servidor de ativação (cujo código é distribuído junto com o IntelliLock).

Para grandes empresas com um orçamento mais generoso, o XHEO DeployLX me pareceu uma opção bem interessante. Dá para ter uma boa ideia do que essa ferramenta é capaz assistindo o vídeo apresentado anteriormente neste artigo, onde a proteção contra pirataria é adicionada em um projeto Windows Forms em menos de 5 minutos.

Por fim, a opção que eu particularmente não recomendaria seria o Ellipter. O custo / benefício dessa ferramenta não é nada atrativo. Com os $499 do custo do Ellipter nós conseguiríamos pagar quase um ano e meio de assinatura do LimeLM (que na minha opinião é muito superior ao Ellipter) com suporte a três produtos e 1200 ativações.

Dá para criar o seu próprio sistema de licenciamento?

Uma última pergunta que pode estar surgindo na sua cabeça nesse momento é: será que eu não consigo criar o meu próprio sistema de licenciamento? E a resposta é: sim! Você pode criar o seu próprio sistema de proteção contra pirataria!

Para implementar um esquema de proteção mais simples (como o disponibilizado pelo Ellipter), você só precisa gerar duas chaves (uma privada e uma pública). Aí você gera os seriais utilizando as duas chaves (em um executável à parte, que será o seu “gerador de seriais“) e, na aplicação principal, você checa a validade do serial apresentado pelo usuário através da chave pública.

Eu não vou mostrar isso neste artigo porque ele já está ficando muito longo, mas já coloquei esse tópico na minha lista de temas para abordar no futuro. Se você se interessar por isso, deixa um comentário para me motivar a escrever esse artigo o quanto antes. Enquanto isso não acontece, você pode ir dando uma olhada nesta thread do StackOverflow (opção 1) e na biblioteca Rhino Licensing (opção 2).

Concluindo

A proteção contra pirataria é uma preocupação frequente para os desenvolvedores de aplicações. Afinal, depois de gastar tanto tempo e dinheiro desenvolvendo uma aplicação, ninguém vai querer que ela seja copiada para lá e para cá sem controle nenhum.

Ao invés de ficar gastando o seu precioso tempo desenvolvendo o seu próprio sistema de licenciamento, vale a pena dar uma olhada em ferramentas comerciais que são especializadas nessa área. No artigo de hoje você viu 5 opções de ferramentas de proteção contra pirataria que você pode utilizar na sua aplicação .NET. Por fim, você viu também a minha opinião sobre qual ferramenta utilizar dependendo do cenário da sua aplicação e orçamento disponível.

E você? Já protegeu a sua aplicação contra pirataria? Utilizou alguma ferramenta comercial ou criou o seu próprio sistema de licenciamento? Conte-nos mais detalhes na caixa de comentários!

Por fim, convido você a inscrever-se na minha newsletter. Ao fazer isso, você receberá um e-mail toda semana sobre o artigo publicado e ficará sabendo também em primeira mão sobre o artigo da próxima semana, além de receber dicas “bônus” que eu só compartilho por e-mail. Inscreva-se utilizando o formulário logo abaixo.

Até a próxima!

André Lima

Image by Pixabay used under Creative Commons
https://pixabay.com/en/pirates-flag-skull-symbol-skeleton-1693519/

Newsletter do André Lima

* indicates required



Powered by MailChimp

32 thoughts on “Ferramentas de proteção contra pirataria no .NET

  • Bom dia André!

    Só tenho que agradecer por mais este excelente artigo.

    Gostaria e agradecia muito que abordasses este tópico Dá para criar o seu próprio sistema de licenciamento?

    Obrigado por tudo um grande abraço!

    • andrealveslima disse:

      Olá Flávio, muito obrigado pelo comentário!

      Já coloquei esse tema na minha lista aqui e, assim que possível, escreverei sobre ele, aí eu te aviso..

      Abraço!
      André Lima

    • LUCIANO disse:

      André, primeiro quero dar parabéns pelo seu artigo e pedir um favor, eu tenho o intelilock e gostaria de saber como faço para usar o Hardware Lock License para gerar uma licença que só seja válida para um computado específico. O programa foi feito em C#. Se puder ajudar fico grato.

      • andrealveslima disse:

        Olá Luciano, obrigado pelo comentário e pelo elogio!

        Quanto à sua dúvida, o que eu mostrei no artigo não te ajuda? Tem um método onde você gera o “Hardware ID” na sua aplicação.. Depois você coloca naquele textbox dentro do Intellilock e a licença estará atrelada àquele hardware.. Não é isso que você está querendo fazer?

        Abraço!
        André Lima

  • André, boa tarde!
    Vi a respeito dessas ferramentas de proteção contra pirataria.

    E resolvi testar a LimeLM, até consegui implementar, mas algumas coisas ainda não encaixaram!

    Você por acaso testou elas?
    Se sim, poderia me ajudar no uso da Função TA_IsGenuineEx?
    Eles falam na documentação do site que devo utilizar essa função para checar nos servidores de licença, para os usuários receberem os ultimos dados de licenciamentos.

    Porém não consegui encontrar essa função e muito menos com isso fazer essas verificações!

    Outra coisa por exemplo que não consegui fazer, foi funcionar a questão de revogar a chave!

    Com essas 2 falhas, não consegui também ter a questão da validade dos arquivos.

    No meu caso usarei em sistema que o cliente irá pagar mensalmente, e com isso preciso verificar se a licença deles está expirada, e automaticamente bloquear se ele não efetuou o pagamento!

    Enfim, no que puder me ajudar, agradeço?!

    • andrealveslima disse:

      Olá José, obrigado pelo comentário!

      Sim, eu testei todas essas opções (não muito à fundo, porque elas têm uma infinidade de opções, mas pelo menos o básico eu testei).. No caso do LimeLM, aquele código que eu postei aqui no artigo funcionou certinho para mim.. O único problema da chamada do IsGenuine para licenças revogadas é que ele tem esse tempo entre checagens e tempo de carência.. Ou seja, se você passar 90, 14 como parâmetro (da forma que eu passei no código do artigo), ele vai checar a validade a cada 90 dias, dando um período de carência de 14 dias caso o acesso à internet não esteja disponível no momento da checagem..

      No seu caso, como a licença da sua aplicação é mensal, você poderia checar, digamos, a cada 25 dias, sem período de carência (o usuário teria que estar conectado à internet para fazer a validação, senão o aplicativo seria bloqueado):

      var ta = new wyDay.TurboActivate.TurboActivate("GUID_DA_APLICACAO");
      if (ta.IsGenuine(25, 0) == wyDay.TurboActivate.IsGenuineResult.Genuine && ta.IsActivated())
      {
          // Aplicação ativada...
      }
      

      Entendeu? Se não tiver entendido ou se tiver com dúvida em alguma parte, me avisa que eu tento ajudar de outra maneira..

      Abraço!
      André Lima

  • Jonas disse:

    Boa tarde André,

    Obrigado por mais este post. Acompanho seu blog e sempre tem conteúdo muito legal.

    Gostaria de sugerir que escrevesse sobre a criação de nosso próprio servidor de licenças.

    Abraço,

    Jonas

    • andrealveslima disse:

      Olá Jonas, muito obrigado pelo comentário!

      Que bom que você gostou do artigo, fico feliz! :)

      Pode deixar que essa ideia está na minha lista.. Assim que eu conseguir escrever sobre isso, eu te aviso..

      Um forte abraço!
      André Lima

  • Manoel Pedro G. M. Jr disse:

    Muito interessante o artigo André, mas eu gostaria de criar um próprio vou aguardar o seu próximo artigo sobre o assunto.^^

    • andrealveslima disse:

      Beleza Manoel, obrigado pelo comentário!

      Já está aqui na minha lista.. Assim que possível, eu escrevo sobre esse tema e aviso aqui nos comentários..

      Abraço!
      André Lima

  • Ademi Vieira disse:

    Boa tarde André, excelente artigo e obrigado pelos links do e-mail.
    Sempre que sobra tempo eu olho a caixa de e-mail na sexta-feira a tarde.
    Gostaria de ver sim! como criar nosso próprio controle contra pirataria.
    Um abraço e bom final de semana!

    • andrealveslima disse:

      Muito obrigado pelo comentário, Ademi! Fico feliz que você tenha gostado de mais esse artigo.. :)

      Já coloquei aqui na minha lista.. Assim que eu conseguir escrever um artigo sobre esse tema, eu volto aqui e te aviso..

      Abraço!
      André Lima

  • Hackspear disse:

    Ola Andre!

    Primeiramente gostaria de parabenizar pelo blog!
    Você consegue abordar temas específicos que possuem pouco conteúdo na internet, de forma prática e vem me ajudado muito. Continuando assim você irá se consagrar igual nosso amigo MACROATTI…rs

    Sou desenvolvedor autônomo de VB.NET, tenho uma aplicação rodando em 10 clientes e estou precisando ofuscar meu código. Vi sua matéria sobre ofuscadores, no entanto fiz uma cotação com o dotofuscator a semana passada e o valor está em USD 3.000,00 (mais de 10 mil reais..rs..fica aqui registrado até para informação…).

    Eu baixei o DE4DOT e ele quebrou o BABEL e o DOTOFUSCATOR free. O NETREACTOR (Ezirirs) ele não quebrou, gostaria de comprar, mas o pesssoal da EZIRIS não respondem os emails nem as mensagens enviadas pela pagina, nao sei se ainda estão na ativa.

    Estou precisando comprar um. Qual ofuscador você recomenda André?
    Ja cheguei até a me arrepender de ter desenvolvido em .NET por conta deste motivo…proteção.

    abraços meu amigo!

    • andrealveslima disse:

      Olá, muito obrigado pelo comentário!!

      Poxa, se eu chegar perto do público que o Macoratti tem, seria muito massa, hehehe.. Ainda tem muuuuito chão.. :)

      Cara, esse negócio de obfuscar o código é um tema polêmico.. Você tem certeza que você realmente precisa desse nível de proteção? Ou seja, existem pessoas que realmente investirão tempo tentando deobfuscar o seu código, compilar de novo para depois utilizar de alguma maneira? Isso é realmente praticável no seu cenário?

      No meu artigo sobre obfuscação no .NET, eu mostrei também a ferramenta ConfuserEx.. Você já tentou utilizá-la?

      E quanto ao NetReactor, não dá para comprar direto na página? Que eu saiba não precisa entrar em contato com eles para comprar, precisa?

      Enfim, vai mantendo a gente informado aqui sobre qual opção você escolheu, OK?

      Um forte abraço!
      André Lima

  • Guilherme Paracatu disse:

    Aguardando o como criar nosso próprio controle contra pirataria!!!!!! E obrigado por todo ótimo conteúdo que tem disponibilizado para todos que acompanham…

  • Frederico disse:

    Olá André boa noite! Como sempre superando as expectativas no site. Você é o cara mesmo. Para ser sincero, eu gosto mais do conteúdo publicado em seu site do que o MACORATTI. Meus parabéns!

    André eu acabei comprando o IntelliLock porque achei muito interessante entre custo/benefício. Agora uma coisa que eu não consegui utilizar bem foram as opções de Deactivation Code e License Reactivation. Você chegou a fazer algum teste?

    Será que você poderia mais uma vez me ajudar em publicar alguma informação a respeito dessa funcionalidade? Como você tem mais experiência em programação talvez você consiga me ajudar mais uma vez.

    O que vou dizer aqui mais uma vez é como chover no molhado: “Você é o cara!”. Obrigado pelas publicações do site são artigos de excelente qualidade e ótimo nível de conhecimento compartilhado.

    • andrealveslima disse:

      Olá Frederico! Poxa, muito obrigado pelos elogios.. Fico feliz que você esteja gostando das publicações.. :)

      Quanto ao IntelliLock, eu não testei essas opções especificamente.. O que você está querendo fazer? Uma maneira de desativar a licença depois que o usuário já tiver ativado? Pelo que entendi, para utilizar essa funcionalidade você precisa de um servidor de licença.. É isso mesmo que você está querendo fazer?

      Abraço!
      André Lima

      • Frederico disse:

        Olá André.

        Na verdade eu achava que essa opção seria para transferir a licença de uma máquina para outra caso houvesse a necessidade de se fazer isso. Ele gerando o código de desativação poderia me enviar e eu validaria a mesma licença só que para um novo hardware.

        • andrealveslima disse:

          Olá Frederico!

          Hmm, que eu saiba não dá para fazer desa maneira.. Talvez com o servidor de licença você consiga gerenciar dessa forma, mas eu não consegui testar.. Se for trabalhar sem servidor de licença, o jeito seria gerar outro arquivo de licença para o usuário tomando como base o novo Hardware ID dele.. O problema é que não dá para saber se o usuário ainda manteve o computador antigo, aí pode ser que ele utilize a aplicação em mais de um computador..

          Sem um servidor de licenças eu não vejo como o Intellilock conseguiria saber que a licença foi revogada.. Se você realmente precisa desse nível de controle, acho que você vai ter que partir para essa solução..

          Abraço!
          André Lima

          • Frederico disse:

            Ok André.

            Agradeço pelas informações. Acho que vou seguir sua sugestão de implantar um servidor de licença. Você já ajudou muito. Muito obrigado e aguardando por um novo artigo.

          • andrealveslima disse:

            OK, Frederico! Depois conta pra gente como é que foi o processo de criação do servidor de licença.. Qualquer coisa é só entrar em contato.. Boa sorte aí!

            Abraço!
            André Lima

  • deuzivaldo disse:

    Bom dia professor. Mais uma vez, muito obrigado
    Professor você me falou que eu estou usando vb.net 2010 e que tem outros 2012, 2013,2017.
    Mas estou tendo problema para instalar. Eu uso um net será esse o problema ou o sistema o operacional que e de 32bits?

    • andrealveslima disse:

      Olá novamente Deuzivaldo!

      Qual é exatamente o erro que você está obtendo ao tentar instalar o Visual Studio 2017? Poderia informar aqui? Qual é a versão do seu sistema operacional?

      Abraço!
      André Lima

  • deuzivaldo disse:

    Boa tarde professor. Assim que eu tiver um tempo vou tentar instalar e vou postar uma imagem do erro. Obrigado.

  • Gostei do artigo que escreveu só que os preços ainda sao puxados para mim. Eu gostaria numa primeira faze mesmo criar meu propio código.

    • andrealveslima disse:

      Olá José!

      Então o jeito é criar um sistema na mão mesmo.. Só que isso não é simples de ser desenvolvido.. Vai dar um certo trabalho e às vezes o tanto de horas que você vai investir criando um sistema desse tipo, você poderia ter comprado uma solução pronta.. Normalmente reinventar a roda não é uma boa ideia..

      Se você realmente for seguir com a ideia de implementar na mão, os passos que você me mandou por e-mail aparentemente fazem sentido.. Tente implementar e se você ficar com alguma dúvida específica, entre em contato..

      Abraço!
      André Lima

  • Maykon disse:

    Curti a ideia de “Startar” com o LimeLM, você me ajudou bastante! Vou começas a implementar agora! Obrigado.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *