
Führe erhaltenen ARM64-Code in Node oder einem Browser aus; inspiziere dekodierte Bildpixel und initialisierten Speicher.
Führe erhaltenen nativen Code aus. Öffne seinen initialisierten Zustand erneut. Capsulith verpackt ausgewählte ARM64-Funktionen, ihre Aufrufverträge und den von ihnen verwalteten Speicher für Node oder den Browser. Behalte die ursprünglichen Anweisungen bei und setze ein initialisiertes Objekt in einem frischen Worker fort, ohne die ursprüngliche Anwendung.
Ein Legacy-Decoder, eine Prüfsumme oder eine isolierte Binärroutine kann zu einer kleinen wiederverwendbaren API werden. Capsulith zeigt, welche Bytes und Abhängigkeiten mit ihr übertragen werden, wo die Ausführung liest und schreibt und warum eine Funktion nicht extrahiert werden kann, wenn sie nicht unterstützten Zustand benötigt.
Öffne die native Image-Workbench. Wähle Load & run example für das vorbereitete QOI-Artwork oder bringe ein kleines PNG- oder QOI-Bild mit. Der extrahierte ursprüngliche QOI-Encoder schreibt eine Datei, ein separater nativer Decoder gibt deren Pixel zurück, und du kannst einzelne RGBA-Bytes inspizieren. Erhalte diese initialisierte Pixel-Zuweisung, schließe den Worker und stelle sie dann in einem frischen wieder her und gib sie frei. Kein Konto, kein Upload-Server, keine ursprüngliche Binärdatei und kein Compiler sind nötig, um die öffentliche Workbench auszuführen.
PNG verwendet vom Browser dekodiertes RGBA als explizite Vergleichsbasis; bei QOI-only-Eingabe gibt es keinen unabhängigen Vergleich mit Quellpixeln. Bilder sind auf 256 Pixel pro Dimension und 1 MiB begrenzt. Dies ist eine Demonstration einer vorbereiteten nativen Komponente mit bekannter Quelle, kein neuer Codec und keine universelle Formatwiederherstellung. Ursprünglicher QOI-Quellcode, Verträge, unabhängige native/FFmpeg-Kontrollen und eigenständige Node-Befehle.

