Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Seguridad Anticopias en VB6 "El Proyecto" por (Geovanny Avila)

Estas en el tema de Seguridad Anticopias en VB6 "El Proyecto" por (Geovanny Avila) en el foro de Visual Basic clásico en Foros del Web. hola bueno como todos ustedes un buen dia me dije que tenia que haber mas de alguna forma de proteger mi programa de los ladrones ...

  #1 (permalink)  
Antiguo 03/07/2004, 10:42
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Seguridad Anticopias en VB6 "El Proyecto" por (Geovanny Avila)

hola bueno como todos ustedes un buen dia me dije que tenia que haber mas de alguna forma de proteger mi programa de los ladrones asi que bueno. tengo que buscar la manera de extraer un numero de serie o algo asi de la compu.. y entonces pude extraer la etiqueta del disco duro que es un numero que varía grandemente segun cada computadora.. asi que bueno econtre este codigo por allii...(explico.. la etiqueta se puede extraer de la unidad que uno desee pero para mayor seguridad se usa la unidad C: la cual poseen todas las computadoras)

Código:
Private Declare Function GetVolumeInformation& Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal pVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long)

Private Sub Form_Load()
    Dim cad1 As String * 256
    Dim cad2 As String * 256
    Dim numSerie As Long
    Dim longitud As Long
    Dim flag As Long
    unidad = "C:\"
    Call GetVolumeInformation(unidad, cad1, 256, numSerie, longitud, flag, cad2, 256)
    MsgBox "Numero de Serie de la unidad " & unidad & " = " & numSerie
End Sub
depues econtrar la menera de poner los numero en un la memoria de windows para simpre esten alli..

y bueno econtre eso... que me envio un amigo..

Hola. Create un formulario llamado Form1, y en el pon un Textbox, llamado texto. Depués añade este código.

Código:
Private Sub Form_Load() 
   Check1.text= GetSetting(App.Title, me.Name, texto.Name, vbChecked) 
End Sub 

Private Sub Form_Unload(Cancel As Integer) 
   SaveSetting App.Title, me.Name, texto.name, texto.text 
End Sub
con esto completaba ya casi todo y bueno solo faltaba ponerle ingenio y uni todo esto y el resultado es el ejemplo que les dejo aqui...

COMO OBSERVACION EL EJEMPLO SE LE TIENE QUE INGRESAR LOS TRES NUMERO QUE APARECEN EN LA PARTE INFERIOR LO CUALES DICEN REGISTRO Y ESTAN DIVIDIDOS POR EL SIGNO "#". YO LE COLOQUE LA REPUESTA EL EN MISMO PROGRAMA PERO USTEDES PUEDEN HACER UN GENERADOR DE CLAVES (KEYGENERATOR).. SI HAY MAS PREGUNTAS ESTAR REVISANDO..

EL LINK(es un .exe es un autoextraíble..)

EL PROYECTO AL FIN
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila

Última edición por GeoAvila; 05/07/2004 a las 09:17
  #2 (permalink)  
Antiguo 03/07/2004, 11:14
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
por cierto me gustaria recibir opiniones...
gracias..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila

Última edición por GeoAvila; 05/07/2004 a las 09:15
  #3 (permalink)  
Antiguo 06/07/2004, 14:50
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Sin Opiniones....... por lo menos una opinion para saber que mas o menos les guta...
o no les gusta o... algo...
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #4 (permalink)  
Antiguo 06/07/2004, 19:14
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 4 meses
Puntos: 16
a ver si entendi, la gente instala el programa, el programa busca un numero en el disco de dicha maquina y lo graba?

entonces cual es la forma de proteger el programa?, si lo instalo en otra maquina no hara lo mismo de buscar el nuevo numero en el nuevo disco?

ya me hice bolas :S
__________________
CreandoWebs.com
www.creandowebs.com
PLANTILLAS TEMPLATEMONSTER CON 10% DE DESCUENTO
  #5 (permalink)  
Antiguo 07/07/2004, 10:29
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
la seguridad radica en en cada maquina que si instala va a pedir un numero de serie distinto el cual solo vos podes proporcionar. vos a vas a dar la el numero de serie en de cada computadora, y como es distinto en cada computadora. unicamente vos podrías dar los numeros de serie que te solicita la computadora..
en base al numero que te da la etiqueta del disco duro...
cada maquina con su propio numero de serie.. el vos autorizas.. lo puden instalar... pero es una como demo.. hasta que le coloques el numero de serie ya es un programa de uso total..

