【发布时间】:2014-07-16 10:04:19
【问题描述】:
我一直在研究将 Flash SWF 文件交叉编译成 C/C++ 源文件 有很多工具可以将 SWF 文件反编译为纯文本文件格式。 Free SWF Decompiler 在这方面提供了大量的开源解决方案。
要将 SWF 反编译为 C/C++ 源文件, 我尝试了以下解决方案
1)Haxe:Haxe 编译器负责将 Haxe 编程语言翻译成目标平台原生源代码或二进制文件
为此,我需要
a) 将 SWF 反编译为 actionscripts 文件
b) 将动作脚本转换为 Haxe 语言脚本
c) 编译成 C++ 源文件
d) 使用 Keil MDK-ARM 重新编译 C++ 源文件
缺点:输出的 C++ 文件很大,包含许多 C 源格式的类似 Flex SDK 的资源,在 Keil MDK-ARM 中很难重新编译。而且获取 Keil 可编译的二进制代码似乎是一项非常低效的工作。
最近,我通过 Adobe Flash C++ 编译器找到了另一种可能的解决方案,即 FlasCC ( 一个完整的类似 BSD 的 C/C++ 开发环境,带有基于 GCC 的交叉编译器,能够以 Adobe Flash 运行时为目标)
但我不确定它是否会按预期工作。
由于 FlasCC 可以将 c/c++ 代码编译为 ActionScript 字节码 (ABC) 以及 LLVM 字节码。 我的想法是
a) 解析 SWF ActionScript 字节码 (ABC)
b) 在 FlahCC 中读取 ActionScript 字节码 (ABC)(不确定是否可以这样做?)
c) 通过 FlasCC 中等效的 ActionScript 字节码(ABC),输出其 LLVM 字节码(不确定是否可以这样做?)
d) LLC 将 LLVM 字节码转换为 C++ 代码
这样可以通过LLVM LTO(Link Time Optimized) Build优化ActionScript字节码
由于我不是 llvm 专家,因此我需要一些建议。
这可行吗?或者有没有其他方法可以做到这一点?
【问题讨论】:
标签: c++ actionscript-3 flash haxe flascc