PROTEGER MEUS SOFTWARES

FBUR 28/07/2009 10:41:50
#318098
Bom dia!

Hoje em dia o estou desenvolvendo muitos programas para empresas. Porém, nunca me preocupei muito em proteger os meus programas para que um cliente não faça uma cópia para um [Ô]amigo[Ô].

Tenho algumas dúvidas em relação a isso:

- Eu mesmo devo escrever a proteção do meu sistema ou utilizar componentes e/ou soluções externas?

Existem softwares que comprei onde toda vez que formato a máquina tenho q entrar em contato com o suporte do software para pegar o código de liberação a partir de um número gerado ao instalá-lo. Isso me irrita extremamente. Odeio ter que esperar até o dia seguinte caso eu esteja formatando minha máquina às 23h... Gosto mais daqueles softwares que vêm na caixinha com o número de série. Digitou, funcionou.

MAS! é aqui que começam as dúvidas.

Como sabemos, existem softwares piratas que vc instala e dentro do CD já existe uma pasta [Ô]crack[Ô] que tem um executável. Vc substitui este pelo original na pasta que o programa foi instalado e pronto. Não precisa de número de série, reginstro nem nada. Alguns ainda pedem um número de série durante a instalação, que tb vem dentro do CD em um arquivo TXT. Vc digita e pronto... Enfim, vcs sabem...

Primeiramente eu gostaria de entender: Como os caras conseguem fazer isso!? Pegar o EXE e modificar? Como funciona isso tecnicamente falando?? Eles usam alguma outra linguagem, tipo C para isso? Eles tem acesso ao código fonte do programa (limpo e claro) e o modificam?

Sei que qualquer tópico que lembre pirataria, códigos maliciosos, etc, são proibidos. Se este for o caso, encerramos por aqui. Mas eu gostaria de saber como isso funciona. Primeiro que para desenvolver alguma proteção (nem que seja mínima) eu preciso saber como esse mundo funciona. Segundo porque eu nunca entendi isso.

Já vi vários tópicos falando do VBDecompile que (claro) não mostra o código-fonte dos programas, mas mostram um monte de HEX e outras coisa que não fazem muito sentido pra mim. Já li sobre engenharia reversa, mas me perdi logo no início.

Se for possível começar o assunto, como é que alguém pega um executável e o modifica para burlar o registro??

[]'s
TECLA 28/07/2009 13:45:27
#318135
Já testou o ACTIVELOCK (free)?
MARCELO.TREZE 28/07/2009 13:54:18
#318136
Você fez um comentário, sobre sofwares em que ao se formatar a máquina, você deve solicitar uma nova chave, mas veja bem, antes de mais nada activelock é muito bom, mas se deseja uma forma genérica de se fazer isto por que não cria uma chave baseada no numero da placa de rede, assim a chave seria a mesma sempre, p;ara o mesmo pc, e mesmo formatando, não havendo a possibilidade de se instalar em outro pc.

JSFF77 28/07/2009 14:21:20
#318139
Resposta escolhida
Boa tarde.

Amigo FBUR,

Esse tipo de assunto é muito interessante, mas veja que um tópico com tal conteúdo se perderia muito depressa num fórum como esse.

O corioso é que, ao mesmo tempo em que você busca uma solução rápida para seu problema, também tenciona apreder as técnicas para tal. Perceba que de imediato vieram as soluções; quanto às técnicas, nada.

Trata-se de uma programação avançada, que envolve conhecimentos de programação em baixo nível, de saber [Ô]assemblar[Ô] ou [Ô]desassemblar[Ô] um programa na mão; enfim, se tiver tempo para isso (você tem sorte!), comece estudando Assembly, não tem jeito, é baixo nível mesmo! (Veja esse artigo: http://www.guiadohardware.net/comunidade/utilizando-debugger/785195/.)

Sendo um programador em Assembly e C/C++ (embora viva de programar em VB, Delphi, plataforma .NET etc.), posso deixar aqui uma dica:

Com o programa OllyDbg, por exemplo, você pode editar programas executáveis e alterá-los diretamente no seu código de máquina. Com esse programa, é possível saber onde e quando um programa faz uma verificação para determinar se ainda pode rodar ou não em uma máquina (em caso de expiração etc.). Descoberto isso, elimina-se (remove-se) esse código e pronto, quebrou-se a segurança do programa!

Parace simples, não? Mas façamos isso sem conhecimentos de programação em baixo nível para ver se o programa ainda funciona!

Bom, que não me interpretem mal, sou apenas um curioso nesse campo da programação.

Até breve.


José Freitas
FBUR 28/07/2009 16:30:17
#318155
Muito interessante JSFF77! Muito bom mesmo!!

Engraçado que já tinha visto algo muito parecido com assembly na faculdade (MOV, ADD, PUSH, etc). é uma área que ainda não me atrevo a estudar, justamente pela falta de tempo. Mas ficou bem claro como a segurança de um software pode ser driblada. O artigo / site do autor é muito bom também...

Mas realmente. Para fazer isso tem que entender mesmo do que está sendo feito. Imagina traduzir IF's, FOR's, funções, variáveis em algo do tipo 0000000D JNE 00000019h?

Mas se for assim então, mesmo se eu entendesse disso ficaria difícil de proteger meus sistemas. A não ser misturando técnicas como registro on-line baseado na compra, cadastro de cliente, etc.

Claro que meus sistemas não justificariam todo esse trabalho... hehe... Quem sabe dia... :)

Em relação aos métodos para proteger o programa, a idéia de determinar o licenciamento com base no hardware (placa de rede, número de série do HD) parece ser a mais viável. Porém isso iria necessitar que o fulando entrasse em contato comigo para fornecer o número de série, caindo naquilo que odeio (como usuário).... ficar pendindo número de série para o suporte. Embora isto seja algo que me irrite, e acho q irritaria alguns de meus clientes, não vejo muito para onde correr. Acho que se não for assim (fora algo como HARDLOCK), não tem jeito mesmo.
Mesmo se o número licença ficar associado na placa de rede ou HD e se estas partes precisarem ser substituídas ou até mesmo o computador inteiro, a lógica iria para o espaço...

Vi aqui no VBM que foi criada uma DLL que registra quantas vezes o programa foi aberto e, caso o software não seja registrado em um determinado período, ele trava. Já ajuda também.

Já vi também softwares que após a instalação é requerido um drive de disquete com uma chave (pode ser substituído por uma PenDrive). Esta chave é transferida para o HD. Ou seja, se for instalado em outra máquina o programa vai pedir o disquete com a chave mas a chave estará em um outro computador... enfim. Já deu pra ver como funciona.

Isso também é muito chato. Já tive softwares que usavam esta forma de proteção. Aí o HD do computador morreu ou deu pau, ou por esquecimento de salvar a licença novamente na mídia removível. Resultado: A empresa cobra + R$ XXX,XX para reenviar a chave...

Por enquanto ainda não tenho problemas com isso, até porque os softwares são muito específicos e personalizados. Mas a tendência é irem ficando mais genéricos, e até lá eu pretendo estar preparado.

Esse negócio de proteção é complicado!!
Tópico encerrado , respostas não são mais permitidas