我已经获得了SWF来编辑AS代码中的链接。事实是SWF使用一些通过数据库中PHP代码生成(实际检索)的XML。

menuXML.load("/sub/page/dynamic.php?genre=" + genre); 

因此,我们可以使用相同的SWF“ mainfraim”,并根据Dynamic.php中提供的链接填充不同的动画/源填充它们。

现在,我使用Flash Exompiler Gold提取SWF中的所有文件,并可以在Adobe Flash中再次打开它以编辑它。完成后,我输入ctrl+Enter,并立即有4个编译器错误!错误:1x <意外'如果遇到的> 2x <语句块必须由'}'> 1x <以下是'。操作员。 >

当原始SWF完美工作时,如何出现这些错误?

如果我不设法解决这个问题,我将必须找出如何创建.php文件,SWF试图使用可以选择适当的资源(我猜是从数据库中)显示它们(使用?使用?genre = genre = ###)

谢谢!

有帮助吗?

解决方案

我不确定我理解您的问题,但是您似乎需要将传递给负载方法的URL更改。似乎您的SWF IS 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,您会发现它。接下来,将该URL更改为:

setMember
push 'test.xml', 1, 'xml'
getVariable
push 'load'
callMethod

然后,我使用:

flasm -a test_flasm.flm

现在,test_flasm.swf加载“ test.xml”而不是“/sub/page/dynamic.php”。

希望这可以帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top