反编译、修改和编译 flash 对象
Decompiling, modifying and compiling a flash object
我以前从未使用过 Flash (SWF),但我现在需要修改站点内部使用的旧 Flash 对象。问题是 flash 对象包含一个停在 2021 年的年份选择器,这现在是个问题。
源代码已经不可用了(已经将近 10 年了),但我设法使用在线服务对其进行了反编译,从而获得了源代码。我还找到了年份选择器的定义,它是这样的:
...
{
label:"2020",
data:"2020"
}, {
label:"2021",
data:"2021"
}];
所以实际的改变很容易,但我该如何从这里开始?
我不知道如何编译flash,也没有我认为通常使用的make文件等。
如何从修改后的源重新编译 flash 对象?
注意:由于各种原因,不能简单地跳过 flash 对象并使用 HTML 构建相同的功能。
根据Organis的建议,我就是这样做的。
- 我下载了 Free Flash Decompiler 并打开了 SWF 文件。这为我提供了左侧对象和代码模块的树视图。
- 我搜索了“2021”,因为这是下拉列表中的最后一年。
找到如下所示的相关部分:
...
{
"label":"2020",
"data":"2020"
},{
"label":"2021",
"data":"2021"
}];
我尝试编辑源代码,但没有成功。出现命名空间错误。
相反,我在右窗格中编辑了 P 代码。它看起来像这样:
pushstring "label"
pushstring "2022"
pushstring "data"
pushstring "2022"
newobject 2
...
newarray <number of years>
请注意,数组长度必须调整为范围内的年总数
此外,我不得不增加堆栈大小等,因为 Flash 对象在加载时崩溃了。我通过反复试验增加了所有这些值。
body
maxstack 17
localcount 3
initscopedepth 15
maxscopedepth 17
希望对遇到类似情况的人有所帮助。
我以前从未使用过 Flash (SWF),但我现在需要修改站点内部使用的旧 Flash 对象。问题是 flash 对象包含一个停在 2021 年的年份选择器,这现在是个问题。
源代码已经不可用了(已经将近 10 年了),但我设法使用在线服务对其进行了反编译,从而获得了源代码。我还找到了年份选择器的定义,它是这样的:
...
{
label:"2020",
data:"2020"
}, {
label:"2021",
data:"2021"
}];
所以实际的改变很容易,但我该如何从这里开始?
我不知道如何编译flash,也没有我认为通常使用的make文件等。
如何从修改后的源重新编译 flash 对象?
注意:由于各种原因,不能简单地跳过 flash 对象并使用 HTML 构建相同的功能。
根据Organis的建议,我就是这样做的。
- 我下载了 Free Flash Decompiler 并打开了 SWF 文件。这为我提供了左侧对象和代码模块的树视图。
- 我搜索了“2021”,因为这是下拉列表中的最后一年。
找到如下所示的相关部分:
... { "label":"2020", "data":"2020" },{ "label":"2021", "data":"2021" }];
我尝试编辑源代码,但没有成功。出现命名空间错误。
相反,我在右窗格中编辑了 P 代码。它看起来像这样:
pushstring "label" pushstring "2022" pushstring "data" pushstring "2022" newobject 2 ... newarray <number of years>
请注意,数组长度必须调整为范围内的年总数
此外,我不得不增加堆栈大小等,因为 Flash 对象在加载时崩溃了。我通过反复试验增加了所有这些值。
body maxstack 17 localcount 3 initscopedepth 15 maxscopedepth 17
希望对遇到类似情况的人有所帮助。