关于 swf 中的 actionscript 标签的按位数学

Posted

技术标签:

【中文标题】关于 swf 中的 actionscript 标签的按位数学【英文标题】:bitwise math regarding actionscript tags in swf 【发布时间】:2016-04-25 20:36:26 【问题描述】:

我正在尝试智能解析 actionscript 标签,我检查了几个反汇编/反编译 swf 文件的开源程序的源代码。

在 pg29 上检查 the doc 它指出

"注意:TagCodeAndLength 字段是一个两字节的字,而不是一个 10 位的位字段后跟一个 6 位的位字段。 SWF 文件的 little-endian 字节顺序使这两种布局不同。”

签入010编辑器,第一个标签是

0x44 0x11 

它以某种方式转换为 0x45(然后是长度)。但是,根据文档(上面引用),它似乎没有任何意义:

0100 0100 0001 0001

这似乎根本不是

0110 1001

谁能解释一下?

【问题讨论】:

我自己做了这个,但已经很久了。你能用你正在解析的标签发布字节码吗? 我现在手头没有我的代码,所以很难说到底发生了什么,但无论如何,LE顺序意味着0100 0100 0001 0001应该被解释为0001 0001 0100 0100,这是一个短标题用于标签1000101(69 或0x45),长度为100(4)。 @NoxNoctis 我认为它应该是 69 小时而不是 45 小时(如果标签是十六进制或十进制值,则文档不太清楚)。我编辑了我的问题以反映这一点。能不能给个正式的回答让我接受? 好的。构建解析器是我必须添加的一项乏味的任务。让我很困惑。 【参考方案1】:

LE order 意味着一个两字节的值0100 01000001 0001应该被读作0001 00010100 0100(字节顺序颠倒),这是标签1000101的一个短头(0x45,dec 69)长度为 0x100(12 月 4 日)。

【讨论】:

以上是关于关于 swf 中的 actionscript 标签的按位数学的主要内容,如果未能解决你的问题,请参考以下文章

Flash Builder 4 中的编码 SWF 属性

如何在 Actionscript 3 中播放与 SWF 不在同一目录中的声音?

ActionScript 3 AS3在运行时加载和访问外部SWF中的字体

我可以在没有源 FLA 文件的情况下更改 SWF 中的 ActionScript 字符串文字吗?

如何获取 swf 文件的每个对象的名称和类型?

将 ActionScript 2 SWF 转换为 ActionScript 3 SWF 文件(可以剥离代码)