Перейти к содержимому
Aback Tools Logo

Инжектор непрозрачных предикатов

Вставляйте всегда истинные и всегда ложные непрозрачные предикаты в исходный код, чтобы затруднить работу инструментов статического анализа и чтение человеком. Поддерживает 6 типов предикатов и 12 языков программирования с настраиваемой плотностью вставки. Вся обработка локальна и конфиденциальна.

Opaque Predicate Injector

Inject always-true and always-false opaque predicates into your code to confuse static analysis tools and human readers. Supports 6 predicate types, 12 programming languages, and configurable injection density. All processing is local and private.

Try an example:

Paste source code and click Inject Opaque Predicates to add always-true and always-false conditions that confuse static analysis. Supports 6 predicate types and 12 programming languages. Configure type, language, and density in the settings above.

Почему стоит использовать наш инжектор непрозрачных предикатов?

  • Несколько типов предикатов: выбирайте из шести различных типов непрозрачных предикатов: инвариантная арифметика (выражения, всегда истинные/ложные), трюки XOR и битовые операции, предикаты приведения типов, инварианты, зависящие от потока, самоссылающиеся проверки и предикаты мёртвого кода. Каждый тип использует разные математические свойства, устойчивые к обнаружению по шаблонам.
  • Несколько выходных языков: генерируйте непрозрачные предикаты для JavaScript, Python, TypeScript, Java, C, C++, C#, Go, Rust, PHP, Ruby и Swift. Инжектор адаптирует синтаксис предиката к операторам и системе типов каждого языка, сохраняя математический инвариант, который делает предикат непрозрачным.
  • Настраиваемая плотность вставки: управляйте тем, сколько непрозрачных предикатов вставлять: лёгкая (1-2 предиката), средняя (3-5 предикатов) или интенсивная (6-10+ предикатов). Увеличивайте плотность для более сильной обфускации или оставляйте её низкой, чтобы минимизировать рост кода. Предикаты распределяются по коду случайным образом.
  • Локальная и конфиденциальная обработка: вся генерация предикатов и преобразование кода происходят полностью в вашем браузере. Ваш исходный код никогда не покидает устройство. Без вызовов API, аналитики и сбора данных — полная конфиденциальность для вашего проприетарного кода. Регистрация и аккаунт не требуются.

Что такое непрозрачный предикат?

Непрозрачный предикат — это условное выражение в коде с известным результатом (всегда истинным или всегда ложным), которое выглядит как законное условие выполнения. В отличие от обычных условий, непрозрачные предикаты созданы так, чтобы инструментам статического анализа было трудно вычислить их на этапе компиляции. Например, в целочисленной арифметике выражение всегда истинно (поскольку квадрат любого целого числа неотрицателен), но наивный декомпилятор может не распознать этот инвариант. Непрозрачные предикаты — фундаментальный строительный блок обфускации кода: они добавляют мёртвые пути, которые никогда не выполняются (всегда ложные предикаты), или гарантируют, что определённые блоки всегда выполняются (всегда истинные предикаты), запутывая как людей, так и автоматические средства анализа.

Как работает инжектор непрозрачных предикатов

  1. Разбор входных данных: инструмент принимает исходный код. Код анализируется как обычный текст для поиска возможных точек вставки: перед определениями функций, перед блоками if/else, внутри тел функций на границах инструкций и в конце функций. Границы инструкций определяются по переносам строк и точкам с запятой.
  2. Выбор предиката: исходя из выбранного типа предиката и целевого языка, инструмент генерирует выражения непрозрачного предиката с синтаксисом конкретного языка. Для JavaScript это может быть if ((a + a) / 2 === a) (всегда истина для чисел). Для Python могут использоваться трюки приведения типов вроде if (True == 1) (всегда истина).
  3. Генерация переменных: чтобы предикаты выглядели законно, инжектор создаёт случайные имена переменных, соответствующие стилю кодирования входного языка. Переменные объявляются с подходящими типами и инициализируются значениями, при которых предикат вычисляется верно.
  4. Вставка: предикаты вставляются в случайные допустимые места кода. Каждый предикат оборачивает блок кода (для всегда истинных) или вставляет блок мёртвого кода (для всегда ложных). Инжектор применяет настраиваемую плотность, управляя числом добавленных предикатов.

