MCPcopy Index your code
hub / github.com/jindrapetrik/jpexs-decompiler

github.com/jindrapetrik/jpexs-decompiler @version26.2.1 sqlite

repository ↗ · DeepWiki ↗ · release version26.2.1 ↗
26,924 symbols 91,230 edges 2,684 files 9,831 documented · 37%
README

JPEXS 免费 Flash 反编译器

Build passing badge

English | 简体中文

这是一款开源的 Flash SWF 反编译器和编辑器。能够提取资源,将 SWF 文件转换为 FLA 文件,编辑 ActionScript 代码,替换图片、声音、文本和字体。能够提供多种输出格式。通过 Java 环境运行于 Windows、Linux 和 macOS 系统上。

应用描述与功能

有关软件使用方法、功能列表等信息,请访问 FFDec 维基

Free-Decompiler.com 网站

过去(2018 年之前),我们使用 free-decompiler.com 域名作为主页,源代码则存储在 GitHub 上。现在,我们已将所有信息(问题跟踪器除外)迁移到了 GitHub。

下载应用

如需下载该应用程序,请前往 latest release 页面。 旧版本和每夜构建版本可在 releases 页面获取。

如何安装

请参阅 维基百科 的安装部分。

源代码

如何获取源代码

您可以使用以下命令创建源代码的本地副本:

git clone https://github.com/jindrapetrik/jpexs-decompiler.git

此操作假定您的系统中已经安装了 Git 。

分支

Git 版本控制管理器管理着多个代码分支。我们使用其中两个主要分支。

  • master - 已发布的 “稳定” 版本
  • dev - 开发者的最新更改 - “每夜构建”版本从此分支发布

您可以使用以下 git 命令切换到 dev 分支:

git checkout dev

GIT 建议

建议安装 GIT 命令行可执行文件。构建脚本使用 GIT 将版本号包含在二进制文件中。(对于 Windows 系统,您必须在 GIT 安装过程中配置 Windows 命令行。)

Netbeans 工程

源代码包含 Netbeans 项目,因此您可以在 Netbeans IDE 中打开它。然后,您可以使用 IDE 中诸如 “运行”、“构建”、“调试”、“清理” 和 “构建” 等标准操作。其他特定任务可以通过 build.xml 中的菜单执行(参见 Ant 部分)。

Ant

如果没有 Netbeans,您也可以使用 Apache Ant 构建源代码。 安装 Ant 之后,将最好其添加到您的 PATH 变量中。 打开命令行并导航到源代码目录, 要运行应用程序,请输入以下命令执行 “运行” 任务:

ant run

若仅需构建应用程序,请执行 “构建” 任务:

ant build

构建库

还有一些库也需要构建。这些库放在 “libsrc” 目录中。 * FFDec_lib - 进行反编译、SWF 解析、导出等核心功能。该库会随主项目自动构建,但也可以使用其自身的 Ant 脚本单独构建。 * jpacker - 用于压缩 JavaScript Canvas 的脚本(Netbeans/Ant 工程) * jpproxy - FFDec 的代理部分(Netbeans/Ant project) * jsyntaxpane - 代码编辑器(Netbeans/Apache Maven 工程) * LZMA - 用于 SWF 文件的压缩(Netbeans/Ant 工程) * nellymoser - 用于 Nelly Moser 音效的解码(Netbeans/Ant 工程) * Swf2Exe - “保存为 EXE 文件” 功能的占位符(Delphi 7 工程) * ttf - 用于 TTF 字体的导出(Netbeans/Ant 工程) * gnujpdf - 用于 PDF 文件的导出(Netbeans/Ant 工程)

Docker

我们有用于无头运行的 Dockerfile,这样就无需在本地安装 Java 或 FFDec。 (原始脚本来自:Mahdi Lazraq)

构建

docker build -t ffdec .

用法

FFDec 命令行(CLI) 是入口点,因此您可以直接传递参数:

docker run --rm -v ./input:/work/input -v ./output:/work/output ffdec [args]

更新日志

所有重要变更均列于 CHANGELOG.md 文件中。

部署

每夜构建

当提交被 推送/合并 到 dev 分支时,GitHub Actions CI 会自动创建一个新的预发布版本。 这些预发布版本被称为 每夜构建(nightly build)。在发布新的每夜构建版本后,之前的每夜构建版本就会被移除。

稳定版本

当在 master 分支中使用 versionx.y.z 格式的标签标记修订版本时,GitHub Actions CI 会自动创建一个新的稳定版本。

贡献

请参阅 CONTRIBUTING.md 文件,以了解我们的行为准则详情以及提交拉取请求的流程。

版本控制

版本号采用 x.y.z 格式,例如 9.1.2。 有关可用版本,请参阅 此存储库上的标签

每夜构建版本带有额外的 _nightlyN 后缀,其中 N 是一个数字,每次(自动)发布每夜构建版本时都会递增,并且与 x.y.z 编号无关(这意味着发布稳定版本时,每夜构建版本的编号不会重置为 0)。 较早的每夜构建版本 无法 通过 Git 标签获取。

作者

反编译器最初由 Jindra Petřík(又名 JPEXS)编写。 该应用制作于捷克共和国。

开发者

  • JPEXS - 项目负责人、反编译器开发、网站主管理员、GitHub 帐户管理员、组织管理员
  • honfika - 反编译器开发
  • Paolo Cancedda - 前开发者
  • ...以及来自 GitHub 和 Google Code 的其他人

