Skip to main content

放映机 (working name: winvpwn-cinema)

把一段二进制程序的执行过程变成可回放、可定位、可讲述的叙事。

现有 trace 工具(strace、各类 viewer)擅长回答"发生了什么",却很难回答"当时是 什么样子"——某一帧的寄存器、内存、调用栈,以及它与前后帧的关系。放映机的核心能力 只有一句话:任意一帧都可以瞬间回去看。

状态

  • Stage 1:采集与回放内核,已完成
  • Stage 2:TUI(Textual)交互界面,已完成
  • Stage 3:HTML 静态导出,已完成
  • Stage 4:Agent 对话层(受控工具驱动),工具层完成

Stage 1 的能力:

  • 指令级事件采集(基于 Unicorn Engine)
  • 快照与 dirty page 追踪(间隔几何增长,快照数对数级于事件数)
  • 任意帧 seek 与反向单步(事件回放不重新执行指令)
  • .ctrace 轨迹格式读写(FNV-1a 校验,百万级事件量级)
  • CLI:record / info / trace / frame / tui / export
  • 复用 winVpwn 的 ELF 加载与 syscall 分发,依赖固定在 tag v0.1.0

不含 LLM。全部事件来自真实 Unicorn 执行,无任何假数据。

形态

TUI(Textual)为主界面,CLI 负责脚本化,HTML 静态导出负责分享。不做实时 Web 应用,不做原生 GUI。

使用

$ cinema record hello_static --out hello.ctrace
recorded hello.ctrace (144021 bytes)

$ cinema info hello.ctrace
                                  recording
entry        0x401000
events       28
final frame  28
snapshots    0
base pages   35
image hash   9ae9dc45854bfb3c1ab7926db1f3739621f60e978a1e2d4f106536267ccc9809
  exit(0)
  output: 'hello, winVpwn\n'

$ cinema trace hello.ctrace --only syscall
                         frames 0-27
#   kind           detail
13  syscall_enter  write (1) 0x1, 0x402000, 0xf, 0x0, 0x0, 0x0
15  syscall_exit   ret = 15
26  syscall_enter  exit (60) 0x0, 0x402000, 0xf, 0x0, 0x0, 0x0

$ cinema frame hello.ctrace 13 --mem 0x402000:32
       frame 13
reg     value
rip     0x40101e
rax     0x1
rsi     0x402000
rdx     0xf
...
output so far: ''
producing event: 0x40101c  2 bytes  0f 05
memory 0x402000: 68 65 6c 6c 6f 2c 20 77 69 6e 56 70 77 6e 0a 00 ...

文档

开发

$ cargo test --no-default-features
$ cargo clippy --all-targets --no-default-features -- -D warnings
$ cargo fmt --all -- --check
$ pip install -e .
$ pytest --cov=cinema --cov-fail-under=80
$ ruff check src tests
$ mypy src tests

边界

内核面向静态 ET_EXEC x86_64 镜像与确定性 syscall 集合(write、exit、 exit_group)。文件、网络、信号与动态链接留给后续阶段,CI 目前只在 Linux 上 验证,Windows 支持在验证后再声明。

放映机用于授权环境:CTF 题目、教学、以及你自己拥有的软件。被放映的二进制在 Unicorn 沙箱中运行,不触碰宿主文件系统与网络,运行权限不高于宿主进程。

Release files for cinema-projector 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cinema-projector 0.1.0
File Size Uploaded
cinema_projector-0.1.0.tar.gz 47.3 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for cinema-projector 0.1.0
File Interpreter ABI Platform
cinema_projector-0.1.0-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details
cinema_projector-0.1.0-cp311-abi3-manylinux_2_34_x86_64.whl CPython 3.11 abi3 Linux glibc 2.34+ x86-64 Details

Total release size: 1.3 MB

Release files / cinema_projector-0.1.0.tar.gz

Download URL cinema_projector-0.1.0.tar.gz
Size 47.3 kB
Tags Source
SHA-256 checksum
How to use checksums
be5820d1d2eaaca5d8f10334653dc7b31288acd84e9eb5d80a1cae285ce51055
BLAKE2b-256 checksum
How to use checksums
7433ba4cc63ea9077f69d2a284c66b64fc49e28fc4e0c72664a880e600b58ede
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / cinema_projector-0.1.0-cp311-abi3-win_amd64.whl

Download URL cinema_projector-0.1.0-cp311-abi3-win_amd64.whl
Size 533.4 kB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
9be6747c340e8d191969f6349caf4868b5bb2d17209f3e35dc28a249f9238ef9
BLAKE2b-256 checksum
How to use checksums
c820e3041790a007b417546f14e0d9a90f15166ca1c5feeee280fa33b8619952
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / cinema_projector-0.1.0-cp311-abi3-manylinux_2_34_x86_64.whl

Download URL cinema_projector-0.1.0-cp311-abi3-manylinux_2_34_x86_64.whl
Size 712.4 kB
Tags CPython 3.11 Linux glibc 2.34+ x86-64 abi3
SHA-256 checksum
How to use checksums
fd5e34adfc504d2bd5ff5bfec396bf3080e60fdc8cdc51ad738d3ac95a32d3be
BLAKE2b-256 checksum
How to use checksums
fe8def30d5279ed603bdd0c0592e1280b967a0e6a147f64d7a8a67a6f7b2826c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page