Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
llvm-jutsu — Obscurcissement anti-LLM par comptage de doigts | Kitploit
Outils/GitHubGitHub/thebabush/llvm-jutsu
Analyse StatiqueAnalyse de CodeRétro-ingénierieAnalyse de BinairesSécurité de l'IAAttaque Adversariale
GitHubthebabush/llvm-jutsu

llvm-jutsu

Obscurcissement anti-LLM par comptage de doigts

Voir le dépôt
23914il y a 8 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

llvm-jutsu : obfuscation anti-LLM

Ceci est un entier 32 bits

0xDEADBEEF encodé en mains

Le Problème

Nous sommes en 2025. Vous avez passé des semaines à concevoir la vérification de licence parfaite. Vous avez utilisé toutes les astuces du livre : prédicats opaques, aplatissement du flux de contrôle, expressions MBA. Vous déployez. En quelques heures, un gars colle votre binaire dans Claude et demande « quelle est la clé de licence ? » et le modèle... la lui donne simplement.

Les machines ont gagné. Ou ont-elles gagné ?

L'Art Ancien du Kuji-in

Pendant des siècles, les ninjas ont utilisé des sceaux de main pour canaliser le chakra et exécuter des jutsu. Ce que les parchemins ne vous disent pas, c'est que ces formations de mains ont le pouvoir de protéger les secrets des machines.

llvm-jutsu est une passe d'obfuscation LLVM qui remplace les constantes entières par des gestes de la main. Chaque octet est encodé comme une main à huit doigts où les positions des doigts représentent les bits. Doigt tendu = 1. Doigt plié = 0. La machine voit l'image, manque de contexte, et ne peut que se rendre à l'ingéniosité humaine. Le reverser humain plisse les yeux sur l'écran, lit les doigts, et obtient la réponse.

Nous avons rétabli l'équilibre dans l'univers.

Est-ce que ça marche vraiment ?

Oui.

Témoignages

« Je vois quatre mains, chacune avec cinq doigts » — ChatGPT, 2025

Témoignage de ChatGPT

Claude essaie de le craquer

Échec de Claude

FAQ

Q : Ne puis-je pas simplement les télécharger sur Mechanical Turk et payer des humains pour les décoder ?

R : Oui. C'est le but. Vous payez maintenant des humains pour faire un travail que les LLM faisaient gratuitement. L'économie du reverser est de retour. Des emplois sont créés. Le PIB augmente. De rien.

Q : Ne puis-je pas simplement entraîner un modèle pour désoscurcir cela ?

R : Vous pouvez absolument. Collectez des données d'entraînement, étiquetez des milliers d'images de mains, affinez un modèle de vision, déployez-le, maintenez-le. Le temps que vous ayez fini, vous auriez pu simplement lire les doigts vous-même.

Q : Pourquoi des mains ? Pourquoi pas des pieds ?

R : Un mot : Tarantino.

Q : N'est-ce pas juste de la sécurité par l'obscurité ?

R : Toute sécurité est obscurité.

Q : Est-ce prêt pour la production ?

R : 100 %, utilisez-le en production.

Comment ça marche

root@kitploit:~
Your Code                         Obfuscated
─────────                         ──────────

if (key == 0xDEADBEEF) {    →     if (compare_hand_png(key, embedded_png)) {
    grant_access();                   grant_access();
}                                 }

Au moment de la compilation, nous :

  1. Trouvons toutes les instructions icmp eq/ne qui comparent avec des constantes entières
  2. Rendons la constante sous forme de PNG de geste de la main (4 mains pour i32, disposées 2×2)
  3. Intégrons le PNG comme constante globale
  4. Remplaçons la comparaison par un appel à compare_hand_png()

Au moment de l'exécution, le programme :

  1. Rend la valeur d'exécution en utilisant une géométrie de main identique
  2. Compare les deux PNG
  3. Retourne une correspondance/non-correspondance

L'idée clé : le PNG est la seule représentation de la constante dans le binaire. Il n'y a pas de 0xDEADBEEF à chercher avec grep. Juste des vibrations. Et des mains.

