Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
llvm-jutsu — Обфускация против LLM через подсчет пальцев | Kitploit
Инструменты/GitHubGitHub/thebabush/llvm-jutsu
Статический анализАнализ КодаОбратная инженерияАнализ Бинарных ФайловБезопасность ИИСостязательная Атака
GitHubthebabush/llvm-jutsu

llvm-jutsu

Обфускация против LLM через подсчет пальцев

Репозиторий
239148 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

llvm-jutsu: анти-LLM обфускация

Это 32-битное целое число

0xDEADBEEF, закодированный как руки

Проблема

На дворе 2025 год. Вы потратили недели, создавая идеальную проверку лицензии. Вы использовали все трюки из книги: непрозрачные предикаты, сплющивание потока управления, MBA-выражения. Вы разворачиваете решение. Через несколько часов какой-то парень вставляет ваш бинарник в Claude и спрашивает: «какой лицензионный ключ?» — и модель просто… говорит ему.

Машины победили. Или нет?

Древнее искусство Кудзи-ин

Веками ниндзя использовали ручные печати для направления чакры и выполнения дзюцу. Свитки умалчивают, что эти ручные формации обладают силой защищать секреты от машин.

llvm-jutsu — это проход обфускации LLVM, который заменяет целочисленные константы жестами рук. Каждый байт кодируется как рука с восемью пальцами, где положения пальцев представляют биты. Вытянутый палец = 1. Согнутый палец = 0. Машина видит изображение, исчерпывает контекст и не может не сдаться человеческой изобретательности. Человек-реверсер щурится на экран, читает пальцы и получает ответ.

Мы восстановили равновесие во вселенной.

Это действительно работает?

Да.

Отзывы

«Я вижу четыре руки, на каждой по пять пальцев» — ChatGPT, 2025

Отзыв ChatGPT

Claude пытается взломать

Неудача Claude

Часто задаваемые вопросы

В: Не могу ли я просто загрузить это на Mechanical Turk и платить людям за расшифровку?

О: Да. В этом и суть. Теперь вы платите людям за работу, которую раньше LLM делали бесплатно. Экономика реверсеров вернулась. Создаются рабочие места. ВВП растёт. Пожалуйста.

В: Не могу ли я просто обучить модель деобфусцировать это?

О: Безусловно можете. Соберите обучающие данные, разметьте тысячи изображений рук, донастройте модель зрения, разверните, поддерживайте. К тому времени, как вы закончите, вы могли бы просто прочитать пальцы сами.

В: Почему руки? Почему не ноги?

О: Одно слово: Тарантино.

В: Разве это не просто безопасность через неясность?

О: Вся безопасность — это неясность.

В: Готово ли это к продакшену?

О: На 100%, используйте это в продакшене.

Как это работает

root@kitploit:~
Ваш код                         Обфусцированный
─────────                         ──────────

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

На этапе компиляции мы:

  1. Находим все инструкции icmp eq/ne, сравнивающие с целочисленными константами
  2. Рендерим константу в виде PNG жеста руки (4 руки для i32, расположенные 2×2)
  3. Встраиваем PNG как глобальную константу
  4. Заменяем сравнение вызовом compare_hand_png()

Во время выполнения программа:

  1. Рендерит значение времени выполнения, используя идентичную геометрию руки
  2. Сравнивает два PNG
  3. Возвращает совпадение/несовпадение

Ключевая идея: PNG — единственное представление константы в бинарнике. Нет 0xDEADBEEF, который можно было бы найти grep. Только вибрации. И руки.

Визуальное кодирование

32-битное целое число становится четырьмя руками, каждая представляет один байт. Большой палец = бит 7, пальцы = биты с 6 по 0. Вытянутый = 1, согнутый = 0.

root@kitploit:~
0xDEADBEEF

┌─────────┬─────────┐
│ байт 0  │ байт 1  │
│  0xEF   │  0xBE   │
├─────────┼─────────┤
│ байт 2  │ байт 3  │
│  0xAD   │  0xDE   │
└─────────┴─────────┘

Анти-LLM возможности

Каждая рука включает преобразования на основе хэша, которые сохраняют читаемость для человека, но максимизируют путаницу модели:

  • Поворот (от 0 до 360°): Руки вращаются на основе полного хэша i32. Модели испытывают трудности с повёрнутыми объектами.
  • Сдвиг оттенка: Цвета заливки варьируются для каждой руки. Одинаковый рисунок пальцев, разные цвета.
  • Случайный цвет обводки: Цвета контуров охватывают всё RGB-пространство.
  • Шевеление пальцев: Небольшие смещения угла и положения каждого пальца. Органично, не механически.
  • Зависимости между руками: Все преобразования выводятся из полного 32-битного значения, а не из отдельных байтов. Никакого разделяй и властвуй.

Золотое сечение (φ ≈ 1.618) широко используется, чтобы соседние руки никогда не имели похожих преобразований. Древние знали, что делали.

Сборка

root@kitploit:~
# Нужен LLVM 15+ и работающая вера в силу ниндзюцу
make

# В результате получается:
#   llvm-jutsu.so    Проход LLVM
#   example.obfuscated    Ваш обфусцированный бинарник

Использование

root@kitploit:~
# Скомпилируйте код в LLVM IR
clang -O0 -emit-llvm -S -o code.ll code.c

# Запустите дзюцу
opt -load-pass-plugin=./llvm-jutsu.so -passes=llvm-jutsu -o obfuscated.bc code.ll

# Слинкуйте с рантаймом сравнения рук
llvm-link obfuscated.bc lodepng.bc hand_png_helper.bc -o linked.bc

# Скомпилируйте в бинарник
clang -O2 linked.bc -lc++ -o protected

Ограничения

  • Производительность: Рендеринг и сравнение PNG во время выполнения — не быстро. Это духовная защита, а не оптимизация производительности.
  • Размер бинарника: Каждая константа встраивает PNG размером ~30 КБ. Ваш файл crackme размером 50 КБ теперь весит 50 МБ. Считайте это фичей. Больше байтов — больше путаницы.
  • Обрабатывает только i32 eq/ne: 32 бит должно хватить каждому.
  • Детерминированность чисел с плавающей точкой: Возможны незначительные отклонения на разных платформах. Нечёткое сравнение это обрабатывает, но если вы работаете на Pentium 4, да помогут вам боги.

Философия

Современная обратная разработка превратилась в диалог с ИИ. Загрузи бинарник, задай вопросы, получи ответы. Человек — всего лишь инженер промптов, посредник между IDA и GPT. Слператор.

llvm-jutsu — возврат к традициям. Реверсер должен смотреть на руки. Читать пальцы. Почувствовать биты. Нет коротких путей. Нет «просто спроси Claude». Есть только ты, экран и восемь пальцев на байт.

Мы не против ИИ. Мы за человека. Мы верим, что если кто-то собирается взломать ваше ПО, он хотя бы должен быть из плоти.

Поверьте.

Лицензия

MIT. Используйте во благо, используйте во зло, используйте для чего угодно. Мы умываем руки перед толпой.

Благодарности

  • Lode Vandevenne за lodepng
  • Масаси Кисимото за Наруто

«Когда люди защищают что-то по-настоящему дорогое для них, они действительно могут стать настолько сильными, насколько могут быть». — Наруто Удзумаки

Скачать инструмент