Saturday, September 05, 2015

Un truco para proteger el software


El 8 de agosto del 2013 publiqué un artículo sobre un programa que hace reconocimiento de caracteres visualmente (OCR), el cual usa una biblioteca de funciones de un tercero, que yo no escribí, sólo usé.

La biblioteca es gratuita pero estaba limitada en tiempo de uso, cosa que no sabía. El asunto es que de pronto mi programa dejó de funcionar. De alguna manera, pensé, la biblioteca tiene por ahí alguna función que sabe en qué momento se instaló el software y entonces calcula si está todavía en período de pruebas o no. Normalmente muchos programas en modo de prueba, que duran muchas veces no más de 30 días, permiten que el interesado pueda revisar, probar y usar el software sin ninguna limitación en ese tiempo. Después del mismo el software ya no se puede ejecutar.

Los esquemas para hacer software de prueba pueden funcionar de la siguiente manera: escribir en el disco duro del usuario, en alguna parte, un archivo escondido con la fecha de terminación del período de prueba. El software, antes de correr, va a buscar ese archivo y lo lee. Si la fecha del sistema ya es mayor a los 30 días, el software termina. Si por alguna eventualidad dicho archivo no existe, también el sistema termina la ejecución.

Hay otros esquemas más sofisticados que escriben en el REGISTRY, un archivo fundamental en la PC que si desaparece, mete en problemas al usuario de la máquina porque probablemente no pueda ver siquiera los programas que tiene en la máquina. Es un archivo muy sensible y ahí muchos fabricantes de software ponen sus claves de registro para conocer si se trata de software de prueba o no. No me voy a meter más con este archivo y recomiendo que si no saben cómo funciona, ni metan las manos ahí. Si lo hacen y cometen un error, es casi garantía que su computadora quedará inutilizada.

Pues bien, regresando al problema, me sorprendía que el ejecutable de mi programa de reconocimiento de caracteres supiera que ya no puede ejecutarse. Pensando un poco sobre esto, hallé que la única manera que podría saber eso era con al fecha de creación del programa escrito. Entonces decidí hacer una prueba: cambiar la fecha del ejecutable por la del día de hoy y probar. ¡Y sorpresa! Funcionó.

Para cambiar la fecha de creación de un programa se usa una utilería llamada touch, la cual cambia automáticamente la fecha del software. La sintaxis es:

touch nombre_del_archivo

Este programa no es de Windows, sino que se corre en modo consola. Como mucha gente no sabe cómo pasar a modo consola, escribí en un archivo batch dos instrucciones que hacen la tarea:

touch ocr01.exe
ocr01

Al darle doble click a este programa .bat, el sistema cambia la fecha al día de hoy y corre el software sin problemas. Así pues, asunto solucionado después del uso de un par de neuronas para entender el esquema de protección usado por el autor de la biblioteca de software.

Si alguien cree que hago mal, le sugiero entonces me compre la biblioteca comercial de dicho paquete de OCR y asunto moral solucionado.

Si le interesa este programa, escríbame a morsa@la-morsa.com y se lo mandaré a su correo.

No comments: