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

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

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

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

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

Категории

Все категории
Loading categories
egodeath — Обфускатор JavaScript, основанный на криптографических методах неразличимого запутывания (Indistinguishability Obfuscation) | Kitploit
Инструменты/GitHubGitHub/nstarke/egodeath
Статический анализАнализ КодаОбратная инженерияСтатьи и ИсследованияОбучение и Образование
GitHubnstarke/egodeath

egodeath

Обфускатор JavaScript, основанный на криптографических методах неразличимого запутывания (Indistinguishability Obfuscation)

Репозиторий
535138 дней назадПроверено Kitploit

Популярное

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

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

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

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

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

egodeath

Этот проект не обеспечивает неразличимую обфускацию. Не следует использовать этот продукт для защиты секретов. Он существует для того, чтобы затруднить обратную разработку, а не предотвратить её

Tests

images/screenshot.png JavaScript-обфускатор, предназначенный для того, чтобы сделать код чрезвычайно трудным для чтения и анализа как людьми, так и LLM. Написан на TypeScript. Реализует техники из рецензируемых исследований по криптографической обфускации.

Установка

npm install
npm run build

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

# Basic usage
node dist/index.js input.js > output.js

# With target token budget (default: 2,000,000)
node dist/index.js --target-tokens 500000 input.js > output.js

# Minimal obfuscation (small output)
node dist/index.js --target-tokens 10000 input.js > output.js

# Maximum bloat (10M tokens)
node dist/index.js --target-tokens 10000000 input.js > output.js

# Using environment variable
INPUT_FILE=input.js node dist/index.js > output.js

# Help
node dist/index.js --help

Параметры

OptionDefaultDescription
--target-tokens <n>2000000Целевой размер вывода в токенах. Небольшие входные данные раздуваются до этого предела. Крупные входные данные дают меньше раздувания, чтобы оставаться в рамках бюджета.
--help, -hПоказать справочное сообщение

npm-скрипты

npm run build              # Compile TypeScript to dist/
npm run start              # Run the obfuscator (reads input.js)
npm run test               # Run the test suite
npm run obfuscate-package  # Run compatibility tests against npm packages

Программный API

const { obfuscate } = require('./dist/obfuscator');

const code = 'function add(a, b) { return a + b; }';
const obfuscated = obfuscate(code);

// With options
const obfuscated = obfuscate(code, { targetTokens: 500000 });

Конвейер преобразований

Обфускатор применяет 20 преобразований в 4 фазах. Каждый этап опирается на предыдущий.

Фаза 1: Предварительные преобразования для безопасности и защиты от анализа

ПорядокПреобразованиеФайлОписание
1Анти-отладочные ловушкиtransforms/antiDebug.tsВнедряет операторы eval("debugger") и 10–20 циклов setInterval с интервалами в виде простых чисел (5–600 с), которые многократно вызывают точки останова отладчика. Каждый экземпляр использует уникальные закодированные строки.
2Ловушки проколотой программыtransforms/tripwires.tsВстраивает скрытые проверки, сравнивающие хеши параметров с секретными значениями. 5 шаблонов хешей (битовый отпечаток, модулярная арифметика, charCodeAt, числовой хеш, typeof+length). При секретных входных данных вызывает незаметное повреждение состояния, бесконечные циклы или исключения. [Paper 4]
3Внедрение шума LPNtransforms/noiseInjection.tsДобавляет и компенсирует случайный шум через разделённые пути в арифметических вычислениях. 6 шаблонов: сложение/вычитание, XOR, умножение/деление, разделение по двум переменным, вычисляемая хеш-цепочка, циклический битовый сдвиг. Промежуточные значения бессмысленны без трассировки полной компенсации. [Paper 7]

Фаза 2: Предварительные структурные преобразования

ПорядокПреобразованиеФайлОписание
4Уплощение потока управленияtransforms/controlFlowFlattening.tsПреобразует тела функций в конечные автоматы вида while(true) { switch((_s * P) % M) { ... } } с диспетчеризацией через модулярную арифметику — значения case кодируются через (stateId * multiplier) % modulus с использованием случайных простых параметров. [Paper 3]
5Непрозрачные предикатыtransforms/opaquePredicates.tsВнедряет условия if, которые всегда истинны или ложны, но математически сложно доказуемы (например, (x*x+x)%2===0). 15 формул предикатов в категориях модулярной арифметики, битовых операций и проверок типов.
6Прокси-функцииtransforms/proxyFunctions.tsНаправляет все вызовы функций через два диспетчера: _fc(fn, ...args) для простых вызовов и _mc(obj, prop, ...args) для вызовов методов. Использует Function.prototype.apply, сохранённый в локальной переменной, для повышения устойчивости.
7Истощение контекстного окнаtransforms/contextExhaustion.tsОборачивает выражения в глубоко вложенные тернарные операторы с непрозрачными условиями, цепочки void-выражений и условное заполнение через void. Вынуждает LLM тратить токены контекстного окна на шум.
8Слияние выражений с запятойtransforms/commaExpressions.tsСворачивает последовательные выражения-инструкции в одиночные выражения с запятой: a(); b(); return c() превращается в return a(), b(), c().

Фаза 3: Проходы по идентификаторам

ПорядокПроходФайлОписание
9Проход 1: Каталогизацияpasses/firstPass.tsОбходит AST и каталогизирует каждый идентификатор, создавая карту глобальных переменных, которая назначает каждому случайное имя Unicode длиной 6–16 символов из 16 диапазонов письменностей (CJK, хангыль, греческий, кириллица, деванагари, тайский, арабский, катакана и т. д.).
10Проход 2: Подстановкаpasses/secondPass.tsЗаменяет все имена идентификаторов на их обфусцированные эквиваленты Unicode. Кодирует аргументы require() как String.fromCharCode(...). Кодирует источники статических import/export как строковые литералы с unicode-escape. Подставляет ссылки superClass классов, выражения шаблонных литералов, паттерны деструктуризации.
11Проход 3: Фиктивные параметрыpasses/thirdPass.tsВнедряет от 0 до 15 случайных неиспользуемых параметров в каждое объявление и выражение функции. Пропускает функции с rest-параметрами. Удаляет все комментарии.

Фаза 4: Пост-преобразования

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