我不确定我是否理解您的问题,但您似乎需要更改传递给 load 方法的 url。您的 swf 似乎也是 Actionscript 2.0。
反编译器有点工作,但是您可以使用反编译器生成的 fla 文件很少用于生成相同的 swf。有时代码是非法的,而且几乎总是图形被搞砸了。
我曾经不得不对 swf 进行一些简单的代码更改(比如更改一些 url 和其他简单的东西),但我们没有源代码(它们丢失了,也没有备份......)。
我为此使用了 flasm,它工作得很好(也没有我最初想象的那么难)。
Flasm 不是反编译器,而是反汇编器。它需要您的 swf,解析 actionscript 字节码并生成一个带有类似汇编代码的文本文件。您可以编辑该代码并重新组装 swf。它不涉及图形和动画,所以这是我需要的,也许可以为你工作。
我做了一个小测试,效果很好。
我从 fla 中的这段代码开始:
var xml:XML = new XML();
xml.ignoreWhite = true;
xml.onLoad = function(ok:Boolean):Void {
if(ok) {
_debug_txt.text = "ok";
_debug_txt.text = xml;
} else {
_debug_txt.text = "error";
}
};
xml.load("/sub/page/dynamic.php");
接下来,我打开一个 cmd 提示符(我在 Windows 上),cd 到包含 swf 的目录并运行:
flasm -d test_flasm.swf > test_flasm.flm
这会将 swf 反汇编为文本文件 test_flasm.flm。我已将 flasm 添加到我的可执行文件路径中,但您可以改用 flasm.exe 的完整路径。
.flm 文件的相关部分如下所示:
setMember
push '/sub/page/dynamic.php', 1, 'xml'
getVariable
push 'load'
callMethod
您的可能会有所不同,但如果您查找 url,您会找到它。接下来,将该网址更改为:
setMember
push 'test.xml', 1, 'xml'
getVariable
push 'load'
callMethod
然后,我使用以下方法重新组装了 swf:
flasm -a test_flasm.flm
现在,test_flasm.swf 加载“test.xml”而不是“/sub/page/dynamic.php”。
希望这可以帮助。