BAP可以分别对PIN和TEMU等生成的TRACE文件进行分析。前一篇文章对PIN生成的TRACE文件做了简单的介绍,这一篇理清下对TEMU等动态分析工具生成TRACE文件的认识。

       1、文件头(TraceHeader)

       typedef struct _trace_header {

            unit32_t magicnumber;   //幻数

            unit32_t version;            //版本

            unit32_t n_proc;            //进程号????

            unit32_t gdt_base;        //全局描述表的基地址

            unit32_t idt_base;        //中断描述表

       } TraceHeader;

      2、实体头(entry_header)

     typedef struct _entry_header {

          unit32_t address;     //指令在内存中的地址

          unit32_t tid; v         //线程标示

         unit16_t inst_size;   //x86指令的字节数

         unit8_t num_operands; //操作数,ESP指令除外

         unit32_t eflags;   //标志寄存器

         unit32_t cc_op;   //QEMU执行的操作

        unit32_t df;  //直接寄存器

      

        unit32_t hflags;

        unit32_t aldt;

        unit32_t agdt;

        unit32_t atr;

        unit32_t aidt;

        operandVal oper;

        OperandVal operand[MAX_NUM_OPERANDS];

        OperandVal memregs[MAX_NUM_MEMREGS][MAX_NUM_MEMREGS]; //

        OperandVal rawbyte[MAX_INST_BYTES];     //x86指令的原始字节。

        unsigned char rawbytes[MAX_INST_BYTES];  //x86指令的原始字节。字符表示

     }EntryHeader;