Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
llvm-jutsu — Offuscamento anti-LLM tramite conteggio delle dita | Kitploit
Strumenti/GitHubGitHub/thebabush/llvm-jutsu
Analisi StaticaAnalisi del CodiceReverse EngineeringAnalisi di BinariSicurezza dell'IAAttacco Avversario
GitHubthebabush/llvm-jutsu

llvm-jutsu

Offuscamento anti-LLM tramite conteggio delle dita

Vedi Repository
2391458 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

llvm-jutsu: offuscamento anti-LLM

Questo è un intero a 32 bit

0xDEADBEEF codificato come mani

Il problema

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?

L'antica arte del Kuji-in

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.

Funziona davvero?

Sì.

Testimonianze

"Vedo quattro mani, ciascuna con cinque dita" — ChatGPT, 2025

Scarica lo strumento

Testimonianza di ChatGPT

Claude che tenta di decifrarlo

Fallimento di Claude

FAQ

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.

Come funziona

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

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

In fase di compilazione:

  1. Trova tutte le istruzioni icmp eq/ne che confrontano con costanti intere
  2. Rende la costante come un PNG di un gesto della mano (4 mani per i32, disposte 2×2)
  3. Incorpora il PNG come costante globale
  4. Sostituisce il confronto con una chiamata a compare_hand_png()

A runtime, il programma:

  1. Rende il valore runtime usando la stessa geometria delle mani
  2. Confronta i due PNG
  3. Restituisce corrispondenza/non corrispondenza

Il punto chiave: il PNG è l'unica rappresentazione della costante nel binario. Non c'è 0xDEADBEEF da cercare con grep. Solo vibrazioni. E mani.

Codifica visiva

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.

root@kitploit:~
0xDEADBEEF

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

Funzionalità anti-LLM

Ogni mano include trasformazioni derivate dall'hash che preservano la leggibilità umana massimizzando la confusione del modello:

  • Rotazione (da 0 a 360°): Le mani ruotano in base all'hash completo dell'i32. I modelli hanno difficoltà con oggetti ruotati.
  • Spostamento di tonalità: I colori di riempimento variano per mano. Stesso schema di dita, colori diversi.
  • Randomizzazione del colore del tratto: I colori del contorno coprono l'intero spazio RGB.
  • Oscillazione delle dita: Sottili offset di angolo e posizione per ogni dito. Organico, non meccanico.
  • Dipendenze tra mani: Tutte le trasformazioni derivano dal valore completo a 32 bit, non da byte individuali. Nessun divide et impera.

Il rapporto aureo (φ ≈ 1,618) è ampiamente utilizzato per garantire che mani adiacenti non condividano mai trasformazioni simili. Gli antichi sapevano cosa facevano.

Compilazione

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

Utilizzo

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

Limitazioni

  • Prestazioni: Renderizzare e confrontare PNG a runtime non è veloce. Questa è protezione spirituale, non ottimizzazione delle prestazioni.
  • Dimensione del binario: Ogni costante incorpora un PNG di circa 30KB. Il tuo crackme di 50KB ora è 50MB. Consideralo una caratteristica. Più byte, più confusione.
  • Gestisce solo i32 eq/ne: 32 bit dovrebbero bastare per chiunque.
  • Determinismo in virgola mobile: Possono verificarsi piccole variazioni tra piattaforme. Il confronto fuzzy gestisce questo, ma se stai eseguendo su un Pentium 4, che gli dei ti aiutino.

La filosofia

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.

Licenza

MIT. Usalo per il bene, usalo per il male, usalo per qualsiasi cosa. Ci laviamo le mani davanti alla folla.

Crediti

  • Lode Vandevenne per lodepng
  • Masashi Kishimoto per Naruto

"Quando le persone proteggono qualcosa di veramente speciale per loro, possono davvero diventare forti quanto possono essere." — Naruto Uzumaki