- Reaction score
- 112
- EasyCred
- 3,814
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.
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
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:
