AMFObject数据格式解析

Posted 仲达超

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AMFObject数据格式解析相关的知识,希望对你有一定的参考价值。

AMF

  AMF是Action Message Format的简写,它是一种二进制的数据格式。它的设计是为了把actionscript里面的数据(包括Object, Array, Boolean, Number等)序列化成二进制数据,然后把这段数据随意发送给其他接收方程序,比如发给远程的服务器,在远程服务器那边,可以把这段数据给还原出来,以此达到一个数据传输的作用。

为什么要用AMF

  通常情况下我们使用JSON或者XML来做数据的传输,他们的好处是文本数据易读、容易修改,坏处在于文本数据体积较大,而且数据的组织有其局限性。那么二进制协议是不是只有AMF一个呢? 答案明显是否定的,你完全可以自定义自己的二进制数据格式,用AMF只是由于它是现成的,拿来即可用,不用重新去发明轮子。

AMFObject详解

amf.h中关于 AMFObject 是这样的定义的:

    typedef struct AMFObject
    {
        int o_num;
        struct AMFObjectProperty *o_props;
    } AMFObject;  

AMFObject表示AMF对象,o_num 代表 o_props的个数, 一个对象内部可以包含N个对象属性;

    typedef struct AMFObjectProperty
    {
        AVal p_name;
        AMFDataType p_type;
        union
        {
            double p_number;
            AVal p_aval;
            AMFObject p_object;
        } p_vu;
        int16_t p_UTCoffset;
    } AMFObjectProperty;

AMFObject表示AMF对象属性,即key-value键值对。p_name表示key;p_type表示value的类型;p_vu表示value的数值。

p_vu设置为联合体的目的:

当p_type为number时, m_vu取值double类型 p_number;

当p_type为string时,    m_vu取值AVal类型 p_aval;

当p_type为object时,   m_vu取值AMFObject类型 p_object。

 

以上是关于AMFObject数据格式解析的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段

Relay.js 没有正确解析组合片段

片段(Java) | 机试题+算法思路+考点+代码解析 2023

微信小程序json数据如何处理?

如何在 Javadoc 中使用 @ 和 符号格式化代码片段?

无法解析片段中的 findViewById [重复]