首页
社区
课程
招聘
[原创]360脱壳分析2-360的实现流程
发表于: 2015-3-31 15:52 12396

[原创]360脱壳分析2-360的实现流程

2015-3-31 15:52
12396

eewolf原创,转载请注明

1.        App起始时,直接load so;
2.        真实dex没有单独存放,放置在壳dex的文件后面;
3.        so 在JNI_onload中通过native代码,通过反射调用DexFile.java的loadDex方法从内存中load dex;
4.        直接继承自Acvitity类的DexClassDef结构中除classIdx均被修改为0,在load后,先将其结构体全部恢复,并直接让ClassLoader预加载好这些正确的Class;
5.        在classloader拥有了正确class描述的结构体后,再将所有结构体改错。

由上可以看到,如果想dump dex,只需要在JNI的FindClass函数处下断点即可。当然,这时是要在加载有问题的Class时去dump。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 3
支持
分享
最新回复 (2)
雪    币: 244
活跃值: (73)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
另外有一点,我不是太确定,但似乎修改了,ActivityThread的mH handler
2015-3-31 18:38
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
请教一下,“在load后,先将其结构体全部恢复,并直接让ClassLoader预加载好这些正确的Class”,这一步360是如何做到的?关键是,如何找到加载到内存的dex结构?
2015-7-22 18:19
0
游客
登录 | 注册 方可回帖
返回
//