Bloquear programa pelo numero de hd

Delphi

16/01/2008

olá a todos... estou querendo fazer um sistema q seja registrado somente pra uma maq. tipo o programa reconhecer o numero do hd da maq. q ele for instalado e se instalar esse programa em outra maq ele dá um aviso q o sistema ñ foi lisenciado para essa outra maq.

ex: eu tenho uma maq. q o numero do hd é 123456789, então eu quando tiver fazendo esse programa do delphi eu diser q ele vai ser lisenciado para essa maq.
e se eu for instalar ele em outra maq. q o hd seja 123456788 ele dá um aviso q o programa ñ foi registrado para essa maq. e ñ instalar...

se alguém poder me ajudar agradeço desde já... 8)


Nandobacker

Nandobacker

Curtidas 0

Respostas

Marcos.gandin

Marcos.gandin

16/01/2008

Você pode utilizar a função:

Function SerialNum(FDrive:String) :String;
Var
  Serial:DWord;
  DirLen,Flags: DWord;
  DLabel : Array[0..11] of Char;
begin
   Try  GetVolumeInformation(PChar(FDrive+´:\´),dLabel,12,@Serial,DirLen,Flags,nil,0);
     Result := IntToHex(Serial,8); 
   Except 
     Result :=´´;   
   end;
end;


Depois você grava o numero serial numa tabela e é só comparar esse numero caso haja alguma outra instalação.

Espero ter ajudado.


GOSTEI 0
Bernardop

Bernardop

16/01/2008

Olá pessoal.

Eu tenho várias DLLs na pasta [i:6544741ea0]C:\Programa\Common\[/i:6544741ea0]

e o arquivo .exe está na pasta [i:6544741ea0]C:\Programa[/i:6544741ea0]

Como faço para carregar estaticamente a DLL ?

Obrigado!


GOSTEI 0
Nandobacker

Nandobacker

16/01/2008

valeu meu caro mais desse jeito q vc citou e vai registrar o programa de acordo com o numero de hd do cliente?

pq eu quero assim: eu pego o número de hd do cliente, e incluo no codigo do delphi e quando for instalar na maq do cliente ele ñ pedir nenhum numero, pq ele tá sendo instalado na maq q eu peguei o numero do hd, mais se alguém for instalar em outra maq ele dizer q o programa ñ registrado para aquela maq,, pois o numero do hd é diferente...
entendeu?
valeu mesmo assim mais se poder me ajudar novamente...


GOSTEI 0
Marcos.gandin

Marcos.gandin

16/01/2008

Meu amigo...

O que você pode fazer, é criar um programinha bem simples que você vai rodar na máquina do cliente. Esse programinha vai ler o numero do hd do cliente e você só tem que anotar esse número e jogar para dentro do código do seu programa.

A coisa é bem simples...faz um formulário novo, coloca um compontente Label ou Edit e coloca um botão.

No evento OnClick do botão você chama a função que te passei e manda mostrar o resultado no seu Label ou Edit.

Depois é só anotar o número.

Era isso ?


GOSTEI 0
Nandobacker

Nandobacker

16/01/2008

cara valeu mesmo era isso mesmo eu só ñ tava entendendo o jeito q vc tava disendo mais agora entendí, :D valeu


GOSTEI 0
Kroki

Kroki

16/01/2008

Existe umas restrições nesses casos,não é dificil reescrever esse serial no HD,o melhor é ler o serial do FirmWare do HD onde não é possivel mudar mas eu não consegui ler esse serial em HDs SATA.
É boa pratica usar um compressor de executaveis para ajudar a atrapalhar se alguem tentar ´crackear´ o número do HD,pois se voce fizer uma comparação atravez de ´string´(tipo IF ´12345´ <>...etc)é fácil ler o éxecutavel a procura de strings...


GOSTEI 0
Marcosrocha

Marcosrocha

16/01/2008

Algumas vezes quando se tenta ler o Serial do HD não funciona, a rotina acaba retornando o Serial errado, na maioria das vezes isso ocorre com HD´s defeituosos.


GOSTEI 0
Pestana_

Pestana_

16/01/2008

