Obfusquer du Code VBA

Tips Obfusquer du Code VBA

  •  Thread starter
  •  Admin
  • Pour commencer :

    Toujours travailler sur une copie

    L'obfuscation de code VBA est la pratique qui consiste à rendre le code source difficile à lire et à comprendre, tout en conservant son fonctionnement. Cette méthode peut être utilisée pour protéger la propriété intellectuelle ou rendre l'ingénierie inverse plus difficile.

    Il est important de noter que l'obfuscation n'est pas une méthode infaillible pour sécuriser votre code, mais cela peut compliquer le travail des personnes non autorisées.

    Voici un exemple simple d'un module VBA qui parcourt tous les modules d'un projet VBA et effectue une obfuscation simple, en remplaçant les noms de variables, de procédures et de fonctions par des noms aléatoires :

    Code VBA pour obfusquer des modules

    1.Ouvrir l’éditeur VBA :
    Appuyez sur `ALT + F11` dans Excel ou tout autre application Office.

    2.Insérer un nouveau module:
    Cliquez sur `Insertion` > `Module`.

    3. Copier le code ci-dessous :
    Collez le code dans le module.

    Rich (BB code):
    Sub ObfuscateVBA()
    
        Dim VBProj As VBIDE.VBProject
    
        Dim VBComp As VBIDE.VBComponent
    
        Dim Code As String
    
        Dim NewCode As String
    
      
    
        ' Référence à la bibliothèque Microsoft Visual Basic for Applications Extensibility
    
        Set VBProj = Application.VBE.VBProjects(1) ' Assurez-vous que le projet est correct
    
    
    
        ' Parcourir chaque module
    
        For Each VBComp In VBProj.VBComponents
    
            If VBComp.Type = vbComponentTypeModule Then
    
                Code = VBComp.CodeModule.Lines(1, VBComp.CodeModule.CountOfLines)
    
                NewCode = ObfuscateCode(Code)
    
                VBComp.CodeModule.DeleteLines 1, VBComp.CodeModule.CountOfLines ' Supprimer l'ancien code
    
                VBComp.CodeModule.InsertLines 1, NewCode ' Insérer le code obfusqué
    
            End If
    
        Next VBComp
    
     
        MsgBox "L'obfuscation est terminée !"
    
    End Sub
    
    Function ObfuscateCode(ByVal Code As String) As String
    
        ' Fonction simple pour obfusquer le code
    
        Dim Obfuscated As String
    
        Dim Line As Variant
    
        Dim Words As Variant
    
        Dim i As Long
    
        ' Découper le code en lignes
    
        Lines = Split(Code, vbCrLf)
    
    
        ' Parcourir chaque ligne
    
        For Each Line In Lines
    
            Words = Split(Line, " ")
    
            For i = LBound(Words) To UBound(Words)
    
                ' Remplacer les noms de variables (exemple simple)
    
                If IsVariable(Words(i)) Then
    
                    Words(i) = "var" & Int((1000 * Rnd) + 1)
    
                End If
    
            Next i
    
            Obfuscated = Obfuscated & Join(Words, " ") & vbCrLf
    
        Next Line  
    
        ObfuscateCode = Obfuscated
    
    End Function
    
    Function IsVariable(ByVal Word As String) As Boolean
    
        ' Vérifier si le mot est un mot réservé ou un nom de variable commun
    
        Dim ReservedWords As Variant
    
        ReservedWords = Array("Sub", "Function", "End", "Dim", "As", "If", "Then", "Else", "For", "Next", "Do", "Loop", _
    
                              "While", "Wend", "Select", "Case", "MsgBox", "Application", "VBE", "VBProject", "VBComponents")
    
        Dim i As Long
    
        For i = LBound(ReservedWords) To UBound(ReservedWords)
    
            If UCase(Word) = UCase(ReservedWords(i)) Then
    
                IsVariable = False
    
                Exit Function
    
            End If
    
        Next i
    
        IsVariable = True ' Considérer comme une variable par défaut
    
    End Function

    Explications sur le Code

    1.ObfuscateVBA:
    Cette sous-procédure parcourt tous les modules d’un projet VBA et applique la fonction d’obfuscation à chaque module.

    2. ObfuscateCode:
    Cette fonction prend une chaîne de code et remplace les noms de variables par des noms aléatoires.

    3. IsVariable:
    Cette fonction détermine si un mot est un mot réservé de VBA pour éviter de renommer des mots qui ne doivent pas l'être.

    Remarques Importantes

    Ce code est un exemple simple et fonctionne de manière basique. Vous devrez peut-être l’adapter pour mieux répondre à vos besoins d’obfuscation.

    Prenez des précautions avant d'exécuter le code, car l’obfuscation peut rendre le débogage ou la maintenance du code plus complexe.

    Assurez vous que votre projet VBA a activé les références à la bibliothèque "Microsoft Visual Basic for Applications Extensibility" dans les références de votre projet (`Outils` > `Références`).

    En résumé, ce script vous permettra d'obfusquer vos modules VBA pour en protéger le contenu.

    D'autres méthodes existes plus complexes, un autre sujet sera bientôt disponible.

    Enjoy Coding
     
    Last edited:
  •  Thread starter
  •  Admin
  • Bonjour a vous

    Je viens de tester a nouveau le Code, et je n'arrive pas a reproduire votre erreur ?



    Vos références active me semble correct.

    [highlight=yellow]Quel version d excel utilisez vous ?[/highlight]

    Vous pouvez si vous le désirez, m'envoyer votre fichier a l'adresse suivante :

    [email protected]

    ce sera plus facile pour moi de vous aider.
     
    Similar content Most view View more
    Back
    Top