CitadelCore Wordmark

Deep Protect · Compiler-integriert · Windows C/C++

Ihr Quellcode ist Ihr Kapital. Schützen Sie ihn beim Kompilieren — nicht danach.

Ein Flag. Acht Schutzebenen. Null Umbau Ihres Projekts. CitadelCore webt Reverse-Engineering-Schutz in den Compiler selbst — statt eine Hülle um die fertige .exe zu kleben, die ein Angreifer in Minuten abzieht.

citadel --compile programm.c -o programm.exe
CitadelCore — Ein Flag. Acht Schutzebenen. Kein Umbau deines Projekts.

Der Normalfall ohne Härtung

Vier Minuten. So lange braucht jemand für Ihre Lizenzprüfung.

programm.exe in Ghidra laden. Nach dem String „Lizenz ungültig“ suchen. Ein paar Zeilen höher steht der Vergleich. Ein Byte kippen. Fertig. Ihr Aktivierungsmodell ist offen. Der Algorithmus liegt lesbar da. Der API-Schlüssel steht im Klartext im Datensegment.

Das ist kein Ausnahmefall — das ist der Normalfall bei Software, die ohne Härtung ausgeliefert wird. Packer und nachträgliche Wrapper ändern daran wenig: Sie sind eine Hülle. Hüllen zieht man ab.

CitadelCore Wappen

Acht Schutzebenen

Kein Wrapper. Schutz, der in den Code hineingewoben wird.

CitadelCore setzt eine Ebene tiefer an als klassische Packer: im Compiler, auf der LLVM-Zwischendarstellung. Es gibt keine Hülle, die ein Angreifer abziehen könnte — weil es keine Hülle gibt.

  1. 01

    Metamorphes Code-Morphing

    Der Disassembler zeigt nicht mehr, was Sie geschrieben haben.

    Äquivalente, aber unleserliche Instruktionsformen plus eingestreute Opaque Predicates. Der Kontrollfluss bleibt korrekt — die Form, die Ghidra und IDA sehen, ist nicht mehr Ihre Quelle.

  2. 02

    ChaCha20-String-Verschlüsselung

    Kein Klartext in der .exe. String-Suche läuft ins Leere.

    Globale Zeichenketten liegen als ChaCha20 (RFC-8439) vor und werden erst bei Bedarf entschlüsselt. Der klassische erste Angriffsschritt — Suche nach „Lizenz ungültig“ — findet nichts.

  3. 03

    Dynamische Speicherfluktuation

    Ein Speicherabbild erfasst nie das vollständige Programm.

    Entschlüsselter Code wird nach unvorhersagbaren Intervallen wieder verschlossen. Ein Dump zur falschen Sekunde ist unvollständig — Seitengranularität, bewusst so benannt.

  4. 04

    Timing-Modulation

    Timing-Analysen und Single-Stepping sehen Rauschen statt Signal.

    Jitter-Aufrufe an Funktionseinstiegen stören Taktmessung und Einzelschritt. Wer die Logik über Laufzeiten rekonstruieren will, bekommt Streuung statt Muster.

  5. 05

    On-Demand-Entschlüsselung

    Code liegt verschlüsselt und ohne Ausführungsrechte im Speicher.

    Entschlüsselt wird erst beim tatsächlichen Zugriff, über einen Vectored Exception Handler plus VirtualProtect. Der geschützte Code liegt nicht dauerhaft klartextlich im RAM.

  6. 06

    Anti-Tamper mit Selbstprüfung

    Ein einziges gekipptes Byte beendet den Prozess — bevor die Logik läuft.

    Fünf Debugger-Ebenen (PEB, NtGlobalFlag, DR0–DR3, zwei Kernel-Abfragen) plus CRC32-Manifest. Bei Treffer: TerminateProcess, kein bequemes exit() mit DLL-Unload-Haltepunkten.

  7. 07

    White-Box-Kryptographie

    Schlüssel existieren nie zusammenhängend im Speicher.

    Zwei mathematisch unabhängige Anteile, 64 Lookup-Tabellen, Masken-Auffrischung. Standard-Boolean-Masking — wirksam gegen naive Speicheranalyse, ehrlich ohne DCA-Beweis.

  8. 08

    Code-Virtualisierung

    Markierte Funktionen werden in Bytecode übersetzt — der Maschinencode entsteht gar nicht erst.

    Im Disassembler bleibt eine Verteilerschleife. Opcode-Zuordnung pro Build gewürfelt. Bewusst ganzzahlige Logik — Lizenzprüfungen, Schlüsselableitung. 26.698 Vergleiche gegen native Ausführung, null Abweichungen. Ohne diese Schicht stehen die anderen auf nativem Code.

