反编译、修改和编译 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的建议,我就是这样做的。

  1. 我下载了 Free Flash Decompiler 并打开了 SWF 文件。这为我提供了左侧对象和代码模块的树视图。
  2. 我搜索了“2021”,因为这是下拉列表中的最后一年。
  3. 找到如下所示的相关部分:

     ...
     {
       "label":"2020",
       "data":"2020"
     },{
       "label":"2021",
       "data":"2021"
     }];
    
  4. 我尝试编辑源代码,但没有成功。出现命名空间错误。

  5. 相反,我在右窗格中编辑了 P 代码。它看起来像这样:

    pushstring "label"
    pushstring "2022"
    pushstring "data"
    pushstring "2022"
    newobject 2
    ...
    newarray <number of years>
    
  6. 请注意,数组长度必须调整为范围内的年总数

  7. 此外,我不得不增加堆栈大小等,因为 Flash 对象在加载时崩溃了。我通过反复试验增加了所有这些值。

    body
    maxstack 17
    localcount 3
    initscopedepth 15
    maxscopedepth 17
    

希望对遇到类似情况的人有所帮助。