no se si me explico..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #6 (permalink)  
Antiguo 10/07/2004, 10:11
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Otras opiniones porfavor..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #7 (permalink)  
Antiguo 12/07/2004, 01:32
 
Fecha de Ingreso: julio-2004
Mensajes: 5
Antigüedad: 19 años, 10 meses
Puntos: 0
onestamente no logra entender se supone que este codigo me devuelve el numero d serie de cada computador en que se instale y que hago yo con eso
Por otro lado el link del ejemplo que das no sirve la pagina no tiene inicio
  #8 (permalink)  
Antiguo 12/07/2004, 10:46
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Bueno mira al respecto del link a mi si me funcionoo.

lo Segundo el numero de serie.. un un claro ejemplo es el Download Accelerator.
explico..
el programa te da un numero de serie, bueno ese numero de serie te sirve a vos para generar un numero de serie para activar tu aplicarcion. de lo contrario la aplicacion se utiliza con limitantes y simplemente no se puede usar..

ejemplo..

La aplicacion debuelve el numero 1550

este numero me sirver a mi para calcular el numero de serie..

serie1=1550*2
serie2=1550*3
serie3=1550*4

entonces el numero de serie para activar tu aplicación va a ser en este caso la siguiente

3101-4650-6200

con este numero lo ingresars en tres campos con con un numero de serie1, serie2,serie3. con esto se activa la aplicacion.. puesto que el programa tiene una sentencia que compara los numero que le estas ingresando, con lo que debería recibir..

todo esto es en base al numero de etiqueta de disco duro..
intenta descargarlo de nuevo.. y de lo contrario me avisas.. espero haber explicado bien en eta ocacion o de lo contrario hago un manual de explicacion del funcionamiento de la aplicación, puesto que a mi me ha funcionado de maravilla, el programa es difil de robar y cada vez que se instala el programa en una computadora tienen que solicitarle al programador un numero de serie nuevo..

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #9 (permalink)  
Antiguo 16/07/2004, 19:04
Avatar de christianMen  
Fecha de Ingreso: abril-2004
Ubicación: Tijuana
Mensajes: 37
Antigüedad: 20 años
Puntos: 1
Oye, yo lo que no entiendo del codigo que pusiste arriba, la segunda parte para que te sirve, el numero de serie lo guardas o como ? no entiendo ?.

Y otra cosa, si tu le estas dando el numero de serie donde esta la seguridad, podrias explicarme, es que tengo un proyecto y quieren que le ponga seguridad poniendole numero de serie (evitando pirateria), pero no comprendo muy bien como hacerle...
__________________
°-° Christian °-°
  #10 (permalink)  
Antiguo 17/07/2004, 09:49
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
ok Creo que no me he explicado bien todavia...

el primer numero que te da la aplicacion te no es el codigo para activar la aplicacion, esto es unicamente te sirve a vos para devolver lo que el programa te esta solicitando..

el numero que da el programa es 350

entonces dentro de la aplicacion te esta solicitando una respuesta en base a este numero, por ejemplo la aplicacion ttiene 3 campos en los cuales espera recibir tres respuestas en base al numero anterior, no es que el 350 sea el numero de activacion, es el numero que te sirve a vos para generar el codigo que luego le daras al cliente para que active su aplicacion. entonces la aplicacion el el primer cuadro te pide el 350 este multiplicado por 5 en el segundo cuadro que sea por 4 y el tercero por 3,

esto en base a tu generador de claves, el cual te servirara para generar los numero que te pide la aplicacion..(Esta solo tu la tendras que tener o bien la empresa en la que trabajas.)

entonces tu debes multiplicar los numeros tal y como te los pide la aplicación.(Explico yo en la aplicacion colo que en la parte de hasta abajo"el exe que descargas",la resolucion, el numero de claro tu tendrías que dar, ese numero lo tienes que borrar al momento de hacer tu generadorde claves), y entonces el numero que da la aplicacion no es el numero para activar la aplicacion, es un numero que sirve crear otros numeros que activas la aplicacion..

