Suponiendo que tenemos un software que verifica en línea un servidor remoto si la entrada ingresada por un usuario (una clave de licencia) es válida.
El servidor envía un socket al cliente True
o False
si la licencia es correcta o no.
En el binario, se realiza un salto ( jz
...) dependiendo del resultado.
Creo que esta implementación es común al software (corríjame si me equivoco en ese punto).
El problema es que nada puede evitar que un usuario malintencionado parche el binario para cambiar el "salto" anterior y omita la validación de verificación de la clave de licencia.
Entonces, ¿cómo evita el desarrollador de software esa situación?