Der stärkste Einzelschutz

Virtualisierung: Konstanten, die niemand mehr liest.

Ein Testprogramm mit Lizenzprüfung. Schlüsselkonstanten 0x1F2E3D4C, 0x5B6A7988,0x4D2. Ohne Virtualisierung: 3 Konstanten im Disassembler. Mit Virtualisierung:0.

__attribute__((annotate("citadel_virtualize")))
int check_license(int key_hi, int key_lo) { /* ... */ }

Die Funktion wird nicht mehr in Maschinencode übersetzt, sondern in Bytecode für einen mitgelieferten Interpreter. Opcode-Zuordnung pro Build gewürfelt. Bewusst begrenzt auf ganzzahlige Logik — genau das, woraus Lizenzprüfungen bestehen. Korrektheit: 26.698 Vergleiche gegen native Ausführung, null Abweichungen.

IDA Pro · dieselbe Binary

Wenn Ihre .exe den Kunden erreicht, liegt Ihr geistiges Eigentum auf einer fremden Festplatte.

Ein Wettbewerber braucht keine Insider. Er lädt die Datei in IDA Pro und liest, was Sie gebaut haben. Unten ist dieselbe Windows-Binary zweimal: einmal ungeschützt, einmal mit CitadelCore. Ohne Schutz sieht Hex-Rays Ihre Lizenz wie Quellcode. Mit Schutz sieht er Runtime, verschlüsselte Strings und Aufwand. Genau das wollen Sie für Lizenzlogik, Algorithmen und alles, was Ihnen den Vorsprung gibt.

IDA Pro, ungeschützte Binary: Hex-Rays zeigt Licensing Demo, ACCESS GRANTED, Invalid licence und check_license im Klartext.
So sieht ungeschützte Software aus. Hex-Rays schreibt main als klare Lizenz-Demo: Banner „Licensing Demo 1.0“, die Serial-Maske SERIAL-XXXX-XXXX-XXXX, dann parse_key undcheck_license. Direkt darunter steht ACCESS GRANTED im Klartext, dazu „Invalid licence.“ und „Malformed serial.“. Im Graph daneben dieselben Namen plus unseal. Wer Ihre .exe hat, braucht keine Dokumentation. Er hat sie schon.
IDA Pro Graph derselben Binary nach CitadelCore: citadel_rt_debugger_present, Tamper-Response, Jitter, decrypt_once, .str.enc.
Dieselbe Binary nach CitadelCore. Statt der Lizenzstrings sieht IDA .str.enc,.str.dec und .str.nonce. Der Graph ist ein Geflecht auscitadel_rt_debugger_present, citadel_rt_tamper_response, Checksum, Jitter undcitadel_rt_decrypt_once plus White-Box-Tabellen. Ihre if/else-Kette ist weg. Was bleibt, ist Arbeit für den Angreifer — nicht eine Gebrauchsanweisung für Ihr Produkt.
IDA Pro Hex-Rays derselben geschützten main: Debugger-Check, Checksum, Jitter, decrypt_once statt ACCESS GRANTED.
Hex-Rays auf der geschützten main: zuerst der Debugger-Check, bei Treffercitadel_rt_tamper_response, dann Selbstprüfung, Jitter undcitadel_rt_decrypt_once. ACCESS GRANTED kommt als String nicht mehr vor. Das ist der Preis, den Sie kaufen: geistiges Eigentum, das in IDA nicht mehr wie Ihre Quelle aussieht.