Типы непрозрачных предикатов

  • Инвариантная арифметика: использует математические свойства, которые всегда выполняются. Примеры: x * 0 === 0 (всегда истина), x * x >= 0 (всегда истина для целых), y - y === 0 (всегда истина). Эксплуатирует алгебраические инварианты.
  • Трюки XOR и битовые операции: использует свойства побитовых операций. Примеры: x ^ x === 0 (всегда истина для любого x), (x & ~x) === 0 (всегда истина), x | x === x (всегда истина). Сложны для статического анализа.
  • Предикаты приведения типов: эксплуатируют неявные преобразования типов. Примеры: 1 + 1 !== "11" (всегда истина — числовое сложение против конкатенации строк), [] == false (всегда истина в JS). Зависят от языка и сильно запутывают.
  • Инварианты, зависящие от потока: используют свойства, выполняющиеся в конкретных точках кода. Пример: typeof x === typeof x (всегда истина), x === x (всегда истина, кроме NaN). Просты, но эффективны.
  • Предикаты мёртвого кода: всегда ложные условия, оборачивающие код, который никогда не выполняется. Создают недостижимые блоки, затрудняющие анализ потока управления. Пример: if (false && complexCondition), когда компилятор не может легко доказать, что условие всегда ложно.

Конфиденциальность и безопасность

Этот инструмент работает целиком в вашем браузере на клиентском JavaScript. Ваш исходный код, сгенерированные предикаты и обфусцированный результат никогда не загружаются на сервер, не сохраняются в базах данных и не передаются по сети. Вся генерация предикатов, разбор кода, переименование переменных и форматирование результата выполняются локально на вашем устройстве. Здесь нет вызовов API, аналитического отслеживания, cookie и сбора данных любого рода. Это делает инструмент полностью безопасным для обфускации проприетарного кода, лицензионного ПО или чувствительных алгоритмов.

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

Непрозрачный предикат — это условное выражение, которое всегда даёт одно и то же значение (всегда истинное или всегда ложное), но выглядит как законное условие выполнения. Примеры: `x * 0 === 0` (всегда истина) или `x !== x` (всегда ложь для чисел). Их применяют, чтобы затруднить работу инструментов статического анализа и чтение человеком.

Шесть типов: инвариантная арифметика (например, `x * 0 === 0`), трюки XOR и битовые (например, `x ^ x === 0`), приведение типов (например, `[] == false`), инварианты, зависящие от потока (например, `typeof x === typeof x`), предикаты мёртвого кода (всегда ложные) и комбинированный (смешивает все типы для максимальной сложности).

JavaScript, TypeScript, Python, Java, C, C++, C#, Go, Rust, PHP, Ruby и Swift. Предикаты адаптируются к каждому языку с подходящими операторами, системами типов и синтаксическими соглашениями.

Нет. Всегда истинные предикаты гарантируют, что обёрнутый код всегда выполняется. Всегда ложные предикаты оборачивают недостижимый мёртвый код. Логика и поведение программы полностью сохраняются. Увеличивается только размер кода, а накладные расходы на вычисление условий минимальны.

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

Безусловно. Инжектор работает целиком в вашем браузере. Ваш исходный код, сгенерированные предикаты и обфусцированный результат никогда не загружаются на сервер и не передаются по сети. Вся обработка локальна, без вызовов API и сбора данных.

Лёгкая плотность добавляет 1-2 предиката (~10-30 строк). Средняя добавляет 3-5 предикатов (~30-80 строк). Интенсивная добавляет 6-10+ предикатов (~80-200+ строк). Каждый предикат обычно добавляет 2-5 строк, включая объявления переменных.

Да — 100 % бесплатно, без регистрации, без аккаунта и без ограничений использования. Обфусцируйте столько кода, сколько нужно. Без премиум-тарифов, скрытых платежей и ограничений частоты. Ваш код никогда не покидает устройство.