Aller au contenu
Aback Tools Logo

Injecteur de prédicats opaques

Injectez des prédicats opaques toujours vrais et toujours faux dans du code source pour compliquer l'analyse statique et la lecture humaine. Prend en charge 6 types de prédicats et 12 langages de programmation avec une densité d'injection configurable. Tout le traitement est local et privé.

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.

Pourquoi utiliser notre injecteur de prédicats opaques ?

  • Plusieurs types de prédicats : choisissez parmi six types distincts de prédicats opaques : arithmétique invariant (expressions toujours vraies/fausses), astuces XOR et binaires, prédicats de coercition de type, invariants sensibles au flux, vérifications autoréférentielles et prédicats de code mort. Chaque type exploite des propriétés mathématiques différentes qui résistent à la détection par motifs.
  • Plusieurs langages de sortie : générez des prédicats opaques pour JavaScript, Python, TypeScript, Java, C, C++, C#, Go, Rust, PHP, Ruby et Swift. L'injecteur adapte la syntaxe des prédicats aux opérateurs et au système de types de chaque langage tout en préservant l'invariant mathématique qui rend le prédicat opaque.
  • Densité d'injection configurable : contrôlez le nombre de prédicats opaques à injecter : légère (1-2 prédicats), moyenne (3-5 prédicats) ou intense (6-10+ prédicats). Augmentez la densité pour une obfuscation plus forte ou restez léger pour limiter le gonflement du code. Les prédicats sont répartis aléatoirement dans le code.
  • Traitement local et privé : toute la génération de prédicats et la transformation du code se font entièrement dans votre navigateur. Votre code source ne quitte jamais votre appareil. Aucun appel d'API, aucune analyse, aucune collecte de données — confidentialité totale pour votre code propriétaire. Sans inscription ni compte.

Qu'est-ce qu'un prédicat opaque ?

Un prédicat opaque est une expression conditionnelle dans le code dont le résultat est connu (toujours vrai ou toujours faux) mais qui semble être une condition d'exécution légitime. Contrairement aux conditionnelles classiques, les prédicats opaques sont conçus pour être difficiles à évaluer à la compilation par les outils d'analyse statique. Par exemple, en arithmétique entière, l'expression est toujours vraie (le carré de tout entier étant positif ou nul), mais un décompilateur naïf peut ne pas reconnaître cet invariant. Les prédicats opaques sont un élément fondamental de l'obfuscation de code : ils ajoutent des chemins de code mort qui ne s'exécutent jamais (prédicats toujours faux) ou garantissent que certains blocs s'exécutent toujours (prédicats toujours vrais), trompant à la fois les lecteurs humains et les outils d'analyse automatisés.

Comment fonctionne l'injecteur de prédicats opaques

  1. Analyse de l'entrée : l'outil accepte du code source en entrée. Le code est analysé comme du texte brut pour identifier les points d'injection possibles : avant les définitions de fonctions, avant les blocs if/else, dans le corps des fonctions aux frontières d'instructions, et à la fin des fonctions. Les frontières d'instructions sont repérées par les sauts de ligne et les points-virgules.
  2. Sélection du prédicat : selon le type de prédicat et le langage cible choisis, l'outil génère des expressions de prédicat opaque avec la syntaxe propre au langage. Pour JavaScript, cela peut être if ((a + a) / 2 === a) (toujours vrai pour les nombres). Pour Python, cela peut utiliser des astuces de coercition comme if (True == 1) (toujours vrai).
  3. Génération de variables : pour que les prédicats paraissent légitimes, l'injecteur génère des noms de variables aléatoires correspondant au style de codage du langage d'entrée. Les variables sont déclarées avec les types appropriés et initialisées avec des valeurs qui font évaluer le prédicat correctement.
  4. Injection : les prédicats sont injectés à des emplacements valides aléatoires dans le code. Chaque prédicat enveloppe un bloc de code (pour les toujours vrais) ou insère un bloc de code mort (pour les toujours faux). L'injecteur applique une densité configurable pour contrôler le nombre de prédicats ajoutés.