no se si me explico.. o bien abrimos otro post para comenzar de Nuevo...
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #11 (permalink)  
Antiguo 26/09/2004, 20:11
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
No puedo Descargar el Ejemplo que das Amigo

EL PROYECTO AL FIN

Me Da un Error como

Esta carpeta NO tiene una página de inicio correcta, o no esta autorizado a consultar esta página o fichero.

Si quieres puedes hacer lo que explicas en un Proyecto de Visual Basic y lo descargamos y despues lo estudiamos como tu lo hicistes, creeo que es mucho mejor. .

Saludos

Última edición por 2Fast To You; 26/09/2004 a las 20:12
  #12 (permalink)  
Antiguo 26/09/2004, 20:44
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
mira tengo un par de problemas con ese hosting pero aqui esta el codigo

Código:
  
 Private Declare Function GetVolumeInformation& Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal pVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long)
  
  Private Sub Command1_Click()
  Unload Me
  End
  End Sub
  
  Private Sub Form_Load()
  Dim cad1 As String * 256
      Dim cad2 As String * 256
      Dim numSerie As Long
      Dim longitud As Long
      Dim flag As Long
      unidad = "C:\"
      Call GetVolumeInformation(unidad, cad1, 256, numSerie, longitud, flag, cad2, 256)
      Primera.Caption = numSerie
      Reg1.Text = GetSetting(App.Title, Me.Name, Reg1.Name, vbChecked)
      Reg2.Text = GetSetting(App.Title, Me.Name, Reg2.Name, vbChecked)
      Reg3.Text = GetSetting(App.Title, Me.Name, Reg3.Name, vbChecked)
      registro.Caption = (numSerie * 3) & "#" & (numSerie * 4) & "#" & (numSerie * 5)
      If (Val(Reg1.Text) = (numSerie * 3)) And (Val(Reg2.Text) = (numSerie * 4)) And (Val(Reg3.Text) = (numSerie * 5)) Then
      MsgBox "PROGRAMA Registrado"
      Else
      MsgBox "programa  NO Registrado"
      End If
  End Sub
  Private Sub Form_Unload(Cancel As Integer)
  SaveSetting App.Title, Me.Name, Me.Reg1.Name, Me.Reg1.Text
  SaveSetting App.Title, Me.Name, Me.Reg2.Name, Me.Reg2.Text
  SaveSetting App.Title, Me.Name, Me.Reg3.Name, Me.Reg3.Text
  End Sub
se necesitan 3 textos reg1,reg2,reg3, un boton, labels registro, primera, y asi es como funciona..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila

Última edición por GeoAvila; 26/09/2004 a las 20:45
  #13 (permalink)  
Antiguo 26/09/2004, 20:55
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
A que te refieres con Primera ?
  #14 (permalink)  
Antiguo 26/09/2004, 20:56
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
Me da un Error OverFlow:

Código HTML:
registro.Caption = (numSerie * 3) & "#" & (numSerie * 4) & "#" & (numSerie * 5)
  #15 (permalink)  
Antiguo 26/09/2004, 21:38
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
tenes razon lo que pasa es que es un numero de serie de disco duro muy grande estonces probamos con otra operacion aritmetica para que se nos facilite la vida con la suma
de esta manera...

Código:
Private Declare Function GetVolumeInformation& Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal pVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long)
Private Sub Form_Load()
Dim cad1 As String * 256
    Dim cad2 As String * 256
    Dim numSerie As Long
    Dim longitud As Long
    Dim flag As Long
    unidad = "C:\"
    Call GetVolumeInformation(unidad, cad1, 256, numSerie, longitud, flag, cad2, 256)
    numSerie = -1063588139
    Reg1.Text = GetSetting(App.Title, Me.Name, Reg1.Name, vbChecked)
    Reg2.Text = GetSetting(App.Title, Me.Name, Reg2.Name, vbChecked)
    Reg3.Text = GetSetting(App.Title, Me.Name, Reg3.Name, vbChecked)
    registro.Caption = (numSerie + 1500) & "#" & (numSerie + 1600) & "#" & (numSerie + 1900)
    If (Val(Reg1.Text) = (numSerie + 1500)) And (Val(Reg2.Text) = (numSerie + 1600)) And (Val(Reg3.Text) = (numSerie + 1900)) Then
    MsgBox "PROGRAMA Registrado"
    Else
    MsgBox "programa  NO Registrado"
    End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
