
Offuscamento anti-LLM tramite conteggio delle dita
Questo è un intero a 32 bit
Siamo nel 2025. Hai passato settimane a creare il perfetto controllo di licenza. Hai usato ogni trucco del libro: predicati opachi, appiattimento del flusso di controllo, espressioni MBA. Lo distribuisci. Nel giro di poche ore, un tizio incolla il tuo binario in Claude e chiede "qual è la chiave di licenza?" e il modello... gliela dice.
Le macchine hanno vinto. O forse no?
Per secoli, i ninja hanno usato sigilli con le mani per incanalare il chakra ed eseguire jutsu. Quello che i rotoli non ti dicono è che queste formazioni di mani hanno il potere di proteggere i segreti dalle macchine.
llvm-jutsu è un pass di offuscamento LLVM che sostituisce le costanti intere con gesti delle mani. Ogni byte viene codificato come una mano a 8 dita dove le posizioni delle dita rappresentano i bit. Dito esteso = 1. Dito piegato = 0. La macchina vede l'immagine, esaurisce il contesto e non può fare a meno di arrendersi all'ingegno umano. Il reverse engineer umano strizza gli occhi, legge le dita e ottiene la risposta.
Abbiamo ripristinato l'equilibrio nell'universo.
Sì.
"Vedo quattro mani, ciascuna con cinque dita" — ChatGPT, 2025
Claude che tenta di decifrarlo
D: Non posso semplicemente caricarle su Mechanical Turk e pagare umani per decodificarle?
R: Sì. Questo è il punto. Ora stai pagando umani per fare un lavoro che gli LLM facevano gratis. L'economia del reverse engineering è tornata. Si creano posti di lavoro. Il PIL sale. Prego.
D: Non posso semplicemente addestrare un modello per deoffuscare questo?
R: Puoi assolutamente. Raccogli dati di addestramento, etichetta migliaia di immagini di mani, ottimizza un modello di visione, distribuiscilo, mantienilo. Quando hai finito, avresti potuto semplicemente leggere le dita da solo.
D: Perché mani? Perché non piedi?
R: Una parola: Tarantino.
D: Non è solo sicurezza tramite oscurità?
R: Tutta la sicurezza è oscurità.
D: È pronto per la produzione?
R: 100%, usalo in produzione.
Your Code Obfuscated
───────── ──────────
if (key == 0xDEADBEEF) { → if (compare_hand_png(key, embedded_png)) {
grant_access(); grant_access();
} }
In fase di compilazione:
icmp eq/ne che confrontano con costanti interecompare_hand_png()A runtime, il programma:
Il punto chiave: il PNG è l'unica rappresentazione della costante nel binario. Non c'è 0xDEADBEEF da cercare con grep. Solo vibrazioni. E mani.
Un intero a 32 bit diventa quattro mani, ciascuna rappresentante un byte. Pollice = bit 7, dita = bit da 6 a 0. Esteso = 1, piegato = 0.
0xDEADBEEF
┌─────────┬─────────┐
│ byte 0 │ byte 1 │
│ 0xEF │ 0xBE │
├─────────┼─────────┤
│ byte 2 │ byte 3 │
│ 0xAD │ 0xDE │
└─────────┴─────────┘
Ogni mano include trasformazioni derivate dall'hash che preservano la leggibilità umana massimizzando la confusione del modello:
Il rapporto aureo (φ ≈ 1,618) è ampiamente utilizzato per garantire che mani adiacenti non condividano mai trasformazioni simili. Gli antichi sapevano cosa facevano.
# 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
Il reverse engineering moderno è diventato una conversazione con un'IA. Carica un binario, fai domande, ricevi risposte. L'umano è solo un ingegnere dei prompt, un intermediario tra IDA e GPT. Un sloperator.
llvm-jutsu è un ritorno alla tradizione. Il reverse engineer deve guardare le mani. Leggere le dita. Sentire i bit. Non ci sono scorciatoie. Non c'è 'chiedi a Claude.' Ci sei solo tu, lo schermo e otto dita per byte.
Non siamo anti-IA. Siamo pro-umani. Crediamo che se qualcuno deve crackare il tuo software, dovrebbe almeno essere fatto di carne.
Credici.
MIT. Usalo per il bene, usalo per il male, usalo per qualsiasi cosa. Ci laviamo le mani davanti alla folla.
"Quando le persone proteggono qualcosa di veramente speciale per loro, possono davvero diventare forti quanto possono essere." — Naruto Uzumaki