Les contraintes


Voici les contraintes que je propose pour considérer qu'un programme « Loki » est de bonne qualité :
  • Il être capable de modifier du code source de manière automatique sans intervention extérieure. A priori la personne l'utilisant est dans une dynamique de fraude et on ne peut donc supposer aucune connaissance particulière en informatique, autre que démarrer un programme (le programme Loki en l'occurrence).
  • Loki ne doit pas changer ce que fait le code source original. Le code transformé doit toujours être compilable avec les même options, et l'exécutable doit avoir l'exact même comportement. Dit autrement Loki ne doit pas introduire d'erreur dans le code transformé.
  • Loki doit générer la plus grande distance possible entre le code source orignal et le code source transformé. Ce sera là un moyen simple de mesurer la qualité d'un programme de type Loki. Voir plus bas comment faire pour évaluer la qualité de la transformation.
  • La taille, ainsi que l'aspect du code source doit rester « discret », typiquement il ne doit pas trop s'éloigner en terme de taille par rapport à la taille moyenne des codes sources rendus par l'ensemble des étudiants. Il doit aussi rester lisible, car les codes sont lus, même si en pratique un prof' pas les moyens de pouvoir tous les comparer deux à deux. Typiquement, je pense qu'utiliser un obfuscateur de code doit pouvoir générer un code satisfaisant le critère de distance. Mais l'objectif de ce genre d'outils est de produire du code illisible. C'est donc très visible.

Les données


Voici quelques données pour tester un programme Loki :
  • Des codes source fait par des étudiants lors d'un TP (des originaux à transformer). Voir dans l'archive attaché à cet article (les fichier « code_*.c »).
  • Des exemples d'entré/sortie : ce qui m'a servit pour noter les codes des étudiants. Ces données permettront de vérifier que le programme Loki ne modifie pas le comportement du programme original. Voir dans l'archive attaché à cet article : les fichiers « entre[1-4].txt », et « sortie[1-4].txt ».
  • Baldr (téléchargeable gratuitement) pour mesurer la distance entre le code original et le code transformé/maquillé. L'objectif est essayer que cette distance soit la plus proche possible des distances « normales » de manière à ce qu'il n'y ai pas le « petit pic à gauche » caractéristique de fraude...
  • Vous pouvez donc tester par vous même le résultat de votre Loki. Pour cela il suffit analyser les codes originaux ajouté de votre code fraudé par votre Loki. Une bosse devrai apparaître à gauche sur l'histogramme produit par Baldr. Plus cette bosse est proche de la courbe principale de l'histogramme et plus elle se fondra dans la masse meilleur sera votre Loki.
Postez ici vos questions et remarques, et n'hésitez pas à m'envoyer vos productions.