Probiere die schlüssellose Browser-Objekt-Demo aus und drücke Run lifecycle. Sie führt die tatsächlich extrahierten Anweisungen lokal aus; sie ruft keinen Server auf, um Ergebnisse zu erzeugen.
Lade das Python-Wheel aus dem Release herunter und dann:
python3 -m pip install capsulith-0.3.0-py3-none-any.whl
capsulith studio
Öffne http://127.0.0.1:6359. Die Funktion Studio behält den LZ4-Decoder und die xxHash-Spezimina bei. Öffne Object studio, wähle Open original LZ4 example und dann Run lifecycle, um einen tatsächlich kompilierten Stream zu erstellen, zu komprimieren, ein Dictionary zu speichern, einen Checkpoint zu setzen, wiederherzustellen, fortzusetzen und freizugeben. Es ist kein API-Schlüssel und kein kostenpflichtiger Dienst erforderlich. Für die Extraktion werden Python 3.10+ und Capstone benötigt; der Browser führt über den mitgelieferten WebAssembly-Emulator aus. Node 20+ wird nur für die CLI oder exportierte Node-Aufrufe benötigt.
Das Studio akzeptiert eine ARM64-Mach-O-Dylib, inventarisiert ihre Funktionen, extrahiert eine ausgewählte Wurzel und ermöglicht es dir, Puffer, Registerargumente, skalare Eingaben und Rückgabetyp zu bearbeiten. Die Abhängigkeitsansicht verbindet Helfer/Importe mit tatsächlichen Aufrufstellen und Originalanweisungen. Ausführungsereignisse verlinken auf den benannten Speicherbereich und den Originalcode. Gestoppte Ausführungen zeigen Teilbelege ohne die Behauptung eines erfolgreichen Ergebnisses.
Export portable capsule lädt die aktuellen Bytes, den Vertrag und die Eingaben, Node-/Browser-Runner, das gepinnte Backend, den vollständigen Backend-Quellcode/Build-Skripte und Lizenzen herunter. Entpacke und führe node run.cjs aus, oder stelle diesen Ordner über HTTP bereit und öffne seinen unabhängigen Browser-Runner. Python, Capstone und die Original-Binärdatei sind für diese Aufrufe nicht erforderlich. Die exportierte API akzeptiert unterschiedliche Eingaben, unterstützt Abbruch und erzwingt die deklarierten Grenzen.
Original LZ4-Methoden, wiederhergestellter Dictionary-Zugriff und exakter nativer Vergleich im Objekt-Studio
Das Objekt-Studio importiert extrahiertes Modul-JSON oder liest dein eigenes ARM64-Mach-O-Artefakt mit explizit deklarierten benannten Methoden. Inspiziere die tatsächlichen Wurzeln, Chunks und Abhängigkeiten; weise benannte Aufrufer-Puffer aus Hex oder einer lokalen Datei zu; wähle eine Methode und gib typisierte Bereichsreferenzen oder Ganzzahlen an. Die Speicherkarte zeigt echte eigene Bereiche und Initialisierung, mit undurchsichtigen Rohbytes statt geratener Felder. Rückgaben, Zugriffsbereiche, Zähler und begrenzte Ereignisse stammen aus Originalanweisungen.
Speichere einen Checkpoint vor einer Operation, die du möglicherweise rückgängig machen musst. Das Wiederherstellen eines passenden Moduls bewahrt Gastadressen und Bereichs-IDs, erzeugt aber eine frische Instanzidentität; binde Referenzen über die Bereichs-ID neu. Das Bearbeiten von Eingaben widerruft veraltete Belege, und ein Fehler oder Abbruch erfordert einen vorherigen Checkpoint oder eine neue Instanz. Natives Freigeben und das Freigeben von Aufrufer-Puffern sind getrennte explizite Lebenszyklusoperationen. Die Laufzeit errät niemals, ob native Zeiger noch auf einen Puffer verweisen.
capsulith module examples/lz4/liblz4.dylib \
--methods examples/native-objects/methods.json --out stream.module.json
node runtime/object-cli.cjs examples/native-objects/start.json \
--module stream.module.json --checkpoint-out first.checkpoint.json
# The first Node process has ended. This command opens a fresh worker.
node runtime/object-cli.cjs examples/native-objects/continue.json \
--module stream.module.json --checkpoint first.checkpoint.json
capsulith export-module stream.module.json \
--checkpoint first.checkpoint.json --out stream-object.zip
Wählen Sie neue Ausgabenamen; die Befehle zum Exportieren von Modulen, Checkpoints und Objekten weigern sich, vorhandene Dateien zu überschreiben. Die mitgelieferten Operationsprogramme sind spezifisch für den dokumentierten LZ4-Lebenszyklus. Generische Module benötigen ihre eigenen, vom Aufrufer deklarierten Methoden und Operationsprogramme.
Ein Objektexport enthält das ursprüngliche Instruktionsmodul, optional aufbewahrte Checkpoint-Bytes, unabhängige Node-/Browser-Runner, das Objekt-Studio, die Runtime und die entsprechenden Backend-Quell-/Build-Skripte, Lizenzen sowie ein Dateimanifest mit Bytes, SHA256 und Berechtigungen. Stellen Sie den Ordner bereit und öffnen Sie index.html, um den gebündelten Checkpoint ohne API-Endpunkte wiederherzustellen, oder führen Sie node run.cjs your-operations.json --checkpoint checkpoint.json aus. Original-Binärdateien, Python-Pakete und Compiler sind für die Ausführung nicht erforderlich. Ein Checkpoint enthält aufbewahrte Aufrufer-Bytes; prüfen Sie diese, bevor Sie ihn weitergeben. Siehe die Objekt-API und das Operationsformat und das native Beispiel.
capsulith inspect legacy.dylib
capsulith extract legacy.dylib --root _decode \
--contract decode-contract.json --out decode.capsule.json
capsulith run decode.capsule.json --inputs input.json
capsulith export decode.capsule.json --inputs input.json --out decoder.zip