Encodage Visuel

Un entier 32 bits devient quatre mains, chacune représentant un octet. Pouce = bit 7, doigts = bits 6 à 0. Tendus = 1, pliés = 0.

root@kitploit:~
0xDEADBEEF

┌─────────┬─────────┐
│ byte 0  │ byte 1  │
│  0xEF   │  0xBE   │
├─────────┼─────────┤
│ byte 2  │ byte 3  │
│  0xAD   │  0xDE   │
└─────────┴─────────┘

Fonctionnalités Anti-LLM

Chaque main inclut des transformations dérivées du hachage qui préservent la lisibilité humaine tout en maximisant la confusion du modèle :

  • Rotation (0 à 360°) : Les mains tournent en fonction du hachage complet de l'i32. Les modèles ont du mal avec les objets pivotés.
  • Changement de teinte : Les couleurs de remplissage varient par main. Même motif de doigts, couleurs différentes.
  • Randomisation de la couleur du contour : Les couleurs de contour couvrent tout l'espace RVB.
  • Ondulation des doigts : Décalages subtils d'angle et de position par doigt. Organique, pas mécanique.
  • Dépendances inter-mains : Toutes les transformations dérivent de la valeur complète 32 bits, pas des octets individuels. Pas de diviser pour régner.

Le nombre d'or (φ ≈ 1,618) est largement utilisé pour garantir que les mains adjacentes ne partagent jamais de transformations similaires. Les anciens savaient ce qu'ils faisaient.

Construction

root@kitploit:~
# You need LLVM 15+ and a functioning belief in the power of ninjutsu
make

# This produces:
#   llvm-jutsu.so    The LLVM pass
#   example.obfuscated    Your obfuscated binary

Utilisation

root@kitploit:~
# Compile your code to LLVM IR
clang -O0 -emit-llvm -S -o code.ll code.c

# Run the jutsu
opt -load-pass-plugin=./llvm-jutsu.so -passes=llvm-jutsu -o obfuscated.bc code.ll

# Link with the hand comparison runtime
llvm-link obfuscated.bc lodepng.bc hand_png_helper.bc -o linked.bc

# Compile to binary
clang -O2 linked.bc -lc++ -o protected

Limitations

  • Performance : Rendre et comparer des PNG à l'exécution n'est pas rapide. C'est une protection spirituelle, pas une optimisation de performance.
  • Taille du binaire : Chaque constante intègre un PNG d'environ 30 Ko. Votre crackme de 50 Ko fait maintenant 50 Mo. Considérez cela comme une fonctionnalité. Plus d'octets, plus de confusion.
  • Ne gère que i32 eq/ne : 32 bits devraient suffire à tout le monde.
  • Déterminisme en virgule flottante : Des variations mineures peuvent se produire selon les plateformes. La comparaison floue gère cela, mais si vous utilisez un Pentium 4, que les dieux vous viennent en aide.

La Philosophie

Le reverse engineering moderne est devenu une conversation avec une IA. Téléchargez le binaire, posez des questions, recevez des réponses. L'humain n'est qu'un ingénieur de prompt, un intermédiaire entre IDA et GPT. Un sloperator.

llvm-jutsu est un retour à la tradition. Le reverser doit regarder les mains. Lire les doigts. Ressentir les bits. Il n'y a pas de raccourci. Il n'y a pas de « demande juste à Claude ». Il n'y a que vous, l'écran, et huit doigts par octet.

Nous ne sommes pas anti-IA. Nous sommes pro-humains. Nous croyons que si quelqu'un va cracker votre logiciel, il devrait au moins être fait de chair.

Croyez-le.

Licence

MIT. Utilisez-le pour le bien, utilisez-le pour le mal, utilisez-le pour n'importe quoi. Nous nous lavons les mains devant la foule.

Crédits

  • Lode Vandevenne pour lodepng
  • Masashi Kishimoto pour Naruto

« Quand les gens protègent quelque chose de vraiment spécial pour eux, ils peuvent vraiment devenir aussi forts qu'ils le peuvent. » — Naruto Uzumaki

Télécharger l’outil