
Obscurcissement anti-LLM par comptage de doigts
Ceci est un entier 32 bits
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é ?
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.
Oui.
« Je vois quatre mains, chacune avec cinq doigts » — ChatGPT, 2025
Claude essaie de le craquer
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.
Your Code Obfuscated
───────── ──────────
if (key == 0xDEADBEEF) { → if (compare_hand_png(key, embedded_png)) {
grant_access(); grant_access();
} }
Au moment de la compilation, nous :
icmp eq/ne qui comparent avec des constantes entièrescompare_hand_png()Au moment de l'exécution, le programme :
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.
Un entier 32 bits devient quatre mains, chacune représentant un octet. Pouce = bit 7, doigts = bits 6 à 0. Tendus = 1, pliés = 0.
0xDEADBEEF
┌─────────┬─────────┐
│ byte 0 │ byte 1 │
│ 0xEF │ 0xBE │
├─────────┼─────────┤
│ byte 2 │ byte 3 │
│ 0xAD │ 0xDE │
└─────────┴─────────┘
Chaque main inclut des transformations dérivées du hachage qui préservent la lisibilité humaine tout en maximisant la confusion du modèle :
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.
# 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
# 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
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.
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.
« 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