USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Quero proteger minha aplicação
Ricardo Garcias
não registrado
ENUNCIADA !
Postada em 21/01/2008 17:46 hs   
Bom... sou novo por aqui, mas passeando pelo forum li diversas dicas prestadas a outros usuários do site e me encoragei a pedir ajuda, tendo em vista o nível de conhecimento de todos q pariticipam do forum.
 
Um cliente me solicitou um programinha simples para gerenciamento de uma escolinha. Com o programa correu tudo bem! Até terminei antes do prazo q eu previa. Antes de entregar o programa p ele, eu gostaria de adicionar uma proteção, para q o programa só fosse executado no computador dele.
Pensei em algo q um programador de uma empresa p qual presto serviço faz:
--> Ele possui um banco de dados protegido por senha. Dentro desse bd imagino que tem um registro em uma tabela q grava o Volume da unidade. 
--> No início da execução do programa o mesmo realiza uma leitura no Volume da Unidade na qual o programa está instalado! Se o volume for igual abre o programa, se não, para a execução.
Ele protege pelo volume, percebi, pq ao copiar o programa p outro disco ele não abriu. O mesmo acontece no caso de formatação da máquina.
Eu gostaria de colocar uma proteção desta no meu programa, ou algo q funcione no sentido de inibir q outros copiem meu trabalho.
Conto com a ajuda do forum para resolver esta questão e desde já agradeço a atenção de todos q puderem colaborar!!!
   
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 21/01/2008 20:32 hs            
Bom colega com o pouco de conhecimento que tenho posso te dizer que:
 
primeiro é fácil você pegar numero serial do HD, desta forma:
 
primeiro vá em PROJECT/REFERENCES clique em BROWSE...
 
na PASTA SYSTEM32 e selecione o aquivo scrrun.dll
 
e agora cole dentro de um botão o seguinte código:
 
Private Sub Command1_Click()
Dim fso As New FileSystemObject
Dim Winchester As Scripting.Drive
Set Winchester = fso.GetDrive("c")
MsgBox "O Nº Serial é: " & Hex$(Winchester.SerialNumber)
End Sub
 
bom até ai foi facil
 
agora o que eu acho meio esquisito é o seguinte como salvar o numero serial
do HD sem executar o programa, então creio que uma outra forma seria criar
uma senha para cada máquina a partir do numero serial do HD. como fazer, desculpe ainda não tenho um código mas não acho dificil, sei que isto seria mais prático.
 
exemplo:
 
O cliente ao executar o software, teria um numero na tela o qual
seria criado a partir do  nº do HD, este seria enviado Pra você que
retornaria uma chave a partir deste numero, ou seja nenhuma máquina
teria o mesmo numero serial.
 
bom como disse não sou expert nisso estou apenas passando o que
apendi até agora espero ter ajudado.
 
até
 
 
 
 
 
   
Ricardo Garcias
não registrado
ENUNCIADA !
Postada em 22/01/2008 09:21 hs   
Amigo, muito interessante a sua sugestão!!! Vou experimentar!
Vou elaborar uma função q na primeira execução do programa grava o número de série do disco e armazena na tabela do bd para as execuções seguintes!!!
Crio a função q vc passou dentro de um módulo e chamo na inicialização do programa!!!
Foi muito útil a sua informação!!! Testarei e caso funcione postarei o código p q todos possam desfrutar!!! Obrigado e até mais!!!
   
KoRn
Pontos: 2843
SAO PAULO
SP - BRASIL
Postada em 22/01/2008 11:33 hs            
Não sei se vou conseguiur ajudar amigo , mas aki memso no site tem alguns exemplos de como proteger sua aplicação na sessao troca de arquivos tem exemplos do LC Ramos , uma ideia dele é espalhar pelo computador do cliente Arquivos dll e depois pelo path dela verificar se existem no pc do computado rque esta instaldo se nao tiver instaldo as dll que vc espalhou o pc nao abre tipo
 
Dim sARQUIVO As String
 
 sARQUIVO = "C:Arquivos de programasquerver.dll"
If Dir$(sARQUIVO) = "" Then
End
End If
 
 
akNao sessao de troca de arquivos tem um sitema de liberacao de senhas tbm muito bom...... voce pode abrir verificando o nuemro da placa de rede por exemplo
 
 
No general do formulario Menu
 
