能力值:
( LV2,RANK:10 )
|
-
-
26 楼
好文,拜读了。多谢LZ
|
能力值:
( LV2,RANK:10 )
|
-
-
27 楼
好东西,多谢分享~!
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
收藏稍后慢慢看
|
能力值:
( LV9,RANK:200 )
|
-
-
29 楼
顶,学习。
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
非常受用。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
31 楼
谢谢!收藏了。
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
写的不错,看来难度不小。
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
写得很好,学习了!
|
能力值:
( LV8,RANK:130 )
|
-
-
34 楼
mark
|
能力值:
( LV9,RANK:370 )
|
-
-
35 楼
mark,赞一个
|
能力值:
( LV2,RANK:10 )
|
-
-
36 楼
好文章! 好总结
|
能力值:
( LV2,RANK:10 )
|
-
-
37 楼
先收藏,以后慢慢细品
|
能力值:
( LV2,RANK:10 )
|
-
-
38 楼
总结的太好了,很多软件都在重打包这下了功夫。测试了下,微信也是将文件属性更改为png来防止二次打包。信息量大,读了几遍。
|
能力值:
( LV2,RANK:10 )
|
-
-
39 楼
在您的隐藏方法的方法中,有这么一段话:“更新需隐藏方法的下一个方法的 methodIdx,可以使用公式:
next_method_idx=original_next_method_idx + original_method_idx ”请问这个公式可以详细解释下吗?为什么需要更新需隐藏方法的下一个方法的 methodIdx 呢?谢谢了
|
能力值:
( LV2,RANK:10 )
|
-
-
40 楼
太好了,非常需要
|
能力值:
(RANK:250 )
|
-
-
41 楼
具体的你可以参考 http://wikisec.free.fr/papers/hidex-hack.lu.pdf文中关于method_idx_diff字段的解释。DexMethod结构体中的methodIdx实际上是个增量(第一个是个绝对值),但是后续的其实都是个增量,所以隐藏方法步骤中将需隐藏方法的methodIdx设为0,也就相当于增量是0(当然是针对非第一个method),这样就指向了前一个方法。由于修改了这个methodIdx,那么接下来那个DexMethod的methodIdx由于是基于前一个的增量,所以必须得加上隐藏方法的methodIdx.
例如:
需要隐藏的DexMethod的methodIdx是0x02,其下一个DexMethod的methodIdx是0x01,注意这里都是增量;这样如果我修改了需隐藏DexMethod的methodIdx为0x0,那么接下来那个DexMethod的methodIdx绝对量变了,所以必须修改为0x02+0x01=0x03,这样才能保证索引到正确的值。
不知道这样解释能帮助你不?
|
能力值:
( LV2,RANK:10 )
|
-
-
42 楼
非常感谢,我看看您发给我的链接,
|
能力值:
( LV2,RANK:10 )
|
-
-
43 楼
看了,收获匪浅,感谢楼主辛勤打字,回去学习下。
|
能力值:
( LV2,RANK:10 )
|
-
-
44 楼
非常感谢楼主精彩的文章,受益匪浅,对楼主的专研精神感到敬佩。
楼主文中说的
需要注意的是,在 DexClass.h 中,所有的 u4 类型,实际上是 uleb128 类型。
稍微斟酌一下哈,leb128存储空间大小是动态的,如果文件中预先分配的就是4个字节,这时就不是leb128了哦。比如 map_item_list 中item的 uint size 。
|
能力值:
( LV2,RANK:10 )
|
-
-
45 楼
牛人啊。楼主。
|
能力值:
( LV2,RANK:10 )
|
-
-
46 楼
好文章必须顶, 膜拜前辈~
|
能力值:
( LV2,RANK:10 )
|
-
-
47 楼
好全面,好专业!
|
能力值:
( LV3,RANK:20 )
|
-
-
48 楼
总结的不错,楼主有空可以弄成个手册供大家查询。
|
能力值:
( LV7,RANK:100 )
|
-
-
49 楼
mark,好帖子
|
能力值:
( LV2,RANK:10 )
|
-
-
50 楼
感谢大牛分享,收下慢慢消化~~!
|
|
|