Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
egodeath — Un ofuscador de JavaScript basado en técnicas de ofuscación por indistinguibilidad criptográfica | Kitploit
Herramientas/GitHubGitHub/nstarke/egodeath
Análisis EstáticoAnálisis de CódigoIngeniería InversaPapers e InvestigaciónAprendizaje y Educación
GitHubnstarke/egodeath

egodeath

Un ofuscador de JavaScript basado en técnicas de ofuscación por indistinguibilidad criptográfica

Ver Repositorio
53513hace 7 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

egodeath

Este proyecto no logra ofuscación de indistinguibilidad. No debería usar este producto para proteger secretos. Existe para disuadir la ingeniería inversa, no para impedirla.

Tests

images/screenshot.png Un ofuscador de JavaScript diseñado para hacer que el código sea extremadamente difícil de leer y analizar tanto para humanos como para LLMs. Escrito en TypeScript. Implementa técnicas de investigación revisada por pares sobre ofuscación criptográfica.

Instalación

npm install
npm run build

Uso desde CLI

# Uso básico
node dist/index.js input.js > output.js

# Con presupuesto de tokens objetivo (por defecto: 2.000.000)
node dist/index.js --target-tokens 500000 input.js > output.js

# Ofuscación mínima (salida pequeña)
node dist/index.js --target-tokens 10000 input.js > output.js

# Máximo inflado (10M tokens)
node dist/index.js --target-tokens 10000000 input.js > output.js

# Usando variable de entorno
INPUT_FILE=input.js node dist/index.js > output.js

# Ayuda
node dist/index.js --help

Opciones

OpciónPredeterminadoDescripción
--target-tokens <n>2000000Tamaño de salida objetivo en tokens. Las entradas pequeñas se inflan hasta este límite. Las entradas grandes producen menos inflación para mantenerse dentro del presupuesto.
--help, -hMuestra el mensaje de ayuda.

Scripts npm

npm run build              # Compila TypeScript a dist/
npm run start              # Ejecuta el ofuscador (lee input.js)
npm run test               # Ejecuta la suite de pruebas
npm run obfuscate-package  # Ejecuta pruebas de compatibilidad contra paquetes npm

API programática

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

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

// Con opciones
const obfuscated = obfuscate(code, { targetTokens: 500000 });

Canalización de Transformaciones

El ofuscador aplica 20 transformaciones en 4 fases. Cada etapa se basa en la anterior.

Fase 1: Pre-transformaciones de Seguridad y Anti-Análisis

OrdenTransformaciónArchivoDescripción
1Trampas Anti-Debugtransforms/antiDebug.tsInyecta sentencias eval("debugger") y 10-20 bucles setInterval con intervalos de números primos (5s-600s) que activan repetidamente puntos de interrupción del depurador. Cada instancia utiliza cadenas codificadas únicas.
2Alarmas de Programa Perforadastransforms/tripwires.tsIncrusta comprobaciones ocultas que comparan hashes de parámetros con valores secretos. 5 patrones de hash (huella digital bit a bit, aritmética modular, charCodeAt, hash numérico, typeof+longitud). Desencadena corrupción silenciosa del estado, bucles ocupados o lanza excepciones en entradas secretas. [Paper 4]
3Inyección de Ruido LPNtransforms/noiseInjection.tsAñade y cancela ruido aleatorio a través de rutas divididas en cálculos aritméticos. 6 patrones: suma/resta, XOR, multiplicación/división, variable dual dividida, cadena de hash calculado, rotación de bits. Los valores intermedios carecen de sentido sin rastrear la cancelación completa. [Paper 7]

Fase 2: Pre-transformaciones Estructurales

OrdenTransformaciónArchivoDescripción
4Aplanamiento del Flujo de Controltransforms/controlFlowFlattening.tsConvierte cuerpos de funciones en máquinas de estado while(true) { switch((_s * P) % M) { ... } } con despacho aritmético modular: los valores de caso se codifican mediante (stateId * multiplier) % modulus usando parámetros primos aleatorios. [Paper 3]
5Predicados Opacostransforms/opaquePredicates.tsInyecta condiciones if que siempre se evalúan como verdadero o falso pero son matemáticamente difíciles de probar (p. ej., (x*x+x)%2===0). 15 fórmulas de predicados en categorías de aritmética modular, bit a bit y comprobación de tipos.
6Funciones Proxytransforms/proxyFunctions.tsEnruta todas las llamadas a funciones a través de dos despachadores: _fc(fn, ...args) para llamadas simples, _mc(obj, prop, ...args) para llamadas a métodos. Utiliza Function.prototype.apply capturado en una variable local para mayor resistencia.
7Agotamiento de la Ventana de Contextotransforms/contextExhaustion.tsEnvuelve expresiones en ternarios profundamente anidados con condiciones opacas, cadenas de expresiones void y relleno condicional void. Obliga a los LLMs a desperdiciar tokens de la ventana de contexto en ruido.
8Fusión de Expresiones Comatransforms/commaExpressions.tsColapsa sentencias de expresión consecutivas en expresiones coma únicas: a(); b(); return c() se convierte en return a(), b(), c().

Fase 3: Pasos de Identificadores

OrdenPasoArchivoDescripción
9Paso 1: Catálogopasses/firstPass.tsRecorre el AST y cataloga cada identificador, construyendo un mapa de globales que asigna a cada uno un nombre Unicode aleatorio de 6 a 16 caracteres extraído de 16 rangos de escritura (CJK, Hangul, Griego, Cirílico, Devanagari, Tailandés, Árabe, Katakana, etc.).
10Paso 2: Sustituirpasses/secondPass.tsReemplaza todos los nombres de identificadores con sus equivalentes Unicode ofuscados. Codifica los argumentos de require() como String.fromCharCode(...). Codifica las fuentes estáticas de import/export como literales de cadena con escape Unicode. Sustituye referencias de superClass en clases, expresiones de literales de plantilla, patrones de desestructuración.
11Paso 3: Parámetros Ficticiospasses/thirdPass.tsInyecta de 0 a 15 parámetros aleatorios no utilizados en cada declaración y expresión de función. Omite funciones con parámetros rest. Elimina todos los comentarios.

Fase 4: Post-transformaciones

Descargar herramienta