Tool

Jsxer

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.

Requirements & limits

  • 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. This entry describes the C++ code on master.
  • 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. The reviewed sources state no REA use, and this collection decompiled no files.

About this entry

Type
Tool
Category
JavaScript and Electron tools
Relationship
Foundation tool
Targets
App

Sources reviewed

The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.

Report an outdated entry Suggest a translation fix

Primary sources

  1. README.md GitHub · AngeloD2022/jsxer · Revision 0340bd3
  2. CMakeLists.txt GitHub · AngeloD2022/jsxer · Revision 0340bd3
  3. src/cli/main.cpp GitHub · AngeloD2022/jsxer · Revision 0340bd3
  4. src/jsxer/jsxer.cpp GitHub · AngeloD2022/jsxer · Revision 0340bd3
  5. include/jsxer.h GitHub · AngeloD2022/jsxer · Revision 0340bd3
  6. bindings/python/decompiler.py GitHub · AngeloD2022/jsxer · Revision 0340bd3
  7. TODO.md GitHub · AngeloD2022/jsxer · Revision 0340bd3
  8. tests/src/array-expr.cpp GitHub · AngeloD2022/jsxer · Revision 0340bd3
  9. .github/workflows/run-tests.yaml GitHub · AngeloD2022/jsxer · Revision 0340bd3
  10. LICENSE GitHub · AngeloD2022/jsxer · Revision 0340bd3
  11. https://github.com/AngeloD2022/jsxer/releases/tag/v1.7.4

More in Apps

All 108 entries in Apps