翻译者

  • Jaume Badiella Aguilera - 加泰罗尼亚语翻译
  • Capasha - 瑞典语翻译
  • 王晨旭 (Chenxu Wang), 晓之车, 安安, Liushui, 老biu - 中文翻译
  • focus - 俄语翻译
  • honfika - 匈牙利语翻译
  • kalip - 意大利语翻译
  • Krock - 德语翻译
  • Laurent LOUVET - 法语翻译
  • MaGiC - 葡萄牙语翻译
  • martinkoza - 波兰语翻译
  • Osman ÖZ - 土耳其语翻译
  • pepka - 乌克兰语、荷兰语翻译
  • poxyran - 西班牙语翻译
  • realmaster42, alimsoftware - 葡萄牙语(巴西)翻译
  • Rtsjx - 中文翻译
  • koiru - 日语翻译
  • J. Kramer - 荷兰语翻译
  • Andrew Poženel - 斯洛文尼亚语翻译
  • GitHub Copilot (Claude AI) - 德语、斯洛伐克语翻译

联系

如果您想报告问题或提出新功能请求,请使用我们的问题跟踪系统:https://www.free-decompiler.com/flash/issues

在报告之前,您应该已经在维基百科上查看过 常见问题解答(FAQ) 部分了。 另外,也请 参阅维基百科中的已知问题列表

邮件联系

JPEXS 开发者的紧急联系邮箱是 jindra.petrik@gmail.com。 但我们更倾向于使用问题跟踪系统进行联系。

许可协议 + 致谢

应用

FFDec 应用程序采用 GNU GPL v3(GPL-3.0 或更高版本)许可证,详情请参阅 license.txt 文件。它使用了以下库的修改代码:

并且链接了以下的库:

应用程序还使用了 Silk icons packSilk companion 1FatCow icons packAha-Soft icons pack 中的一些图标。

对于 EXE 启动器,我们使用 Launch5j - MIT。

有关 FFDec 库的更多信息,请参阅 库 README 文件。

Extension points exported contracts — how you extend this code

DoableOperation (Interface)
@author JPEXS [8 implementers]
src/com/jpexs/decompiler/flash/easygui/DoableOperation.java
TreeTableModel (Interface)
TreeTableModel is the model used by a JTreeTable. It extends TreeModel to add methods for getting information about the [17 …
src/de/javagl/treetable/TreeTableModel.java
Multiplexer (Interface)
A Multiplexer can write multiple media tracks into a single output stream. @author Werner Randelshofer @version [8 implementers]
libsrc/avi/src/org/monte/media/Multiplexer.java
Lexer (Interface)
Lexers must implement these methods. These are used in the Tokenizer A Lexer should be tied to one document. @author [15 …
libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/Lexer.java
Searchable (Interface)
Interface for searchable objects. @author JPEXS [11 implementers]
libsrc/ffdec_lib/src/com/jpexs/helpers/Searchable.java
ReplacementStrategy (Interface)
An interface to build replacement strategies @author Pablo Santiago [9 implementers]
libsrc/jpacker/src/com/jpacker/strategies/ReplacementStrategy.java
FrameDecoder (Interface)
Implementations of FrameDecoder are responsible for decoding an MPEG audio frame. REVIEW: the interface currently is [8 …
libsrc/jlayer-1.0.2/src/main/java/javazoom/jl/decoder/FrameDecoder.java
AsynchronousLoading (Interface)
This interface is used for asynchronously-loaded contents. For example, the SvgBatikResizableIcon uses the {@lin [8 implementers]
libsrc/flamingo/src/org/pushingpixels/flamingo/api/common/AsynchronousLoading.java

Core symbols most depended-on inside this repo

append
called by 2318
libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/NulWriter.java
add
called by 2240
src/com/jpexs/decompiler/flash/gui/helpers/ObservableList.java
get
called by 1839
src/com/jpexs/decompiler/flash/gui/abc/UsageListModel.java
toString
called by 1457
src/com/jpexs/process/Process.java
isEmpty
called by 1351
libsrc/avi/src/org/monte/media/MovieWriter.java
append
called by 1274
libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/shape/aa/AntialiasTools.java
get
called by 1179
libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/fastavm2/FastAVM2List.java
get
called by 1036
libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/simpleparser/Path.java

Shape

Method 23,747
Class 2,731
Interface 240
Enum 109
Function 97

Languages

Java100%
TypeScript1%

Modules by API surface

src/com/jpexs/decompiler/flash/gui/MainPanel.java259 symbols
src/com/jpexs/decompiler/flash/gui/ImagePanel.java226 symbols
libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java195 symbols
libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java151 symbols
libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java151 symbols
src/com/jpexs/decompiler/flash/gui/Main.java150 symbols
src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java144 symbols
src/com/jpexs/decompiler/flash/console/CommandLineArgumentParser.java137 symbols
src/com/jpexs/decompiler/flash/gui/PreviewPanel.java134 symbols
src/com/jpexs/decompiler/flash/gui/jna/platform/win32/WinDef.java131 symbols
libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWFInputStream.java130 symbols
src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java121 symbols

Dependencies from manifests, versioned

com.github.umjammer:vavi-commons1.1.6 · 1×
com.google.cloud:google-cloud-kms2.86.0 · 1×
org.bouncycastle:bcpkix-jdk18on1.84 · 1×
org.bouncycastle:bcprov-jdk18on1.84 · 1×
org.junit.jupiter:junit-jupiter-api
org.junit.jupiter:junit-jupiter-engine
org.junit.platform:junit-platform-commons
org.junit:junit-bom5.8.2 · 1×

For agents

$ claude mcp add jpexs-decompiler \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact