在学习<<Android软件安全与逆向分析>>中的dex文件格式时写的基于010 Editor的模板,算是重新温习了一下010模板编写,希望刚接触android的可以"可视化方式"来学习DEX文件格式
模板的使用方法:
1.将下面的代码复制并保存到文本文件,文件后缀名可以是任意或默认的*.bt后缀。
2.菜单栏—>模板—>打开模板,选择保存的文本文件,按F5运行模板。
一、010文件格式模板缺点:
1.语法类似于伪C代码不能使用指针和new/delete/malloc/free等C/c++运行库。
2.目前不支持调试,仅支持打印日志。
3.对打印日志支持不够完美,例如:struct {int xxx}aaa<read=ReadEventFunc,read=WriteEnentFunc>; 对于读写结构事件回调函数中不能声明结构体和使用Print函数打印日志。
二、010文件格式模板介绍:
1).虽然010模板采用了类似伪C语法,学习前建议大概浏览一下帮助文档(010 界面按F1)。
2).基本类型:
8-Bit Signed Integer – char, byte, CHAR, BYTE
8-Bit Unsigned Integer – uchar, ubyte, UCHAR, UBYTE
16-Bit Signed Integer – short, int16, SHORT, INT16
16-Bit Unsigned Integer – ushort, uint16, USHORT, UINT16, WORD
32-Bit Signed Integer – int, int32, long, INT, INT32, LONG
32-Bit Unsigned Integer – uint, uint32, ulong, UINT, UINT32, ULONG, DWORD
64-Bit Signed Integer – int64, quad, QUAD, INT64, __int64
64-Bit Unsigned Integer – uint64, uquad, UQUAD, UINT64, QWORD, __uint64
32-Bit Floating Point Number – float, FLOAT
64-Bit Floating Point Number – double, DOUBLE
string type: string, wstring
3).特有的数据结构:
Date Types – DOSDATE, DOSTIME, FILETIME, OLETIME, time_t (for more information on date types, see Using the Inspector)
声明和使用几乎和C语言没有什么区别,char var[8]和string var长度相同情况下几乎是相等的,能相互赋值.
4).结构类型:
enum能指定枚举成员长度byte/word/dword/float…..等基本类型长度,在解析文件时是非常非常有用的。
enum MYENUM
{
COMP_1,
COMP_2 = 5,
COMP_3
} var1;
//enum指定成员数据长度
enum <ushort> MYENUM
{
COMP_1,
COMP_2 = 5,
COMP_3
} var1;
typedef struct
{
int xxx;
}strVar;
struct
{
int xxx;
}strVar;
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!