duangsuse::Echo
但是, debuggable 居然是 string pool 中的第 129 个, 这意味着如果我要暴力添加到 129 个的话.... 累死, 否则就要动手写代码, 我可不希望花费额外的时间.
duangsuse 想到了一个办法:
直接在数组后面增加一项 debug flag
然后直接把原引用 debuggable 的字符串改到相应的字符串
不过担心这样可能不能成功
于是又一个办法:
尝试交换 debuggable 与某方便添加的 string, 然后更新其引用
因为不同 API level 的 Android 对 axml 处理都基本一样, 如果第一个方法成功, duangsuse 就直接开始下一步工作了
直接在数组后面增加一项 debug flag
然后直接把原引用 debuggable 的字符串改到相应的字符串
不过担心这样可能不能成功
于是又一个办法:
尝试交换 debuggable 与某方便添加的 string, 然后更新其引用
因为不同 API level 的 Android 对 axml 处理都基本一样, 如果第一个方法成功, duangsuse 就直接开始下一步工作了
本来是
其中 Header 占了 2 字
也就是说数组长度为
检验正确。
现在将其改为
(int->hex 160) 是`0xa0` (
新值为
OK
0x0000009c 个字节, 分成 4 字节(合一字)部分有 39 个其中 Header 占了 2 字
也就是说数组长度为
37检验正确。
现在将其改为
(flip (int->hex (* (+ 38 2) 4)))(int->hex 160) 是`0xa0` (
0x000000a0)新值为
0xa0000000OK
1)最开始的两个字节是0x0003,表示这个块包含了一个完整的xml文件。接着两个字节是0x0008,表示该块头的长度有8个字节,除去这4个字节,整个头还剩下4个字节。接下来的4个字节0x00000684,表示整个块的大小,也就是该xml文件的大小。
0x00003dfc = 15868 (byte)之前我们为了 debug flag 插入了 4 字节
现在是
15868 + 4 = 15872 (byte)换算为 16 进是
0x3e00 (补齐一字是 0x3e000000)翻转得到需要更新的
0x0000003e