Opaque-Predicate-Injektor
Füge immer wahre und immer falsche opake Prädikate in Quellcode ein, um statische Analysewerkzeuge und menschliche Leser zu verwirren. Unterstützt 6 Prädikatstypen und 12 Programmiersprachen mit konfigurierbarer Injektionsdichte. Die gesamte Verarbeitung ist lokal und privat.
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.
Warum unseren Opaque-Predicate-Injektor verwenden?
- Mehrere Prädikatstypen: Wähle aus sechs verschiedenen opaken Prädikatstypen: invariante Arithmetik (immer wahre/falsche Ausdrücke), XOR- und Bittricks, Typkonvertierungs-Prädikate, flusssensitive Invarianten, selbstreferenzielle Prüfungen und Dead-Code-Prädikate. Jeder Typ nutzt andere mathematische Eigenschaften, die einer musterbasierten Erkennung widerstehen.
- Mehrere Ausgabesprachen: Erzeuge opake Prädikate für JavaScript, Python, TypeScript, Java, C, C++, C#, Go, Rust, PHP, Ruby und Swift. Der Injektor passt die Prädikatsyntax an die Operatoren und Typsysteme jeder Sprache an und bewahrt dabei die mathematische Invariante, die das Prädikat opak macht.
- Konfigurierbare Injektionsdichte: Steuere, wie viele opake Prädikate eingefügt werden: leicht (1-2 Prädikate), mittel (3-5 Prädikate) oder intensiv (6-10+ Prädikate). Erhöhe die Dichte für stärkere Obfuskierung oder halte sie gering, um Codeaufblähung zu minimieren. Die Prädikate werden zufällig im Code verteilt.
- Lokale und private Verarbeitung: Die gesamte Prädikatserzeugung und Codetransformation erfolgt vollständig in deinem Browser. Dein Quellcode verlässt nie dein Gerät. Keine API-Aufrufe, keine Analysen, keine Datenerfassung – vollständige Privatsphäre für deinen proprietären Code. Keine Anmeldung oder Konto erforderlich.
Was ist ein opakes Prädikat?
Ein opakes Prädikat ist ein bedingter Ausdruck im Code mit bekanntem Ergebnis (immer wahr oder immer falsch), der aber wie eine legitime Laufzeitbedingung aussieht. Anders als normale Bedingungen sind opake Prädikate so gestaltet, dass statische Analysewerkzeuge sie zur Kompilierzeit nur schwer auswerten können. In der Ganzzahlarithmetik ist der Ausdruck beispielsweise immer wahr (da das Quadrat jeder ganzen Zahl nicht negativ ist), doch ein naiver Dekompiler erkennt diese Invariante möglicherweise nicht. Opake Prädikate sind ein grundlegender Baustein der Code-Obfuskierung – sie fügen tote Codepfade hinzu, die nie ausgeführt werden (immer falsche Prädikate), oder stellen sicher, dass bestimmte Blöcke immer ausgeführt werden (immer wahre Prädikate), und verwirren damit sowohl menschliche Leser als auch automatisierte Analysewerkzeuge.
So funktioniert der Opaque-Predicate-Injektor
- Eingabeanalyse: Das Tool akzeptiert Quellcode als Eingabe. Der Code wird als Klartext analysiert, um mögliche Injektionsstellen zu finden: vor Funktionsdefinitionen, vor if/else-Blöcken, in Funktionskörpern an Anweisungsgrenzen und am Ende von Funktionen. Anweisungsgrenzen werden an Zeilenumbrüchen und Semikolons erkannt.
- Prädikatsauswahl: Basierend auf dem gewählten Prädikatstyp und der Zielsprache erzeugt das Tool opake Prädikatsausdrücke mit sprachspezifischer Syntax. Für JavaScript könnte das if ((a + a) / 2 === a) sein (immer wahr für Zahlen). Für Python könnten Typkonvertierungstricks wie if (True == 1) verwendet werden (immer wahr).
- Variablenerzeugung: Damit die Prädikate legitim wirken, erzeugt der Injektor zufällige Variablennamen, die dem Programmierstil der Eingabesprache entsprechen. Variablen werden mit passenden Typen deklariert und mit Werten initialisiert, die das Prädikat korrekt auswerten lassen.
- Injektion: Die Prädikate werden an zufälligen gültigen Stellen im Code eingefügt. Jedes Prädikat umschließt einen Codeblock (bei immer wahr) oder fügt einen Dead-Code-Block ein (bei immer falsch). Der Injektor wendet eine konfigurierbare Dichte an, um zu steuern, wie viele Prädikate hinzugefügt werden.
Arten opaker Prädikate
- Invariante Arithmetik: Nutzt mathematische Eigenschaften, die immer gelten. Beispiele: x * 0 === 0 (immer wahr), x * x >= 0 (immer wahr für ganze Zahlen), y - y === 0 (immer wahr). Sie nutzen algebraische Invarianten aus.
- XOR- und Bittricks: Nutzt Eigenschaften bitweiser Operationen. Beispiele: x ^ x === 0 (immer wahr für jedes x), (x & ~x) === 0 (immer wahr), x | x === x (immer wahr). Schwer statisch zu analysieren.
- Typkonvertierungs-Prädikate: Nutzen implizite Typumwandlungen aus. Beispiele: 1 + 1 !== "11" (immer wahr – numerische Addition gegenüber String-Verkettung), [] == false (in JS immer wahr). Sprachspezifisch und sehr verwirrend.
- Flusssensitive Invarianten: Nutzt Eigenschaften, die an bestimmten Codestellen gelten. Beispiel: typeof x === typeof x (immer wahr), x === x (immer wahr außer bei NaN). Einfach, aber wirksam.
- Dead-Code-Prädikate: Immer falsche Bedingungen, die Code umschließen, der nie ausgeführt wird. Erzeugen unerreichbare Blöcke, die die Kontrollflussanalyse verwirren. Beispiel: if (false && complexCondition), wenn der Compiler die immer falsche Bedingung nicht leicht beweisen kann.
Datenschutz und Sicherheit
Dieses Tool läuft vollständig in deinem Browser mit clientseitigem JavaScript. Dein Quellcode, die erzeugten Prädikate und die obfuskierte Ausgabe werden niemals auf einen Server hochgeladen, in einer Datenbank gespeichert oder über das Netzwerk übertragen. Die gesamte Prädikatserzeugung, Codeanalyse, Variablenumbenennung und Ausgabeformatierung läuft lokal auf deinem Gerät. Es gibt keine API-Aufrufe, kein Analyse-Tracking, keine Cookies und keine Datenerfassung jeglicher Art. Dadurch ist es völlig sicher, um proprietären Code, lizenzierte Software oder sensible Algorithmen zu obfuskieren.
Häufig gestellte Fragen
Ein opakes Prädikat ist ein bedingter Ausdruck, der immer denselben Wert ergibt (immer wahr oder immer falsch), aber wie eine legitime Laufzeitbedingung aussieht. Beispiele sind `x * 0 === 0` (immer wahr) oder `x !== x` (immer falsch für Zahlen). Sie werden eingesetzt, um statische Analysewerkzeuge und menschliche Leser zu verwirren.
Sechs Typen: invariante Arithmetik (z. B. `x * 0 === 0`), XOR- und Bittricks (z. B. `x ^ x === 0`), Typkonvertierung (z. B. `[] == false`), flusssensitive Invarianten (z. B. `typeof x === typeof x`), Dead-Code-Prädikate (immer falsch) und Kombiniert (mischt alle Typen für maximale Komplexität).
JavaScript, TypeScript, Python, Java, C, C++, C#, Go, Rust, PHP, Ruby und Swift. Die Prädikate werden mit passenden Operatoren, Typsystemen und Syntaxkonventionen an jede Sprache angepasst.
Nein. Immer wahre Prädikate stellen sicher, dass der umschlossene Code immer ausgeführt wird. Immer falsche Prädikate umschließen unerreichbaren toten Code. Programmlogik und -verhalten bleiben vollständig unverändert. Nur die Codegröße nimmt zu, und der Aufwand zur Laufzeit durch die Auswertung der Bedingungen ist minimal.
Einfache Dekompiler können die meisten opaken Prädikate nicht erkennen. Fortgeschrittene symbolische Ausführung kann einfache arithmetische Prädikate auswerten. Die Kombination mehrerer Prädikatstypen bietet stärkeren Schutz als ein einzelner Typ.
Absolut. Der Injektor läuft vollständig in deinem Browser. Dein Quellcode, die erzeugten Prädikate und die obfuskierte Ausgabe werden niemals auf einen Server hochgeladen oder über das Netzwerk übertragen. Die gesamte Verarbeitung ist lokal – ohne API-Aufrufe oder Datenerfassung.
Leichte Dichte fügt 1-2 Prädikate hinzu (~10-30 Zeilen). Mittel fügt 3-5 Prädikate hinzu (~30-80 Zeilen). Intensiv fügt 6-10+ Prädikate hinzu (~80-200+ Zeilen). Jedes Prädikat fügt typischerweise 2-5 Zeilen hinzu, einschließlich Variablendeklarationen.
Ja – 100 % kostenlos, ohne Anmeldung, ohne Konto und ohne Nutzungsgrenzen. Obfuskiere so viel Code wie nötig. Keine Premium-Tarife, versteckten Kosten oder Ratenlimits. Dein Code verlässt nie dein Gerät.