Types de prédicats opaques

  • Arithmétique invariant : utilise des propriétés mathématiques toujours vérifiées. Exemples : x * 0 === 0 (toujours vrai), x * x >= 0 (toujours vrai pour les entiers), y - y === 0 (toujours vrai). Ils exploitent des invariants algébriques.
  • Astuces XOR et binaires : utilise les propriétés des opérations bit à bit. Exemples : x ^ x === 0 (toujours vrai pour tout x), (x & ~x) === 0 (toujours vrai), x | x === x (toujours vrai). Difficiles à analyser statiquement.
  • Prédicats de coercition de type : exploitent les conversions implicites de type. Exemples : 1 + 1 !== "11" (toujours vrai — addition numérique contre concaténation de chaînes), [] == false (toujours vrai en JS). Propres au langage et très déroutants.
  • Invariants sensibles au flux : utilisent des propriétés valables à des points précis du code. Exemple : typeof x === typeof x (toujours vrai), x === x (toujours vrai sauf pour NaN). Simples mais efficaces.
  • Prédicats de code mort : conditions toujours fausses enveloppant du code qui ne s'exécute jamais. Créent des blocs inatteignables qui compliquent l'analyse du flux de contrôle. Exemple : if (false && complexCondition) où le compilateur ne peut pas facilement prouver que la condition est toujours fausse.

Confidentialité et sécurité

Cet outil s'exécute entièrement dans votre navigateur avec du JavaScript côté client. Votre code source, les prédicats générés et la sortie obfusquée ne sont jamais envoyés à un serveur, stockés dans une base de données ni transmis sur le réseau. Toute la génération de prédicats, l'analyse du code, le renommage des variables et le formatage de la sortie s'exécutent localement sur votre appareil. Aucun appel d'API, suivi analytique, cookie ou collecte de données d'aucune sorte. Cela le rend parfaitement sûr pour obfusquer du code propriétaire, des logiciels sous licence ou des algorithmes sensibles.

Foire aux questions

Un prédicat opaque est une expression conditionnelle qui s'évalue toujours à la même valeur (toujours vraie ou toujours fausse) mais qui semble être une condition d'exécution légitime. Exemples : `x * 0 === 0` (toujours vrai) ou `x !== x` (toujours faux pour les nombres). Ils servent à compliquer le travail des outils d'analyse statique et des lecteurs humains.

Six types : arithmétique invariant (ex. `x * 0 === 0`), astuces XOR et binaires (ex. `x ^ x === 0`), coercition de type (ex. `[] == false`), invariants sensibles au flux (ex. `typeof x === typeof x`), prédicats de code mort (toujours faux) et combiné (mélange tous les types pour une complexité maximale).

JavaScript, TypeScript, Python, Java, C, C++, C#, Go, Rust, PHP, Ruby et Swift. Les prédicats sont adaptés à chaque langage avec les opérateurs, systèmes de types et conventions de syntaxe appropriés.

Non. Les prédicats toujours vrais garantissent que le code enveloppé s'exécute toujours. Les prédicats toujours faux enveloppent du code mort inatteignable. La logique et le comportement du programme restent totalement inchangés. Seule la taille du code augmente, avec une surcharge d'exécution minimale liée à l'évaluation des conditions.

Les décompilateurs basiques ne détectent pas la plupart des prédicats opaques. L'exécution symbolique avancée peut évaluer des prédicats arithmétiques simples. Combiner plusieurs types de prédicats offre une protection plus forte que n'importe quel type isolé.

Absolument. L'injecteur s'exécute entièrement dans votre navigateur. Votre code source, les prédicats générés et la sortie obfusquée ne sont jamais envoyés à un serveur ni transmis sur le réseau. Tout le traitement est local, sans appel d'API ni collecte de données.

La densité légère ajoute 1 à 2 prédicats (~10-30 lignes). La moyenne ajoute 3 à 5 prédicats (~30-80 lignes). L'intense ajoute 6 à 10+ prédicats (~80-200+ lignes). Chaque prédicat ajoute généralement 2 à 5 lignes, déclarations de variables comprises.

Oui — 100 % gratuit, sans inscription, sans compte et sans limite d'utilisation. Obfusquez autant de code que nécessaire. Aucune offre premium, frais caché ou limitation de débit. Votre code ne quitte jamais votre appareil.