
Node 또는 브라우저에서 보존된 ARM64 코드를 실행하고, 디코딩된 이미지 픽셀과 초기화된 메모리를 검사합니다.
보존된 네이티브 코드를 실행하세요. 초기화된 상태를 다시 여세요. Capsulith는 선택된 ARM64 함수, 그 호출 규약, 그리고 소유 메모리를 Node 또는 브라우저용으로 패키징합니다. 원본 명령어를 유지하고, 원본 애플리케이션 없이 새로운 워커에서 초기화된 객체를 재개합니다.
레거시 디코더, 체크섬 또는 격리된 바이너리 루틴은 작고 재사용 가능한 API가 될 수 있습니다. Capsulith는 어떤 바이트와 의존성이 함께 이동하는지, 실행이 어디서 읽고 쓰는지, 그리고 기능이 지원되지 않는 상태를 요구할 때 왜 추출할 수 없는지를 보여줍니다.
네이티브 이미지 워크벤치 열기. 준비된 QOI 아트워크의 경우 Load & run example을 선택하거나, 작은 PNG 또는 QOI 이미지를 가져오세요. 추출된 원본 QOI 인코더가 파일을 작성하고, 별도의 네이티브 디코더가 그 픽셀을 반환하며, 개별 RGBA 바이트를 검사할 수 있습니다. 초기화된 픽셀 할당을 보존하고, 워커를 닫은 다음, 새로운 워커에서 복원하고 해제하세요. 공개 워크벤치를 실행하는 데 계정, 업로드 서버, 원본 바이너리 또는 컴파일러가 필요하지 않습니다.
PNG는 브라우저에서 디코딩된 RGBA를 명시적 비교 기준으로 사용합니다. QOI 전용 입력에는 독립적인 소스 픽셀 비교가 없습니다. 이미지는 차원당 256픽셀, 1 MiB로 제한됩니다. 이는 알려진 소스로 준비된 네이티브 컴포넌트 시연이며, 새로운 코덱이나 범용 포맷 복구가 아닙니다. 원본 QOI 소스, 계약, 독립적인 네이티브/FFmpeg 대조 및 독립 실행형 Node 명령.

