flash – 在已编译的SWF文件中更改变量值的最佳方法

是否可以在将修改后的SWF返回给客户端之前,通过servlet(在每个会话的基础上)更改已编译SWF中的变量值(使用as3).我注意到有一些命令行工具作为开源,但这些似乎专注于AS2. AS3代码可以实现吗?从
java可以使用哪些库? (即,基本上在非捆绑的SWF中编辑结果pcode,然后重新打包).

理想情况下,希望在主swf中嵌入每个会话令牌(不使用闪存变量),然后可以使用它来验证请求.目标是使用这个说法作为XSS支持中的另一个步骤(当与跨域权限文件结合使用时). Flash vars仍然在DOM中,但是这只允许加载器知道密钥的值(对于java脚本来说非常困难),我们可以很好地锁定flash而不是将值暴露给任何加载的swfs,并且跨域文件只能通过原始swf(该域中只有一个)来限制在原始服务器上读取xml文件的任何内容.

最佳答案 部分问题是编译的SWF在内部使用zlib流进行压缩,因此在不重新编译命令行SDK的情况下修改二进制文件并非易事.

使用命令行工具(mxmlc或Ant – 我们在项目中同时使用两者)来设置和自动化Flex SDK并不困难,但如果您真的坚持要在不重新编译的情况下修改二进制文件,那么你可能会发现this blog post有用.它包括一个实用程序,用于将内部流解压缩为其原始数据,并使用不同的压缩算法重新压缩.在该脚本的中间(当数据被解压缩时),您可以在二进制文件中搜索您要查找的值(通过实验找到的已知偏移量,或从公共成员标签中搜索),更改数据,重新压缩流,瞧 – 你有一个自定义.swf.如果更改嵌入资源(例如文本XML文件)中的值,则可以更轻松地定位要在二进制文件中更改的数据.

swf_recompress.zip

点赞