RE:Para evitar copia de la aplicacion
Transcribo lo que en un momento me pasara el Ing. Sazl Pirez Quezada,
PERO NO LO HE PROBADO, y dice:
Hola,
Por cuestiones de seguridad para evitar la pirateria en nuestras
aplicaciones, y buen metodo es el identificar el numero de serie del disco
de donde se instala la aplicacion por primera vez, y crear algun tipo de
algoritmo para la instalacion, y guardarlo en algun TPS encriptado.
El problema que generalmente se presenta es que existen varios controles ocx
o librerias o api que te devuelven el numero de serie del volumin, pero este
numero de serie es modificable por software.
Les pongo a su disposicion a toda la comunidad (en motivo a las atenciones
prestadas en problemas que yo he tenido), una libreria que te devuelve el
numero de serie fisico del disco duro, es decir, el numero de serie del
fabricante, el cual siempre es el mismo, sin importar el sistema operativo o
volumen del mismo.
Saludos, y gracias, espero les sirva.
Instrucciones:
Este codigo lo puedes poner en el app de la aplicacion servidor, y guardar
el serial del disco duro en algun TPS encriptado, de manera que cuando tu
instales la aplicacion apliques algun algoritmo al serial del disco duro, y
grabes este algoritmo en algun tps, de manera que cuando arranque la
aplicacion verifique que se esta arrancando en el disco duro autorizado (o
autorizados).
De esta manera si el cliente la copia o la pasa a alguien mas entonces no
podra funcionar, ya que no la podra instalar, aunque copie los tps o el app
completo, por que el serial guardado correspondera a otro disco y por lo
tanto a otro algoritmo.
Primero tienes que declarar esta variables en Global Properties, en Global
Data embed:
DireccionProcedimiento LONG,AUTO,NAME('ObtenerSerieDD')
y en InsideGlobalMap
MODULE('SerieDiscoDuro')
ObtenerSerieDD(LONG),C,RAW,PROC,DLL(1),NAME('ObtenerSerieDD')
FreeLibrary(LONG),BOOL,RAW,PASCAL,NAME('FreeLibrary')
GetProcAddr(LONG,LONG),LONG,RAW,PASCAL,NAME('GetProcAddress')
LoadLibrary(*CSTRING),LONG,RAW,PASCAL,NAME('LoadLibraryA')
END
Luego generas un nuevo un procedimiento Source que tenga en Local data lo
siguiente:
(Yo lo llamo ObtenerSerieDiscoDuro)
Serie PSTRING(256),AUTO
DLLNombre CSTRING('HddSerial.dll')
DLLProcedimientoNombre CSTRING('GetHDDSerial')
Apuntador LONG,AUTO
Y en Processed Code:
Apuntador=LoadLibrary(DllNombre)
DireccionProcedimiento=GetProcAddr(Apuntador,ADDRESS(DLLProcedimientoNombre))
ObtenerSerieDD(ADDRESS(Serie))
FreeLibrary(Apuntador)
RETURN(Serie)
Y despues en donde quieras que se obtenga el disco duro, asocias este source
en los procedimientos y lo mandas llamarde la siguiente manera:
NumeroSerie=ObtenerSerieDiscoDuro()
No he generado el template, ya que lo hagas template, me lo mandas, jeje...
Nota: Debes tener el archivo DLL, en el mismo directorio donde funcione la
aplicacion....
Saludos
Ing. Sazl Pirez Quezada
Jefe de Sistemas
Hemoeco S.A. de C.V.
Guadalajara, Jalisco.
Tel. (33) 3641 09 40 Ext. 110