키가 필요 없는 브라우저 객체 데모를 사용해 보고 Run lifecycle을 누르세요. 실제 추출된 명령어를 로컬에서 실행하며, 결과를 생성하기 위해 서버를 호출하지 않습니다.
릴리스에서 Python wheel을 다운로드한 다음:
python3 -m pip install capsulith-0.3.0-py3-none-any.whl
capsulith studio
http://127.0.0.1:6359를 여세요. Studio 기능은 LZ4 디코더와 xxHash 표본을 유지합니다. Object studio를 열고 Open original LZ4 example을 선택한 다음 Run lifecycle을 실행하여 실제 컴파일된 스트림을 생성, 압축, 사전 저장, 체크포인트, 복원, 계속 및 해제하세요. API 키나 유료 서비스는 필요하지 않습니다. 추출에는 Python 3.10+와 Capstone이 필요하며, 브라우저는 포함된 WebAssembly 에뮬레이터를 통해 실행됩니다. Node 20+는 CLI 또는 내보낸 Node 호출에만 필요합니다.
Studio는 ARM64 Mach-O dylib를 받아들이고, 그 함수들을 목록화하며, 선택된 루트를 추출하고, 버퍼, 레지스터 인수, 스칼라 입력 및 반환 타입을 편집할 수 있게 합니다. 의존성 뷰는 헬퍼/임포트를 실제 호출 지점 및 원본 명령어에 연결합니다. 실행 이벤트는 명명된 메모리 영역과 원본 코드에 연결됩니다. 중지된 실행은 성공 결과 주장 없이 부분적 증거를 보여줍니다.
Export portable capsule은 현재 바이트, 계약 및 입력, Node/브라우저 러너, 고정된 백엔드, 전체 백엔드 소스/빌드 스크립트 및 라이선스를 다운로드합니다. 압축을 풀고 node run.cjs를 실행하거나, 해당 폴더를 HTTP로 제공하고 독립적인 브라우저 러너를 여세요. 해당 호출에는 Python, Capstone 및 원본 바이너리가 필요하지 않습니다. 내보낸 API는 다른 입력을 받아들이고, 취소를 지원하며, 선언된 제한을 적용합니다.
Original LZ4 methods, restored dictionary access and exact native comparison in the object Studio
객체 Studio는 추출된 모듈 JSON을 가져오거나, 명시적으로 선언된 명명된 메서드가 있는 소유한 ARM64 Mach-O 아티팩트를 읽습니다. 실제 루트, 청크 및 의존성을 검사하고, 16진수 또는 로컬 파일에서 명명된 호출자 버퍼를 할당하며, 메서드를 선택하고 타입이 지정된 영역 참조 또는 정수를 제공하세요. 메모리 맵은 추측된 필드가 아닌 불투명한 원시 바이트와 함께 실제 소유 영역 및 초기화를 보여줍니다. 반환값, 접근 범위, 카운터 및 제한된 이벤트는 원본 명령어에서 나옵니다.
되돌려야 할 수 있는 작업 전에 체크포인트를 저장하세요. 일치하는 모듈을 복원하면 게스트 주소와 영역 ID가 유지되지만 새로운 인스턴스 아이덴티티가 생성됩니다. 영역 ID로 참조를 다시 바인딩하세요. 입력을 편집하면 오래된 증거가 무효화되며, 폴트 또는 취소에는 사전 체크포인트 또는 새 인스턴스가 필요합니다. 네이티브 해제와 호출자 버퍼 릴리스는 별개의 명시적 라이프사이클 작업입니다. 런타임은 네이티브 포인터가 여전히 버퍼를 가리키는지 절대 추측하지 않습니다.
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
새 출력 이름을 선택하세요. 모듈, 체크포인트 및 객체 내보내기 명령은 기존 파일을 덮어쓰지 않습니다. 제공된 작업 프로그램은 문서화된 LZ4 수명 주기에 특화되어 있습니다. 일반 모듈에는 자체적으로 선언된 메서드와 작업 프로그램이 필요합니다.
객체 내보내기에는 원본 명령 모듈, 선택적으로 보존된 체크포인트 바이트, 독립적인 Node/브라우저 러너, 객체 Studio, 런타임 및 해당 백엔드 소스/빌드 스크립트, 라이선스, 그리고 바이트, SHA256 및 권한이 포함된 파일 매니페스트가 포함됩니다. 폴더를 서빙하고 index.html을 열어 API 엔드포인트 없이 번들된 체크포인트를 복원하거나, node run.cjs your-operations.json --checkpoint checkpoint.json을 실행하세요. 실행에는 원본 바이너리, Python 패키지 및 컴파일러가 필요하지 않습니다. 체크포인트에는 보존된 호출자 바이트가 포함되어 있으므로 공유하기 전에 검사하세요. 객체 API 및 작업 형식과 네이티브 예제를 참조하세요.
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
루트 선택은 검증된 함수 시작 주소도 허용합니다(예: --root 0x440). 내보낸 심볼은 프로토타입이 아닙니다. 실제 호출 규약은 사용자가 제공하며, Capsulith는 ABI(인자와 반환 값을 레지스터에 배치하는 규칙)를 추론하지 않습니다. 런타임 가이드는 버퍼, 32/64비트 정수, 메모리 임포트 및 제한을 정의합니다. examples/xxhash/contract.json은 완전한 3인자 예제입니다.
LC_FUNCTION_STARTS.__const/__cstring 유지, 명시적 경계가 있는 memmove, memcpy 및 memset 임포트.malloc, bzero 및 free 메모리 모델, 초기화된 소유 힙 바이트 및 메서드 경계의 코드 바운드 체크포인트를 지원합니다. 힙 레이아웃이나 포인터 재작성은 추론되지 않습니다.간접 제어 흐름, 쓰기 가능한 정적 상태, 재배치된 정적 포인터, 지원되지 않는 임포트, 트랩, 기타 아키텍처 및 기타 아티팩트 계열은 명시적 진단을 받습니다. 정적 주소 후보는 기본 블록 구문 증거이며, 실제 트레이스가 관찰된 접근을 확립합니다. 이 첫 번째 범위는 소스를 복구하거나, 임의의 프로토타입을 추론하거나, 전체 애플리케이션을 복제하거나, 에뮬레이터 보안 격리를 확립하지 않습니다. 아티팩트 해시는 출처를 기록하며 캡슐을 인증하지 않습니다. 사용 권리가 있는 아티팩트만 추출하고 재배포하십시오.
테스트는 손으로 작성한 알고리즘 대체물이 아닌 실제 완전한 라이브러리 아티팩트를 실행합니다:
| 표본 | 원본 코드 | 독립적 비교 |
|---|---|---|
| LZ4 v1.10.0 초기화된 스트림 | 12,548 코드 바이트, 26개 함수 | 원본 create/compress/save/free; 새 프로세스 전반에 걸친 정확한 연속 출력; 사전 읽기 증거; 네이티브 독립 디코딩 |
| LZ4 v1.10.0 디컴프레서 | 2,456 바이트, 3개 함수 | 128개의 전체 네이티브 대조, 잘못된 블록, 짧은 출력, 원본 정적 데이터, 선언된 memmove, 제거된 헬퍼 이름 |
| xxHash v0.8.3 XXH32, O2 | 308 바이트 | 프로덕션 Wasm에서 550개의 서로 다른 입력/시드 조합 |
| xxHash v0.8.3 XXH32, 별도 컴파일된 O1 | 284 바이트 | 동일한 550개 조합, 서로 다른 원본 명령어 |
초기화된 스트림은 첫 번째 65,536바이트 패킷을 8,459바이트로, 복원 후 서로 다른 32,768바이트 패킷을 6,795바이트로 압축하며, 이는 새 스트림의 8,355바이트와 대조됩니다. 유지된 입력과 컴파일된 saveDict 경로 모두 독립적인 네이티브 오라클과 정확히 일치합니다. 브라우저 Studio 라이프사이클도 8,459/6,795바이트를 계산하고, 유지된 기록에서 8,205바이트를 읽었으며, freeStream을 통해 네이티브 힙을 해제했습니다. 이는 처리량 벤치마크가 아닌 유한한 기능 비교입니다.
xxHash 네이티브 대조는 추가로 4개의 실제 포인터 정렬을 다루며, 총 4,400회의 네이티브 호출입니다. 프로덕션 포인터는 현재 정렬되어 있습니다. 소스 라이선스, 리터럴 오라클 입력/결과, 아티팩트 해시 및 컴파일러 명령은 examples/에 보존되어 있습니다. 이러한 유한한 대조는 선언된 범위를 뒷받침하며, 보편적 동등성이나 성능 증명은 아닙니다.
소스 체크아웃에서 릴리스 게이트를 실행하십시오:
python3 -m pip install -e .
python3 -m unittest discover -s tests
node --test tests/*.test.cjs tests/*.test.mjs
node examples/xxhash/check-node.cjs
Apple Silicon에서 python3 examples/xxhash/build-native-oracle.py /tmp/new-xxhash-proof는 두 개의 전체 네이티브 컨트롤을 새 디렉터리에 다시 빌드하고 보존된 오라클과 비교합니다. 객체 오라클은 Apple Silicon에서 고정된 알려진 소스 LZ4 픽스처를 사용하여 python3 examples/native-objects/build-native-oracle.py /tmp/new-object-proof로 재현할 수 있습니다. 네이티브 로딩은 이러한 통제된 픽스처 생성기로 제한되며, 제품 추출은 바이트를 파싱하고 실행은 Wasm을 사용합니다.
Python 파서와 Capstone 디스어셈블리는 검사 가능한 의존성 캡슐을 구축합니다. JavaScript 런타임은 확립된 CPU 에뮬레이션 프로젝트인 Unicorn.js와 Unicorn을 통해 해당 바이트를 실행합니다. 네이티브 명령어의 브라우저 실행은 이들의 기능입니다.
Capsulith는 추출, 선언된 계약, 접근 가능한 실행 증거 및 독립적으로 재사용 가능한 내보내기를 결합하며, 이제 명시적으로 초기화된 객체 소유권과 분리된 체크포인트 연속성을 포함합니다. 에뮬레이션, 바이너리 분석 또는 함수 격리를 발명했다고 주장하지 않습니다. LZ4와 xxHash는 공개적으로 검증 가능한 표본이며, 기존 소스는 Wasm으로 직접 컴파일할 수도 있습니다. 캡슐 워크플로는 격리된 기능을 유지하고자 하는 지원되는 컴파일된 아티팩트를 위한 것입니다.