SaveSetting App.Title, Me.Name, Me.Reg1.Name, Me.Reg1.Text
SaveSetting App.Title, Me.Name, Me.Reg2.Name, Me.Reg2.Text
SaveSetting App.Title, Me.Name, Me.Reg3.Name, Me.Reg3.Text
End Sub
nos vemos...
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #16 (permalink)  
Antiguo 29/09/2004, 08:22
 
Fecha de Ingreso: septiembre-2004
Mensajes: 4
Antigüedad: 19 años, 7 meses
Puntos: 0
GeoAVILA es nmuy interesante lo de la seguridad para software, estoy tratando de encontrar la manera de poder poner ser¡guridad desde visual basic para poder abrir pdf´s que esten con clave o bien un archivo . zip, he encontrado una manera de poner seguridad al CD que es el TZCopyProtection pero estoy teniendo ciertas dificltades para esto.

voy a intentar poner la seguridad como lo describes en los mensajes anteriores pero te agradeceria muchisimo si pudieras ayudarme con mi problema es algo urgente que me piden para una empresa y necesito entregar el trabajo la proxima semana.

Gracias de antemano
  #17 (permalink)  
Antiguo 29/09/2004, 12:06
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
Información

Hola Amigos

Estoy Realizando un Programita para Generar el Serial pues el cliente me enviaría a mí el Código y yo despues le envíaria ya el Serial.

El Diseño que estoy haciendo es el Siguiente.



Y el Código que le tengo puesto es el Siguiente:

Código HTML:
Private Declare Function GetVolumeInformation& Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal pVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long)

Private Sub cmdGenerar_Click()
Dim cad1 As String * 256
    Dim cad2 As String * 256
    Dim numSerie As Long
    Dim longitud As Long
    Dim flag As Long
    unidad = "C:\"
    Call GetVolumeInformation(unidad, cad1, 256, numSerie, longitud, flag, cad2, 256)
    Primera.Text = numSerie
    registro1.Text = (numSerie + 1500) & ""
    registro2.Text = (numSerie + 1600) & ""
    registro3.Text = (numSerie + 1900) & ""
End Sub

Private Sub cmdSalir_Click()
    If MsgBox("¿Está usted seguro que desea Salir de SerialZax?", _
vbQuestion + vbYesNo, "Pregunta") = vbYes Then
          End
    End If
End Sub
Pero el Problema esta en que Cuando le doy a Generar es decir al Boton de Generar el pone el ID del Disco mio no del Codigo que yo necesito que genere la Clave.

Espero que me Ayuden.

Saludos

Última edición por 2Fast To You; 29/09/2004 a las 14:05
  #18 (permalink)  
Antiguo 29/09/2004, 15:32
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
hola mira la variable num seria es la que agarra el numero de tu disco duro

entonces le tenes que poner el valor del texto donde introducis el codigo que envia el cliente...

por el ejemplo

numserie = elserial.text

de esta manera genera el del usuario.....

etonces quedaria algo asi...
Código:
  numserie = elserial.text
     registro1.Text = (numSerie + 1500) & ""
     registro2.Text = (numSerie + 1600) & ""
     registro3.Text = (numSerie + 1900) & ""
elserial.text el texto donde se ingresa la clave que envia el cliente
nos vemos
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #19 (permalink)  
Antiguo 29/09/2004, 15:39
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
Gracias Amigo

Te devo muchas jaja

Una preguntica, Sobre los Mensajes que salen en la Pantalla me explico.

Ejemplo:
Puse un Número no aceptado en el Campo donde pongo el Codigo que me envia el cliente. Entonses como hago para que me salga un Mensaje diciendome Codigo Erroneo o algo asi a la hora de Click en Generar.

Saludos
  #20 (permalink)  
Antiguo 29/09/2004, 15:43
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Mensajes: 124
Antigüedad: 21 años, 5 meses
Puntos: 0
¿No sería más profesional trabajar con las facilidades de "Windows registry"? ... eso es lo que usan todos los programas comerciales. Además, ya casi todo está hecho.

