能力值:
( LV8,RANK:120 )
|
-
-
2 楼
good job!比我用表格写的好太多了
|
能力值:
( LV9,RANK:310 )
|
-
-
3 楼
不错,学习了!
|
能力值:
(RANK:250 )
|
-
-
4 楼
哈哈,原来你的文章里已经给了XML文件格式了 :)
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
曾经我也以为二进制xml结构没有具体的分析,后来在stackOverFlow上面看到有人也在讨论这个话题,顺藤摸瓜找到了一个blog,里面有对该文件结构的详述。希望能给有需要的朋友帮助。
http://justanapplication.wordpress.com/category/android/(需翻墙)
|
能力值:
(RANK:250 )
|
-
-
6 楼
这个blog很不错, thx
|
能力值:
(RANK:290 )
|
-
-
7 楼
搞 安卓的越来越多了 哈哈 撸起
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
没事,国内网站这方面资料确实少,楼主也是很耐心看了AXMLPrinter2的源码
|
能力值:
( LV6,RANK:90 )
|
-
-
9 楼
看不懂,纯来顶帖
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
最近也是看了androguard的源码对axml的分析部分,原来已经有前人把结构都贴出来了。
自己蛋疼看了好几天也分析出来了 T_T
|
能力值:
( LV3,RANK:20 )
|
-
-
11 楼
resources.arsc 也写个吧,呵呵
|
能力值:
( LV4,RANK:50 )
|
-
-
12 楼
good job!
|
能力值:
( LV3,RANK:20 )
|
-
-
13 楼
遇到一个axml中字符串每个字符占1个字节而非两个字节,这是什么情况?
0B0B76657273696F6E4E616D6500 versionName 而非
0B00760065007200730069006F006E0043006F00640065000000 v e r s i o n N a m e
这两种编码用string_chunk_flag flags描述
enum string_chunk_flag flags 描述了utf 与0标记
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
厉害,要好好看看
|
能力值:
(RANK:250 )
|
-
-
15 楼
编码问题~
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
感谢楼主,请问画图工具使用的是什么工具
|
能力值:
(RANK:250 )
|
-
-
17 楼
Visio~
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
好资料,拜读一下
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
多谢楼主分享
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
非常好赞一个!!!!!!!!!!
|
能力值:
(RANK:10 )
|
-
-
21 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
这么好的文章啊,这赶脚就是解析dex,xml等文件,做个apktool d的节奏啊
|
能力值:
( LV8,RANK:130 )
|
-
-
23 楼
谢谢分享,学了,补一点自己理解的大大文章后面解析的结构的内容
0x414-0x417 0x00100102 Start Tag Chunk开始标识
0x418-0x41B 0x60 大小 则此chunk块从0x414 -0x473
0x41C-0x420 0x2 行号 在源码中是第2行
0x420-0x423 0xFFFFFFFF 固定值
0x424-0x427 0xFFFFFFFF Namespace Uri命令空间-1 为空,
0x428-0x42B 0xE Name即 manifest
0x42C-0x430 0x00140014 标签类型,是开始还是结束标签等
0x430-0x433 0x03 该标签属性个数3个属性
0x434-0x437 0x0 class Attribute 标签包含的类属性
0x438-0x44B B00000000000000FFFFFFFF0800001001000000 第一个属性值------------------------------------------------------
属性是由于长度为5个数组注册,数组含义是
[NameSpaceUri,Name,ValueString,Type,Data]
上面就是
[0xB,0x0,0xFFFFFFFF,0x10000008,0x01],第4个值要右移24位
[11,0,-1,16,1]
第一个 是前面start Namespace Chunk得出的Uri对应的Prefix为android
第二个是属性名称字符串索引,可得为versionCode
第三个 ?????大大说当类型是string时候,第三个跟第五个一样
第四个 值是数据类型,包括string ,Attribute,Reference、Float ,Int Hex Int Boolean(具体看AXMLPrinter2源码 test/AXMLPrinter中的getAttributeValue函数)
这里是整数值
第五个 是属性的内容,为1
综上第一个属性解析后是
android:VersionCode="1"
0x44C-0x45F 0B00000001000000100000000800000310000000 第二个属性值------------------------------------------------------
[0xB,0x1,0x10,0x03000008.0x10]
也就是[11,0,-1,48,1]
48表示Float
综上解析是
android:versionName="1.0"
0x460-0x473 FFFFFFFF0D0000000F000000080000030F000000 第三个属性值
[0xFFFFFFFF,0x0D,0x0F,0x03000008,0x0F]
也就是[-1,13,15,48,15]
第五个属性15是索引com.android.test
综上解析是
package="com.android.test"
综合得到<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.test" android:versionCode="1" android:versionName="1.0" >
0x474-0x477 0x00100102 Start Tag Chunk开始标识
0x478-0x47F 0x4C 大小,那么范围是 0x474-0x4BF
0x47C-0x47F 0x07 行号,第7行
0x480-0x483 0xFFFFFFFF 固定值
0x484-0x487 0xFFFFFFFF 命令空间为-1,即前缀为空,嘿嘿其实那些自定义的空间就有前缀有木有,索引大部分这里是-1啦
0x488-0x48B 0x11 name=17查找索引得到uses-sdk
0x48C-0x38F 0x00140014 是开始标签
0x490-0x493 0x2 有2个属性
0x494-0x497 0x0 标签包含的类属性为0
0x498-0x4AB 0B00000002000000FFFFFFFF080000100E000000 第一个属性--------------------------------
[0xB,0x2,0xFFFFFFFF,0x10000008,0xE]
[11,2,-1,16,14]
android:minSdkVBersion="14"
0x4AC-0x4BF 0B00000003000000FFFFFFFF0800001013000000 第二个属性-------------------------
[0xB,0x3,0xFFFFFFFF,0x10000008,0x13]
[11,3,-1,16,19]
综上解析是
android:targetSdkVersion="19"
综合得到 <uses-sdk ndroid:minSdkVersion="14" android:targetSdkVersion="19" />
0x4C0-0x4C3 0x00100103 End Tag Chunk结束标志
0x4C4-0x4C7 0x18 大小,则此chunk范围是0x4c0-0x4D7
0x4C8-0x4CB 0x09 第9行
0x4CC-0X4CF 0xFFFFFFFF 固定值,未知
0x4D0-0x4D3 0xFFFFFFFF 为-1.推测对应 /
0x4D4-0x4D7 0x11 是uses-sdk的结尾
|
能力值:
( LV2,RANK:15 )
|
-
-
24 楼
非常感谢,正在学习。
|
能力值:
( LV2,RANK:10 )
|
-
-
25 楼
楼主目前有没有类似AXMLPrinter2,能解析和生成二进制XML格式的工具?AXMLPrinter2只能解析不能重新生成
|