Comment déplacer un logiciel avec clé utilisateur vers un autre ordinateur?


0

J'ai un logiciel dans l'ordinateur A.

Lors de sa première installation, je dois saisir une clé utilisateur et l’utiliser. Après la première saisie de la clé utilisateur, je n'ai plus besoin de saisir de clé pour l'utiliser. (C'est comme une clé de licence logicielle.)

Maintenant, j'aimerais utiliser ce logiciel dans un autre ordinateur B. Je dois installer le fichier .exe. Cependant j'ai oublié la clé utilisateur.

Comme il s’agit d’un logiciel hors ligne, je suppose que la clé utilisateur est enregistrée dans l’ordinateur A:

  • peut être crypté,
  • peut être dans le registre,
  • il peut y avoir un BIT marqué que la clé utilisateur a été entrée correctement.

J'ai un accès complet à l'ordinateur A et à l'ordinateur B.

L'ordinateur A est un Windows XP. L'ordinateur B est de préférence une fenêtre 7, mais pourrait être un autre système d'exploitation si nécessaire.

Comment déplacer ce logiciel avec UserKey de l'ordinateur A à l'ordinateur B?


Vous ne pouvez pas demander la clé d'utilisateur à la société?
Dave

Je vais essayer. Mais je ne peux pas les approcher pour le moment. Merci pour le commentaire.
minuit le

Enregistrer la clé est essentiel. sans que vous ayez des problèmes, vous perdez la clé de la porte de votre maison. Vous devez contacter le fournisseur. Notez également que, par exemple, Adobe garde une trace de l’emplacement où vous avez installé le logiciel - vous devez "désinstaller" avec leurs méthodes pour pouvoir le réinstaller sur un autre ordinateur. Le même style de désinstallation est utilisé par plus de sociétés de logiciels.
Hannu

Ce logiciel provient d'une petite entreprise non majeure. Je suis sûr que c'est un logiciel hors ligne. Merci pour le commentaire et le rappel.
midnite

Réponses:


0

Nous ne pouvons pas vous aider sans savoir de quel logiciel il s’agit. Mais il est tout à fait possible que la clé ne soit stockée sur l'ordinateur sous aucune forme utilisable. Par exemple, le programme d'installation peut mélanger de manière irréversible, cryptographiquement, la clé avec le numéro de série du disque dur de l'ordinateur et le stocker. Comme vous ne possédez pas la clé d'origine, vous ne pouvez pas la combiner avec le numéro de série du disque dur du nouvel ordinateur.


Merci de répondre. Yup vous avez le point. Mais je crois en quelque sorte que UserKey n'est pas si sécurisé. Y a-t-il certaines parties du registre que vous pouvez me recommander d'examiner?
minuit

0

Merci à tous les gars qui ont essayé d'aider. Je viens de le faire (ou mieux dire piraté :-)

En bref, il y a vraiment une clé dans le registre. Je ne pouvais pas le localiser car ce n'était pas sous le chemin du nom du logiciel. Après avoir copié cette clé (et avec quelques connaissances en programmation), cela fonctionne comme par magie.

Voici mes pas.

J'ai fait quelques recherches et beaucoup plus de recherches sur Google. J'ai commencé avec ce site d'enseignement Comment obtenir le numéro de série d'un programme avec OllyDbg .

Cependant, j'ai trouvé qu'il s'agissait d'un fichier Microsoft Visual C # / Basic .NET dans PEiD .

Je ne pouvais pas déboguer mon fichier .exe par OllyDbg. Raconté par ce site :

Olly n'est pas la solution ici, car c'est un programme .Net. Alors utilisez google pour trouver le programme qui vous aidera.

Tout d'abord, je suis tombé sur le décompilateur .NET . C'est un bon outil. Après ma première inspection dans le code source, j'ai localisé la méthode critique btnOK_Click()qui est le point de contrôle de la clé utilisateur. Malheureusement, le contenu de la méthode est masqué par // trial.NET decompiler (wtf), car ce n’est pas un logiciel gratuit et coûte 399 USD (rien de moins pour moi). De plus, je ne suis pas convaincu qu'il est garanti d'obtenir la clé UserKey après l'achat du décompilateur .NET. (c'est ma première fois quand même)

Ensuite, je suis passé à d’autres alternatives gratuites, telles que ILSpy (gratuit) et .NET Reflector (essai de 14 jours).

J'ai enfin pu inspecter la btnOK_Clickméthode:

private void btnOK_Click(object sender, EventArgs e)
{
    this.pbcUserKey = Strings.Trim(this.txtUserKey1.Text + this.txtUserKey2.Text + this.txtUserKey3.Text + this.txtUserKey4.Text);
    this.pbcUserKey = Strings.LSet(Strings.Trim(this.pbcUserKey), 16);
    try
    {
        this.createUserKey = modCommon.XxGetUserID(ref this.pbcUserKey);
        if (this.createUserKey)
        {
            MyProject.Forms.FrmLauncher.strUserID = this.pbcUserKey;
        }
    }
    catch (Exception expr_86)
    {
        ProjectData.SetProjectError(expr_86);
        Application.Exit();
        ProjectData.ClearProjectError();
    }
    this.Close();
}

Simplement, pbcUserKeyest-ce que la clé utilisateur que nous avons entrée et à quoi va-t-elle être comparée? Il est passé dans le methed modCommon.XxGetUserID():

[DllImport("XXGetUserkey.dll", CharSet = CharSet.Ansi, ExactSpelling = true, SetLastError = true)]
public static extern bool XxGetUserID([MarshalAs(UnmanagedType.VBByRefStr)] ref string userID);

Un autre obstacle est apparu. C'est une méthode externe et nous n'avons pas pu parcourir sa source. Nous savons seulement que la voie à suivre devrait être XXGetUserkey.dll. Croyez-moi, j'ai inspecté cette DLL plusieurs millions de fois et je n'ai pas eu de chance. (Je n'ai pas pu trouver IL Disassembler de M $ btw) Si vous avez des outils pour afficher / désassembler / décompiler les DLL, votre contribution sera très appréciée!

J'ai commencé à penser à tout le flux à nouveau. À l'origine, je voulais utiliser OllyDbg pour dupliquer le programme, pas pour le décompiler. J'espère que si je pouvais trouver un outil permettant de déboguer les programmes .NET, je pourrais inspecter les registres et les emplacements de mémoire pour voir à quoi mon entrée est comparée (comme ce qui était dit dans le tout premier lien Web). C'est pourquoi j'ai commencé à trouver le "débogueur .NET", et je n'ai pas pris la peine d'essayer un autre décompilateur comme dotPeek ou d' autres mentionnés ici . Cependant, à part l'outil de débogage officiel de M $, je n'en ai trouvé aucun autre.

Pour ici, je suppose que les outils officiels manquent de capacités de craquage. Est-ce vrai? Existe-t-il un mauvais débogueur .NET? (J'ai besoin de NOMS - mode #gangsters)

Face à une impasse, j'ai commencé à trouver un autre itinéraire. Maintenant, nous ne pouvions pas obtenir la clé utilisateur en déboguant ou en décompilant correctement. Et si on saute le processus de vérification?

Dans le code source décompilé, j'ai trouvé XxGetUserID()est utilisé par prfBeforeLoad(), en plus de btnOK_Click(). Puis j'ai enfin eu de la chance dans prfBeforeLoad():

private bool prfBeforeLoad()
{
    RegistryKey registryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\XX-1234-12345678", false);
    bool flag = false;
    string left;
    if (registryKey == null)
    {
        left = "";
    }
    else
    {
        left = Conversions.ToString(registryKey.GetValue("YY-11112222"));
    }

    // ...

    bool flag2 = modCommon.XxGetUserID(ref left);

    // ...
}

J'ai examiné HKEY_CURRENT_USER\Software\XX-1234-12345678et trouvé la clé XX-1234-12345678et la valeur 123456789ABCDEF0. Après avoir simplement ajouté cette paire de clé et de valeur à l'emplacement correspondant dans le registre de l'ordinateur B, cela fonctionne comme par magie - sans demander à nouveau de mot de la clé d'utilisateur - bien sûr, c'est la manière dont elle est codée. B-)


Titre bonus:

123456789ABCDEF0est en fait la clé utilisateur. La saisie de la même clé dans l'interface graphique active le logiciel, ce qui a le même effet que de modifier le registre.


En tout:

Cette fois, je suis assez chanceux pour que la clé utilisateur soit stockée clairement dans le registre et il m'est arrivé de trouver son chemin dans le code source (car je présume que ce n'est qu'un simple logiciel). Pourtant, il y a beaucoup d'obstacles sur lesquels je ne pouvais pas sauter:

  1. Si la clé est combinée / cryptée avec la clé de l'ordinateur (par exemple, une adresse MAC), mon approche simple échouera.

  2. Si la clé n'est pas stockée dans le registre ni dans les codes, par exemple, elle est récupérée en ligne. Pour l'instant, je ne peux toujours pas déboguer l' exécutable .NET , il serait impossible d'obtenir la clé d'utilisateur.

  3. Bien que je puisse décompiler et afficher la source des programmes .NET, la DLL Microsoft Visual C ++ 6.0 reste mystérieuse.


Voici quelques autres liens (utiles):

Déchiffrer une application simple (ByPass Login) - Obtenir directement la clé à partir du code source (code d'assemblage). Il vient de fournir une capture d'écran, mais ne mentionne pas le nom de l'outil.

Programme de crack créé sur VB.NET / C # / Delphi / MC ++ / Oxygene / F # - création de keygen en inspectant le code source dans .NET Reflector. Copiez la ligne d'authentification pour générer la clé.

Cracking DLL .NET pour Amateurs [1] and [2] - assez bref mais un bon tutoriel simple. .NET Reflector ne pouvait pas ouvrir mon fichier XXGetUserkey.dll. Dans PEiD, c’est la DLL Microsoft Visual C ++ 6.0 qui pourrait en être la raison.


Une manière beaucoup plus simple: lancez le Moniteur de processus de Sysinternals (Sysinternals fait maintenant partie de Microsoft, téléchargez-le ici ), puis lancez le programme et enregistre tous les accès au registre. Tada!
Ben Voigt
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.