para dificultar um pouco mais ação destes deliquentes que tentar quebrar o seu sistema, acrecente o numero da placa de rede e/ou placa-mãe por exemplo, depois utilize uma lógica para misturar tudo isso, e nunca deixar estás informações em um unico lugar (por ex.: só no registro do windows ou só no banco).


flw.


GOSTEI 0
Pestana_

Pestana_

16/01/2008

uma outra prática fácil e bem simples de ser implementado é você criar arquivos (de preferência com exteções dll e armazenar em um diretório que não seja do seu sistema) que não tem nada haver com o seu sistema, serve para que toda vez que o sistema inicializar verificar se existe este arquivo, caso não exista, o sistema não inicializará.

Quando você for instalar o seu sistema na máquina do cliente então inclua tambem este arquivo.

O bom é você não fazer um tipo de segurança, mas [b:d3b38ea0cf]vários[/b:d3b38ea0cf] para atrapalhar a vida deste delinquente que tentar burlar seu sistema, mesmo que uma delas seja tão simples como foi mencionado logo acima.


flw.


GOSTEI 0
Nandobacker

Nandobacker

16/01/2008

valeu cara vc´s me ajudaram bastante... qualquer coisa é só da um toque no msn.

nandobacker@msn.com
:D


GOSTEI 0
Leonardoffsilva

Leonardoffsilva

16/01/2008

Isso é fácil. E o mais certo é usar o MAC Adress da Placa de Rede.
Armazene o HASH (nunca o numero) em uma tabela e pronto.
Não tem erro.
É impossível descobrir o numero através de um HASH, pois tem uma variante interna do seu sistema que você atribui e não tem como detectar.


GOSTEI 0
Marcos.gandin

Marcos.gandin

16/01/2008

leonardoffsilva

E como ele vai fazer pra armazenar o HASH ?
Ele terá que ler esse número de alguma maneira não é? Então...como é esse procedimento ?


GOSTEI 0
Asales

Asales

16/01/2008

leonardoffsilva,

a sugestão do MAC adress é interessante mas pode trazer alguns inconvenientes:
- no Windows XP se o usuário desativar a conexão de rede o MAC pode não ser identificado.
- e se o computador em que o programa estiver instalado não possui placa de rede?

Então com sugeriu o Pestana_ é bom não se fixar em um único meio de proteção e sem em vários.

No tópico [i:b74768f538]Componente Protetor[/i:b74768f538] indiquei este link que traz uma grande discussão a respeito de proteção:

[Vamos debater] Não quero ser crackeado...
http://forum.devmedia.com.br/viewtopic.php?t=23765


GOSTEI 0
Pestana_

Pestana_

16/01/2008

[b:9846e8096f]asales[/b:9846e8096f] esse tópico é muito bom é uma discução e tanto, valeu por postar o link deste tópico.

Galera, já houvi comentarios que tem como pegar o número do processador, como o número do processador é único, então poderia ser mais um meio de proteção.

alguem conhece está prática?


flw.


GOSTEI 0
Pestana_

Pestana_

16/01/2008

leonardoffsilva, a sugestão do MAC adress é interessante mas pode trazer alguns inconvenientes: - no Windows XP se o usuário desativar a conexão de rede o MAC pode não ser identificado. - e se o computador em que o programa estiver instalado não possui placa de rede? Então com sugeriu o Pestana_ é bom não se fixar em um único meio de proteção e sem em vários. No tópico [i:6daa5a35eb]Componente Protetor[/i:6daa5a35eb] indiquei este link que traz uma grande discussão a respeito de proteção: [Vamos debater] Não quero ser crackeado... http://forum.devmedia.com.br/viewtopic.php?t=23765


tem razão não podemos basear só no MAC da placa de rede, tem que ser baseado em hardwares em que se houver a inexistencia do mesmo o computador não funfa :D por isso que indiquei o HD e a Placa Mãe.

agora se a prática do numero do processador for viavel (como citei no último poste) então acredito que seria uma boa.

mas como já disse temos que se basear em vários meios de proteção, porque se o deliquente conseguir burlar uma proteção, ele tem descobrir as outras.


flw.


GOSTEI 0
POSTAR