Je supporte un logiciel par un fournisseur japonais. Ils protègent leur logiciel en utilisant des codes de licence limités dans le temps. Le code fonctionne uniquement pour un ordinateur particulier utilisant un ID de matériel qui semble être créé en utilisant quelques ID différents de composants PC.Le code de Someones semble retourner un ProcessorID variable
Cependant sur quelques machines sur environ 150 parfois la licence cesse de fonctionner parce que l'id de matériel a changé.
Maintenant, leur outil logiciel génère un txt des composants matériels, donc je peux voir l'avant et après et voir ce qui a changé.
Choisir uniquement les lignes qui ont changé je peux voir dans l'un des fichiers que j'ai ...
CurrentClockSpeed : 784
ProcessorId : 178BFBFF00100F63
Et dans l'autre ..
CurrentClockSpeed : 2800
ProcessorId : 078BFBFF00100F63
Si je convertir ces ID de processeur en binaire , alors j'ai ...
1011110001011111110111111111100000000000100000000111101100011
et ..
0011110001011111110111111111100000000000100000000111101100011
Maintenant, je n'ai pas accès à leur code, et on me dit qu'ils pensent que le problème est avec le matériel. Quelqu'un l'overclocke, ou un noyau de CPU est en défaut, ce qui entraîne le code à choisir un autre noyau.
(Je peux m'imaginer qu'un autre noyau peut avoir un ID différent et adjacent, mais je m'attends à ce que le LSB soit le seul à changer, pas le MSB.)
Je ne suis pas convaincu par leur explication. Surtout que l'identifiant ne change que de 1 bit.
Est-ce que cela semble être un appel Get CPUID? Si oui, est-ce que les différents cœurs ont un ID différent? Même s'ils le faisaient, cela expliquerait-il le changement de CurrentClockSpeed?
Le get CPUID semble suggérer qu'il donne des informations en ce qui concerne le noyau sur lequel le thread est actuellement en cours d'exécution. Sur un système à 2 cœurs, cela pourrait-il être aléatoire entre 1 des 2 valeurs?
Id être très heureux de tous les conseils/opinions sur ce