2016-01-20 17 views
0

我试图智能地解析actionscript标记,我检查了反汇编/反编译swf文件的几个开源程序的源代码。愚蠢的按位数学(关于swf中的actionscript标记)

检查the doc上PG29它指出

"Note: The TagCodeAndLength field is a two-byte word, not a bit field of 10 bits followed by a bit field of 6 bits. 

一个SWF文件的little-endian字节顺序,使不同的两个布局。”

在010编辑器检查,第一个标签是

0x44 0x11 

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

0100 0100 0001 0001 

其犯规甚至远程显得

0110 1001 

可有人请解释一下吗?

+0

我自己也是这样做的,但是前一段时间已经很不错了。你可以发布你正在解析的标签的字节码吗? –

+0

我现在没有我的代码,所以很难确切地说出发生了什么,但无论如何,LE命令意味着“0100 0100 0001 0001”应该被解释为“0001 0001 0100 0100”,这是一个短头标记'1000101'(69或0x45),长度为'100'(4)。 –

+0

@NoxNoctis我认为它应该是69h不是45h(如果标签是十六进制或十进制值,文档不太清楚)。我编辑了我的问题来反映这一点。你能否给出正式的答复,以便我可以接受它? – grepNstepN

回答

0

LE顺序意味着两个字节的值0100 01000001 0001应当被理解为0001 00010100 0100(反转字节顺序),其是用于标签1000101一个短标题(0×45,DEC 69)与长度为0x100(分解4) 。