Adicionalmente, yo uso el encriptado al guardar los "registry key", lo cual da mayor seguridad.

Pero si no saben cómo trabajar con "Windows registry" ... mmmhhh.

Estas son las API:

Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" _
(ByVal lngRootKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" _
(ByVal hKey As Long, ByVal lpSubKey As String, phkResult _
As Long) As Long

Declare Function RegSetValueEx Lib "advapi32.dll" Alias _
"RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _
ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal _
chData As Long) As Long

Declare Function RegCloseKey Lib "advapi32.dll" _
(ByVal hKey As Long) As Long

Declare Function RegDeleteKey Lib "advapi32.dll" Alias _
"RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long

Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" _
(ByVal lngRootKey As Long, ByVal lpValueName As String) As Long

Declare Function RegQueryValueEx Lib "advapi32.dll" Alias _
"RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value.

Declare Function RegQueryValue Lib "advapi32.dll" Alias _
"RegQueryValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpValue As String, lpcbValue As Long) As Long

Declare Function GetVersionEx Lib "kernel32.dll" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long


Lo demás es cosa de niños.

Última edición por Pipumpam; 29/09/2004 a las 15:48
  #21 (permalink)  
Antiguo 29/09/2004, 16:19
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
Una Pregunta, y como se trabaja con eso. Yo estoy en Pañales en la programacion.

Por favor puedes explicarme.

Gracias
  #22 (permalink)  
Antiguo 29/09/2004, 17:17
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Mensajes: 124
Antigüedad: 21 años, 5 meses
Puntos: 0
Entra aquí: www.freevbcode.com y luego escribes "Windows registry" y pulsas en "SEARCH".

Allí encontrarás varios ejemplos sobre cómo leer y escribir en el "Windows registry" ¡Debes tener mucho cuidado! ¿OK?

Te recomiendo de esa lista, el ejemplo "Read and Modify the Registry" (RegDemo.zip). Tiene casi todos los casos que quizás puedas necesitar. Luego los adaptas a tus requerimientos.

Respecto a lo de encriptar, puedes usar cualquier método. Uno de los más usados es el MD5.

Antes de escribir la clave ("registry key"), primero la encriptas. Luego, para usarla en modo original, la lees encriptada, luego la desencritas y la tienes.

Una vez que hayas probado, puedes verificar el resultado con el comando "Regedit", que se ejecuta en Botón de inicio=>Ejecutar=>[regedit]=>Aceptar.

Saludos.

Última edición por Pipumpam; 29/09/2004 a las 17:22
  #23 (permalink)  
Antiguo 30/09/2004, 04:34
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
Hola Amigo.

Me puedes dar un Ejemplo de un From ya hecho porque no tengo idea de como hacerlo para este Modulo.

Si quieres mandamelo por Email o algo asi.

[email protected]
  #24 (permalink)  
Antiguo 30/09/2004, 11:19
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
Hola JCL

Gracias por tu Ayuda, estaré esperando el Codigo con ansias, Te digo de ante manos que yo no me dedico a vender Programas sino que mi interes es saber mas Cada Día. Realmente no he pensado en la Opcion de venta.

Bueno te dejo. .

Saludos
  #25 (permalink)  
Antiguo 02/10/2004, 13:58
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
Hola Amigos

Bueno, tengo un problema ahora. Me ha surgido un Problema cuando abrí el Archivo de Registro que hemos tratado anteriormente. Cuando entra a Visual Basic y le doy a Run me da un Error Inesperado:

Compile error
Can´t find project or library

Y cuando le doy a Aceptar me marca en Amarillo:

Private Sub Form_Load()

El Código Corespondiente a este es el siguiente:

Private Sub Form_Load()
Dim cad1 As String * 256
Dim cad2 As String * 256
Dim numSerie As Long
Dim longitud As Long
Dim flag As Long
unidad = "C:\"
Call GetVolumeInformation(unidad, cad1, 256, numSerie, longitud, flag, cad2, 256)
Primera.Caption = numSerie
Reg1.Text = GetSetting(App.Title, Me.Name, Reg1.Name, vbChecked)
Reg2.Text = GetSetting(App.Title, Me.Name, Reg2.Name, vbChecked)
Reg3.Text = GetSetting(App.Title, Me.Name, Reg3.Name, vbChecked)
If (Val(Reg1.Text) = (numSerie + 896576537)) And (Val(Reg2.Text) = (numSerie + 167235485)) And (Val(Reg3.Text) = (numSerie + 349824653)) Then
Unload Me
frmMain.Show
Else
MsgBox "Aplicación no Registrada en su Computador"
End If
End Sub


