PDA

Ver la Versión Completa : Ayudaaaaa Proteger Mi Programa


pockelsm3
20-07-2008, 23:25:34
Buenas a todos

por lo que voy a pedir ayuda, ya son temas tratado pero la ayuda la pido en vista de las soluciones dadas las he usado pero presento un problema con el WINDOWS y las funciones encontradas en el foro, (las funciones que usaso son para obtener ID unico del Hardware de una PC)

Me Explico:

1ro. Encontre una funcion aqui en el foro que me da el Numero de Seria del Disco Duro, esta me funciona a la perfeccion pero el problema radica en que cuando clono ese disco duro, es decir, que al nuevo disco donde estoy haciendo la copia le cambia el numero de Serie y le pone la misma que tiene el viejo, de donde estoy haciendo la copia. Protegiendo mi aplicacion de esta manera no me sirve, porque a la hora de hacer la clonacion en el nuevo disco clonado el programa funciona como si nada.

2do. Tambien he encontrado otras funciones que sirver para obtener el ID del Bios, La Tarjeta de Red, etc. pero estas funciones al parecer lee esos registro que el WINDOWS crea y almacena, ya que al momento de Clonar el Disco Duro me sucede lo mismo que el punto anterior.

Cuando realizo la clonacion de disco, la nueva copia la pongo en otra PC donde se entiende que los IDs de cada Hardware son diferente y en ese caso mi aplicacion no debe de duncionar para nada, lo cual no es Asi.

La ayuda que pido es que por favor si alguien conoce de alguna funcion que lea el ID de un Hardware especifico, pero que lea el dispositivo directamente y no lo busque en los registros de WINDOWS.

Les agradeceria mucho su ayuda.

Gracias por adelantado.

SyncReuter
21-07-2008, 06:21:21
Haber, yo le doy proteccion a mis programas de la siguiente forma, especificamente para evitar la copia del mismo, ahora bien, como funciona.

Utilizo 3 infos

1 El nombre del programa.
2 Una clave secreta interna
3 Una cadena que contiene la marca y modelo del disco duro.

(3) Lo logro utilizando con la clase THDDInfo, el cual es un componente no visual que se entrega esa informacion y mucho mas, el unico problema que tiene es que solo funciona sobre WinNT, yo en lo personal lo he probado en varios discos y NO FALLA.

Ahora bien como logro la serial unica? Uno las 3 informaciones en una misma cadena y genero un hash el cual seria el numero de serie de la copia del programa. En cada equipo el hash va a variar

Ahora bien, cuando ejecuten tu programa, internamente debes verificar que el hash coincida. Cuando el usuario necesita ejecutar el programa en otro pc, en el mismo programa va una utilidad que permite mover el programa al otro equipo.

Asi logre proteger mis programas.

Neftali [Germán.Estévez]
21-07-2008, 09:45:48
En la sección de componentes de mi página encontrarás uno llamado TDiskInfo (http://neftali.clubdelphi.com/componentes/TDiskInfo.html). Pruébalo a ver si te es útil. Con él puedes obtener el SERIAL del disco duro (no el VOLUMEN que es lo que tú estás obteniendo).

Un saludo.

jcarteagaf
21-07-2008, 15:37:47
En mi trabajo usamos un metodo similar. Obtenemos el numero de serie del disco duro, el nombre del usuario de windows y el nombre de la compañia (la que digitas al instalar windows) con esos 3 valores generamos una cadena de la forma:

XXXXX-XXXXXXXXXXXXX-XXXXX

al ingresar el programa generamos esa cadena mediante un algoritmo con los valores obtenidos, a continuación verificamos el registro del windows (que es donde grabamos los datos de la autenticación de nuestro programa) si no existe le mostramos una pantalla donde mostramos los datos obtenidos, la cadena generada y solicitamos una cadena de autorización de uso. Ahi es donde el cliente nos llama, nos dicta los datos y nosotros generamos la cadena de autorización. Este metodo nos funciona en diferentes maquinas e incluso con diferentes usuarios en la misma maquina, y asi llevamos un control sobre el uso de nuestros sistemas.

Saludos.

pockelsm3
22-07-2008, 13:56:21
En la sección de componentes de mi página encontrarás uno llamado TDiskInfo (http://neftali.clubdelphi.com/componentes/TDiskInfo.html). Pruébalo a ver si te es útil. Con él puedes obtener el SERIAL del disco duro (no el VOLUMEN que es lo que tú estás obteniendo).

he descargado este componente que me sugeriste, pero tengo un pequeño problema, es que estoy utilizando Delphi 2007 y cuando isntalo el componete al cerrar delphi y al volver abrirlo el componento no aparece instalado, es como si despues de haberlo isntalado delphi no lo guarda en la libreria.

por otra parte cuando lo instalo que lo pruebo antes de cerrar el delphi, me da un error con la dll, pero lo mas extraño que el demo que tienes funciona perfectamente, no entiendo a que se debe.

Gracias anticipada

Neftali [Germán.Estévez]
22-07-2008, 15:28:40
Pues no se.
He vuelto a compilar el componente y la demo (en su día lo había hecho con 2006) ahora con Delphi 2007 y me funciona bien.

El error que comentas con la DLL, ¿Puedes ponerlo aquí?
Lo único que esta DLL debe estar en el mismo directorio del ejecutable, pero aparte de eso no requiere nada más especial.

pockelsm3
22-07-2008, 15:43:38
Pues no se.
He vuelto a compilar el componente y la demo (en su día lo había hecho con 2006) ahora con Delphi 2007 y me funciona bien.

El error que comentas con la DLL, ¿Puedes ponerlo aquí?
Lo único que esta DLL debe estar en el mismo directorio del ejecutable, pero aparte de eso no requiere nada más especial.


Este es el error que me da al abrir la aplicacion

EAccessViolation With Message 'Access violation at address 00404944 in module 'HDDSN.exe'. Read of address 010c0b34

Neftali [Germán.Estévez]
22-07-2008, 16:08:05
¿La has ejecutado paso a paso?

pockelsm3
22-07-2008, 19:35:17
ese error me justo cuando se esta creando el formulario

pockelsm3
22-07-2008, 19:47:13
que tambien el error me sucede cuando pongo la dll en la aplicacion, y si no tengo la dll el programa cuando me da este error <Error in IDESN.DLL>

pockelsm3
22-07-2008, 20:27:34
haciendo esto es que me da el error

procedure TForm1.Button1Click(Sender: TObject);
begin
DiskInfo1.DriveLetter := 'C';
label1.Caption := DiskInfo1.SerialNumber;
end;

Badillo
20-10-2021, 01:55:56
Saludos, necesito ayuda con ideas o algoritmo que me permita tener controlar la fecha desde que se ejecuta mi app la primera vez.
1. Si el usuario cambia la fecha del SO. ¿Como puedo controlar esto.

Gracias y espero su ayuda