Warum CitadelCore

Vorteile, die Sie sofort spüren — nicht nur im Datenblatt.

Fünf Ebenen Debugger-Erkennung — nicht eine

Die meisten Lösungen rufen IsDebuggerPresent() auf. Das hebelt jedes Anti-Anti-Debug-Plugin in Sekunden aus. CitadelCore prüft zusätzlich PEB->BeingDebugged direkt aus dem Speicher,PEB->NtGlobalFlag, Hardware-Breakpoints in DR0–DR3 und zwei Kernel-Abfragen überNtQueryInformationProcess — dynamisch geladen, damit sie nicht in der Importtabelle auffallen.

Reproduzierbare Builds — trotz Härtung

CitadelCore ist standardmäßig bitgenau reproduzierbar. Mit CITADEL_SEED bekommt jedes Release eigene Schlüssel und ein eigenes Härtungsmuster. Wer maximale Streuung will, schaltet mitCITADEL_RANDOM=1 um.

Sie steuern, was geschützt wird

citadel_protect macht die Lizenzprüfung garantiert selbstprüfend.citadel_hot nimmt Hot-Path-Funktionen aus.citadel_virtualize übersetzt ganzzahlige Logik in Bytecode. Zwei Millionen Aufrufe: praktisch Baseline-Niveau, während der Rest voll gehärtet bleibt.

In Minuten im Windows-Workflow

Setup starten, Selbsttest abwarten, dann citadel --compile. Optional--level fast|balanced|max und --report. CMake, Visual Studio oder CI — Ihre Pipeline merkt davon nichts, außer dass die Artefakte gehärtet sind.

citadel --compile app.c -o app.exe --level max --report

__attribute__((annotate("citadel_hot")))         // Hot Path ausnehmen
__attribute__((annotate("citadel_protect")))     // garantiert schützen
__attribute__((annotate("citadel_virtualize")))  // Bytecode-VM

Wo es sich sofort auszahlt

Überall, wo Ihre .exe auf fremden Festplatten landet.

  • Lizenz- und Aktivierungslogik. Der klassische Angriffspunkt. citadel_protect und citadel_virtualize machen genau diese Funktionen undurchsichtig.
  • Proprietäre Algorithmen. Handelsstrategien, Bildverarbeitung, Simulationskerne — Wettbewerbsvorteile, die sonst im Binärcode stehen.
  • Eingebettete Geheimnisse. API-Schlüssel und Zertifikate, geschützt durch White-Box-Aufteilung statt Klartext im Datensegment.
  • Desktop, Plugins, SDKs, On-Premise. Alles, was den Kunden erreicht.

Was wir nicht behaupten

Kein „unknackbar“. Das halten wir für ein Kaufargument.

Gegen einen entschlossenen Angreifer mit Zeit und Werkzeug ist jede Softwareschutzlösung letztlich überwindbar. CitadelCore erhöht den Aufwand erheblich — es macht ihn nicht unendlich. Die White-Box-Krypto ist Standard-Boolean-Masking, kein bewiesen DCA-resistentes Verfahren. Kernfunktion 3 und 5 arbeiten auf Sektionsebene mit Seitengranularität. Braucht Quellcode — fertige Binaries härten wir nicht nachträglich.

Nach der Installation prüfen Sie selbst: citadel --test — Ihre Maschine, Ihre Zahlen.

AetherSec · Ausblick

Wir forschen weiter. Bessere Versionen folgen.

AetherSec wird den Schutz fortlaufend schärfen und neue CitadelCore-Versionen ausliefern. Geplant sindplattformübergreifender Schutz, graphische Oberflächen und dereinfachere Einsatz in komplexeren Softwareprojekten — ohne dass der Kern weichgespült wird: geistiges Eigentum bleibt das, was in der Binary nicht mehr lesbar sein soll.

CitadelCore Logo

Windows-Edition · Deep Protect

Acht Ebenen. Einmal 74,99€.

74,99€

Einmaliger Kauf. Compiler-integrierte Härtung für Ihre Windows-C/C++-Projekte.

Kaufen