'========================Pega Numero Mac Placa de Rede
Private Const NCBASTAT As Long = &H33
Private Const NCBNAMSZ As Long = 16
Private Const HEAP_ZERO_MEMORY As Long = &H8
Private Const HEAP_GENERATE_EXCEPTIONS As Long = &H4
Private Const NCBRESET As Long = &H32
Private Type NET_CONTROL_BLOCK
   ncb_command    As Byte
   ncb_retcode    As Byte
   ncb_lsn        As Byte
   ncb_num        As Byte
   ncb_buffer     As Long
   ncb_length     As Integer
   ncb_callname   As String * NCBNAMSZ
   ncb_name       As String * NCBNAMSZ
   ncb_rto        As Byte
   ncb_sto        As Byte
   ncb_post       As Long
   ncb_lana_num   As Byte
   ncb_cmd_cplt   As Byte
   ncb_reserve(9) As Byte
   ncb_event      As Long
End Type
Private Type ADAPTER_STATUS
   adapter_address(5) As Byte
   rev_major         As Byte
   reserved0         As Byte
   adapter_type      As Byte
   rev_minor         As Byte
   Duration          As Integer
   frmr_recv         As Integer
   frmr_xmit         As Integer
   iframe_recv_err   As Integer
   xmit_aborts       As Integer
   xmit_success      As Long
   recv_success      As Long
   iframe_xmit_err   As Integer
   recv_buff_unavail As Integer
   t1_timeouts       As Integer
   ti_timeouts       As Integer
   Reserved1         As Long
   free_ncbs         As Integer
   max_cfg_ncbs      As Integer
   max_ncbs          As Integer
   xmit_buf_unavail  As Integer
   max_dgram_size    As Integer
   pending_sess      As Integer
   max_cfg_sess      As Integer
   max_sess          As Integer
   max_sess_pkt_size As Integer
   name_count        As Integer
End Type
  
Private Type NAME_BUFFER
   Name        As String * NCBNAMSZ
   name_num    As Integer
   name_flags  As Integer
End Type
Private Type ASTAT
   adapt          As ADAPTER_STATUS
   NameBuff(30)   As NAME_BUFFER
End Type
Private Declare Function Netbios Lib "netapi32.dll" (pncb As NET_CONTROL_BLOCK) As Byte
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)
Private Declare Function GetProcessHeap Lib "kernel32" () As Long
Private Declare Function HeapAlloc Lib "kernel32" (ByVal hHeap As Long, ByVal dwFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function HeapFree Lib "kernel32" (ByVal hHeap As Long, ByVal dwFlags As Long, lpMem As Any) As Long
Private Function ObtemEndMAC() As String
'On Error Resume Next
Dim tmp As String
Dim pASTAT As Long
Dim NCB As NET_CONTROL_BLOCK
Dim AST As ASTAT
NCB.ncb_command = NCBRESET
Call Netbios(NCB)
NCB.ncb_callname = "*               "
NCB.ncb_command = NCBASTAT
NCB.ncb_lana_num = 0
NCB.ncb_length = Len(AST)
pASTAT = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS _
        Or HEAP_ZERO_MEMORY, NCB.ncb_length)
           
If pASTAT = 0 Then
    Exit Function
End If
NCB.ncb_buffer = pASTAT
Call Netbios(NCB)
CopyMemory AST, NCB.ncb_buffer, Len(AST)
tmp = Mid("00" & Hex(AST.adapt.adapter_address(0)), 2) & " " & _
        Mid("00" & Hex(AST.adapt.adapter_address(1)), 2) & " " & _
        Mid("00" & Hex(AST.adapt.adapter_address(2)), 2) & " " & _
        Mid("00" & Hex(AST.adapt.adapter_address(3)), 2) & " " & _
        Mid("00" & Hex(AST.adapt.adapter_address(4)), 2) & " " & _
        Mid("00" & Hex(AST.adapt.adapter_address(5)), 2)
               
HeapFree GetProcessHeap(), 0, pASTAT
ObtemEndMAC = tmp
End Function
 
Private Function getWMI_Info() As String
  Dim oAdapters As Object
  Dim oAdapter As Object
  On Error GoTo Fehler_WMI
  Set oAdapters = GetObject("winmgmts:").execquery( _
    "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
 
  For Each oAdapter In oAdapters
    With oAdapter
      getWMI_Info = .MACAddress
    End With
  Next
 
  On Error GoTo 0
  Exit Function
Fehler_WMI:
  MsgBox "Error: " & Err.Number & vbTab & Err.Description, vbCritical
  Resume Next
End Function
 
No Load
 
If getWMI_Info <> "00:10:EC:16:F1:15" Then
   'MsgBox "Computador Não Identificado, Sua Entrada no Sistema não será Permitida."
   Unload Me
End If
eu tenho um de HD , passada pelo Maycon vou ver se acho aki e posto pra vc
 
     
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página