Peo despues me marca como Sombriado lo siguiente

unidad

Y Realmente no se porque sale ya que hace 1 Hora Funcionaba lo unico que cambio fue que le quité el Windows y se lo puse a Español el XP

Espero que me Ayude.

Saludos

Última edición por 2Fast To You; 02/10/2004 a las 13:59
  #26 (permalink)  
Antiguo 02/10/2004, 15:18
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
Ya lo recoví

Saludos
  #27 (permalink)  
Antiguo 10/10/2004, 09:30
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
Hola Amigos

Bueno como siempre el Ser humano siempre esta inventando algo. JAJA

Bueno les dejo el mismo Código pero con algunas modificaciones.

Private Declare Function GetVolumeInformation& Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal pVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long)

Private Sub Form_Load()
Dim cad1 As String * 256
Dim cad2 As String * 256
Dim numSerie As Long
Dim longitud As Long
Dim flag As Long
unidad = "C:\"
Call GetVolumeInformation(unidad, cad1, 256, numSerie, longitud, flag, cad2, 256)
Primera.Caption = numSerie

Reg1.Text = GetSetting("FacturaZax", "Registro Aplicación", "Serial1", Reg1.Text)
Reg2.Text = GetSetting("FacturaZax", "Registro Aplicación", "Serial2", Reg2.Text)
Reg3.Text = GetSetting("FacturaZax", "Registro Aplicación", "Serial3", Reg3.Text)

If (Val(Reg1.Text) = (numSerie + 896576537)) And (Val(Reg2.Text) = (numSerie + 167235485)) And (Val(Reg3.Text) = (numSerie + 349824653)) Then
Unload Me
frmMain.Show
Exit Sub
Else
MsgBox "Aplicación no Registrada en su Computador"
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)

SaveSetting "FacturaZax", "Registro Aplicación", "Serial1", Reg1.Text
SaveSetting "FacturaZax", "Registro Aplicación", "Serial2", Reg2.Text
SaveSetting "FacturaZax", "Registro Aplicación", "Serial3", Reg3.Text

End Sub


Nota: En donde dice FacturaZax pongan el nombre del programa que van a incluir este Código.

Y la ruta en la que se va a Guardar es la Siguiente:

HKEY_CURRENT_USER\Software\VB and VBA Program Settings\ Nombre del Programa

Una pregunta. Como puedo hacer para que el Serial séa Codificado.

Ejemplo:
692BC60F-F014-4A69-8C1C-DA5E79B4134A y que el Codigo sería: 123456789

Es decir hace una forma de proteger el Serial.

Saludos
  #28 (permalink)  
Antiguo 17/01/2005, 15:32
 
Fecha de Ingreso: enero-2005
Mensajes: 1
Antigüedad: 19 años, 3 meses
Puntos: 0
interesante

me parece muy interesante lo que haz hecho y me interesa mucho pero se podrá poner a un disco de archivos para que no hagan copias del disco, es que yo hago tutoriales en video y los grabo en un disco y los vendo y no quiero que se hagan copias y hagan plagio de mis discos, se podrá y si se puede como le puedo hacer ya que no tengo noción de programacion.gracias
  #29 (permalink)  
Antiguo 17/01/2005, 21:27
 
Fecha de Ingreso: septiembre-2001
Mensajes: 552
Antigüedad: 22 años, 7 meses
Puntos: 0
Un vistazo a http://www.woodmann.com/crackz/Vb.htm o un paseo por google: visual basic disassembly decompiling los puede decepcionar de sus técnicas de protección o les puede dar mejores ideas para proteger sus derechos intelectuales.

Saludos,
  #30 (permalink)  
Antiguo 18/01/2005, 01:38
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Absolutamente de acuerdo con vos raac, tanto con SoftICE, WinDbg, OllyDbg o cualquier otro depurador bastaran un par de saltos en lugares especificos para burlar practicamente cualquier protección.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:48.