在没有Adobe Flash的情况下编译Flash代码



我有一个用AS2编写的Adobe Flash项目,当然我有.fla文件。此程序具有某种身份验证,可以更改用于编写代码的参数。这意味着我写了类似的东西:

if (userEnteredPassword == "xyz")
{
//login success logic
}

现在我唯一给用户的是.exe文件。我希望用户能够更改密码。我该怎么做?编译时如何更改上述代码中的"xyz"?我想我可以散列密码并存储在.exe文件旁边的文件中;并检查哈希字符串进行身份验证。我可以做一个简单的哈希 function.is 可能吗?如何使用文件?谢谢

如果没有FLA文件,很难为您提供特定的解决方案。 我只能给你一个概括。 您的初始编译仍然需要 Flash,您可以轻松获得 60 天的试用期。

解决方案是在 AS 类中外部化此密码,但仍使用 SWF 对其进行编译以提高安全性(但不是太多,因为反编译器可以轻松找到密码)。

您需要找到密码编码的区域,假设它是一个带有 ActionScript 斑点的帧。 假设该语句是这样的

if (userEnteredPassword == "xyz")
{
    //login success logic
}

您可以将其重写为

if (userEnteredPassword == appsetting.Settings.password )
{
    //login success logic
}

然后,在 appset 文件夹中创建一个 AS 文件 Settings.as:

class appsetting.Settings
{
    public static var password:String = "xyz";
}

FLA 编译为 SWF,并确保没有错误。 随后,您的 SWF 可以在没有 Flash IDE 的情况下由 MTASC 更新。

因此,假设SWF和密码AS文件位于同一目录中,则MTASC命令如下所示

MTASC.exe -swf your_swf_file.swf -cp ./-out your_swf_with_new_password.swf

安全注意事项正如我之前所说,存储为纯文本的密码是错误的。 一种稍微的方法是使用单向加密(如MD5)加密密码,然后您需要将加密的用户输入与加密的密码进行比较。 这也需要加密库,你需要一些Flash知识才能做到这一点。

最好的解决方案是让服务器验证密码。 您可以进行 http 调用并让服务器验证密码是否匹配,这样您就不会以任何形式公开密码。 这种方法涉及更多。

如果您的 Flash 是用 AS2(而不是 AS3)编写的,并且您拥有所有 ActionScript 源代码,则可以使用 MTASC 编译器,但这可能会很棘手,具体取决于应用程序的编写方式。 如果你没有源代码,你将不得不反编译SWF,并祈祷反编译器能够全面解构一切。 不幸的是(谢天谢地),我看到的那些无法解构可重建的Flash。

最新更新