{
  "added_at": "2026-11-02",
  "additional_evidence_urls": [
    "https://github.com/AngeloD2022/jsxer/blob/0340bd3321be529cf775215cfac860cf2cf8b477/CMakeLists.txt",
    "https://github.com/AngeloD2022/jsxer/blob/0340bd3321be529cf775215cfac860cf2cf8b477/src/cli/main.cpp",
    "https://github.com/AngeloD2022/jsxer/blob/0340bd3321be529cf775215cfac860cf2cf8b477/src/jsxer/jsxer.cpp",
    "https://github.com/AngeloD2022/jsxer/blob/0340bd3321be529cf775215cfac860cf2cf8b477/include/jsxer.h",
    "https://github.com/AngeloD2022/jsxer/blob/0340bd3321be529cf775215cfac860cf2cf8b477/bindings/python/decompiler.py",
    "https://github.com/AngeloD2022/jsxer/blob/0340bd3321be529cf775215cfac860cf2cf8b477/TODO.md",
    "https://github.com/AngeloD2022/jsxer/blob/0340bd3321be529cf775215cfac860cf2cf8b477/tests/src/array-expr.cpp",
    "https://github.com/AngeloD2022/jsxer/blob/0340bd3321be529cf775215cfac860cf2cf8b477/.github/workflows/run-tests.yaml",
    "https://github.com/AngeloD2022/jsxer/blob/0340bd3321be529cf775215cfac860cf2cf8b477/LICENSE",
    "https://github.com/AngeloD2022/jsxer/releases/tag/v1.7.4"
  ],
  "category": "javascript-electron",
  "description_en": "C++ decompiler for JSXBIN, the binary format of Adobe's legacy ExtendScript, the ECMAScript 3 dialect used to script applications such as Photoshop, InDesign and After Effects. It reads a JSXBIN 1.0, 2.0 or 2.1 literal, parses it into a syntax tree and prints JavaScript source with a header naming the format version. An experimental --unblind option renames symbols obfuscated by JsxBlind, and the same decompiler is exposed as a shared library with a ctypes-based Python binding.",
  "description_zh": "面向 JSXBIN 的 C++ 反编译器。JSXBIN 是 Adobe 旧版 ExtendScript 的二进制格式，ExtendScript 则是用于为 Photoshop、InDesign、After Effects 等应用编写脚本的 ECMAScript 3 方言。它读取 JSXBIN 1.0、2.0 或 2.1 字面量，解析为语法树，再输出 JavaScript 源码，并在文件头注明格式版本。实验性的 --unblind 选项可为经 JsxBlind 混淆的符号重新命名；同一反编译器还以共享库形式提供，并附基于 ctypes 的 Python 绑定。",
  "entry_url": "https://awesomerea.org/resources/jsxer/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/jsxer/",
  "evidence_url": "https://github.com/AngeloD2022/jsxer/blob/0340bd3321be529cf775215cfac860cf2cf8b477/README.md",
  "group": "tools",
  "id": "jsxer",
  "json_url": "https://awesomerea.org/resources/jsxer/record.json",
  "kind": "tool",
  "markdown_url": "https://awesomerea.org/resources/jsxer/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/jsxer/index.md",
  "name": "Jsxer",
  "name_zh": "Jsxer JSXBIN 反编译器",
  "record_type": "resource",
  "relationship": "foundation",
  "requirements": [
    "Latest release at review: v1.7.4, published 2025-03-31 with macOS arm64, macOS x86 and Windows archives. The reviewed master commit, from 2025-04-22, is one commit later and only makes the README's notice more visible: it says the project is being rewritten in Rust on a separate rust-rewrite branch, whose latest commit is from 2025-03-11.",
    "Input is a file holding only the JSXBIN literal, usually beginning with @JSXBIN@; the README warns that other content around it must be removed first. The CLI writes a .jsx file next to the input unless -o names another path; input that fails the JSXBIN signature check yields an error message and no decompiled code.",
    "Source builds need CMake 3.26+ and a C++17 compiler; configuring fetches fmt 9.1.0, plog 1.1.9 and CLI11 2.3.2 from GitHub. The README documents only the macOS build, while CMakeLists.txt also has Windows and Linux branches and builds a static library and a shared library, the latter loaded by bindings/python/decompiler.py from the build directory.",
    "ctest builds four small programs that decompile embedded array, object, member-expression and for-statement samples and print the result; they report the decompiler's status code but do not compare output with the original source, and CI runs them on macOS and Windows for pull requests. TODO.md lists open problems with function argument order, comma-expression declarations, number printing and some XML nodes producing improper code.",
    "AGPL-3.0. The README says Jsxer was made for source code recovery and security research and asks users not to use it to pirate scripts from their authors; it credits Andrin Meier's format research and jsxbin-to-jsx-converter, whose original repository it says was removed after an Adobe DMCA takedown. Decompiled scripts keep their authors' rights."
  ],
  "requirements_zh": [
    "审阅时最新版本为 v1.7.4，发布于 2025-03-31，提供 macOS arm64、macOS x86 和 Windows 压缩包。所审阅的 master 提交日期为 2025-04-22，比该版本只多一个提交，内容仅是让 README 中的提示更醒目：提示称项目正在独立的 rust-rewrite 分支上用 Rust 重写，该分支最新提交日期为 2025-03-11。",
    "输入文件只能包含 JSXBIN 字面量，通常以 @JSXBIN@ 开头；README 提醒须先删去其前后的其他内容。命令行工具默认在输入文件旁写出 .jsx 文件，也可用 -o 指定其他路径；未通过 JSXBIN 签名检查的输入只会产生错误信息，不会得到反编译代码。",
    "从源码构建需要 CMake 3.26+ 和 C++17 编译器；配置时会从 GitHub 获取 fmt 9.1.0、plog 1.1.9 和 CLI11 2.3.2。README 只说明了 macOS 上的构建，而 CMakeLists.txt 也包含 Windows 与 Linux 分支，并构建静态库和共享库；bindings/python/decompiler.py 从构建目录载入该共享库。",
    "ctest 会构建四个小程序，分别反编译内嵌的数组、对象、成员表达式和 for 语句样例并打印结果；它们只返回反编译器的状态码，不与原始源码比较。CI 在拉取请求时于 macOS 和 Windows 上运行这些测试。TODO.md 列出了尚未解决的问题，包括函数参数顺序、逗号表达式声明、数字输出，以及部分 XML 节点生成的代码不正确。",
    "采用 AGPL-3.0 许可。README 称 Jsxer 用于源码恢复和安全研究，并请使用者不要借此盗用脚本作者的成果；README 还致谢 Andrin Meier 对该格式的研究及其 jsxbin-to-jsx-converter 项目，并称该项目的原仓库因 Adobe 的 DMCA 通知而被删除。反编译所得脚本的权利仍归其作者。"
  ],
  "targets": [
    "app"
  ],
  "url": "https://github.com/AngeloD2022/jsxer",
  "verification": "source-reviewed",
  "verified_at": "2026-10-20"
}
