Ce que vous essayez de faire, c'est de créer une fonction qui associe les numéros de série aux clés d'activation. Sans en savoir plus sur la nature de la fonction, cela peut aller de très facile (un polynôme avec seulement quelques termes) à très difficile (une fonction à plusieurs niveaux impliquant de nombreux blocs XOR, des tables de substitution, des programmes de clés compliqués, ...).
Si vous avez accès à la routine du vérificateur de clé (par exemple par désassemblage - qui est presque toujours contre les CLUF des logiciels commerciaux), vous disposez alors d'une routine qui vous indique si une clé d'activation donnée est correcte ou non pour un numéro de série donné. Si cela a été fait en calculant une clé d'activation pour un numéro de série, alors vous avez pratiquement terminé. Si cela a été fait en calculant la fonction inverse sur la clé, votre tâche est un peu plus difficile : vous devez inverser cette fonction pour récupérer l'algorithme de dérivation de la clé, ce qui n'est peut-être pas si facile. Si vous devez résoudre des problèmes mathématiques difficiles (par exemple, le problème du logarithme discret) parce que le système dépend de la cryptographie à clé publique, vous espérez que les valeurs auxquelles vous avez affaire sont suffisamment petites pour que vous puissiez procéder par force brute ou utiliser un algorithme connu (par exemple, l'algorithme rho de Pollard) dans un temps de calcul réalisable.
Dans tous les cas, vous devrez vous familiariser avec le désassemblage et le débogage, et espérer qu'il n'existe pas de mesures anti-débogage.
Dans le cas contraire, le problème est beaucoup plus difficile : il faut faire des suppositions éclairées et les essayer (par exemple en essayant de faire un ajustement polynomial), en espérant que tout ira bien. En raison de la très grande variété de fonctions différentes qui peuvent s'adapter à n'importe quel ensemble d'entrées et de sorties (mathématiquement indénombrables, mais en pratique limitées par la taille du code source), il est impossible d'essayer d'effectuer une attaque en connaissance de cause sur le système l'algorithme lui-même est généralement irréalisable.