2017-06-13 5 views
1

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

Répondre

1

Si c'est ce que vous craignez, il est assez trivial de définir l'affinité du processus à un seul noyau. Cela dit, on s'attendrait à ce que bon nombre de leurs clients se plaignent si vous aviez raison: les systèmes multicœurs sont la norme depuis de nombreuses années; et je serais très surpris si votre système n'a que 2 cœurs. De plus, vous verriez cela sur toutes vos machines. En fin de compte, le groupe auquel vous devez parler est le fournisseur et non le débordement de la pile.