Dans les mécanismes de tatouage, on pourrait rajouter:
l'inversion de l'ordre de déclaration des variables d'une fonction:
int I;
int J;
deviendrait:
int J;
int I;
Mais attention, il y a un effet de bord dans le cas de dépassement de tampon des variables (ce qui est de toute façon un bug du programme)
l'inversion des paramètres d'un test
if ((I == 2) && (J <= 10))
deviendrait:
if ((J <= 10) && (I == 2))
ATTENTION, il y a là un risque que le programme ne fonctionne plus comme avant, dans le cas où l'ordre des fonctions de test est important (exemple: if (test1() || test2()) avec test1 et test2 qui sont 2 fonctions)
le changement de nom des variables. Suivant le cas, cela se rapproche de l'obstrufication du code
le rajout de faute d'orthographes, ou d'erreur de description, dans les commentaires
changer certains caractères par leur équivalents hexadécimaux
I[0] = ' ';
deviendrait:
I[0] = 0x20;
Désolé pour le manque de RC dans les puces, je n'ai pas réussi à en écrire avec le nouveau LinuxFR... :=(
Alors que les autres propositions sont plus ou moins automatisables, on peut aussi imaginer quelque chose comme ceci:
char MyString[128];
strcpy(MyString, "This is a test @copyright")
deviendrait:
char MyString[128];
strcpy(MyString, "This is a test @copyright")
MyString[14] = 0;
Dans le 1er exemple, un "printf" de "MyString" donnerait "This is a test @copyright"
Dans le 2nd cas, ce serait "This is a test"
J'ai souvenir que par le passé, les développeurs du drivers proprio NVIDIA avaient utilisé cette astuce, afin que le chargement du module n'affiche plus le mot "taintened" dans "dmesg". L'idée étant alors pour eux, de masquer le fait que le driver n'était pas libre... ;)
# Autres solutions
Posté par Olivier (site web personnel) . En réponse au message Tatouage de code source. Évalué à 3.
Dans les mécanismes de tatouage, on pourrait rajouter:
l'inversion de l'ordre de déclaration des variables d'une fonction: int I; int J; deviendrait: int J; int I; Mais attention, il y a un effet de bord dans le cas de dépassement de tampon des variables (ce qui est de toute façon un bug du programme)
l'inversion des paramètres d'un test if ((I == 2) && (J <= 10)) deviendrait: if ((J <= 10) && (I == 2)) ATTENTION, il y a là un risque que le programme ne fonctionne plus comme avant, dans le cas où l'ordre des fonctions de test est important (exemple: if (test1() || test2()) avec test1 et test2 qui sont 2 fonctions)
le changement de nom des variables. Suivant le cas, cela se rapproche de l'obstrufication du code
le rajout de faute d'orthographes, ou d'erreur de description, dans les commentaires
changer certains caractères par leur équivalents hexadécimaux I[0] = ' '; deviendrait: I[0] = 0x20;
Désolé pour le manque de RC dans les puces, je n'ai pas réussi à en écrire avec le nouveau LinuxFR... :=(
Alors que les autres propositions sont plus ou moins automatisables, on peut aussi imaginer quelque chose comme ceci:
char MyString[128];
strcpy(MyString, "This is a test @copyright")
deviendrait:
char MyString[128];
strcpy(MyString, "This is a test @copyright") MyString[14] = 0;
Dans le 1er exemple, un "printf" de "MyString" donnerait "This is a test @copyright"
Dans le 2nd cas, ce serait "This is a test"
J'ai souvenir que par le passé, les développeurs du drivers proprio NVIDIA avaient utilisé cette astuce, afin que le chargement du module n'affiche plus le mot "taintened" dans "dmesg". L'idée étant alors pour eux, de masquer le fait que le driver n'était pas libre... ;)