How do programs know when your trial expires?
The trick has two parts, one to check date and time, the other which is a persistent data that tells when it started the trial.
Date checker
- System date time
- NTP server time “ask the internet”
- passive count of hours spent, registered as persistent data
Persistent data (cookie)
- Encrypted file
- Encrypted database
- Cloud storage
A combination of more strategies can be used.
For example cloud+local authentication, so that when internet is off, local is used, but when connected again it will sync.
Deleting the data may be easy or not. A encriptação pode ser forte o suficiente para não ser quebrada pela cpu, ou pelo menos fazer o esforço não valer a pena.
Para tornar o cookie mais difícil de apagar, é possível escrevê-lo em diretórios ocultos, dentro de arquivos de usuários, fazendo cópias redundantes sobre muitas partes do sistema de arquivos, anexá-lo em um arquivo de usuário, ou usar funções DRM do sistema operacional.
A lista pode continuar. Basicamente qualquer tipo de exploit poderia ser usado, alguns podem ser maléficos e perturbar outros programas.
Dependente da maturidade do software, preço do software e base de usuários, a empresa vendedora pode implementar defesas triviais ou uma fortaleza cibernética para defender o produto de software.
Dito isto, não me surpreende porque software de segurança cibernética voltado para hackers tende a ser de código aberto, e a monetização depende de honra, doações, pedidos de recursos, patrocínio.
Para um hacker disposto a saber um pouco de gdb, derrotar até mesmo a criptografia mais difícil é uma questão de tempo, pois a rotina de verificação de tempo está no início do programa, e uma vez definido o booleano "validado" para verdadeiro, o software é então livre.
Existem muitos outros tipos de counter e counter exploits, então algumas empresas simplesmente abandonam essa caça ao gato e ao rato, e optam por empregar mais tempo para realmente fazer o software.