首页
社区
课程
招聘
[求助]自定义DexClassLoader
发表于: 2017-2-16 14:42 4617

[求助]自定义DexClassLoader

2017-2-16 14:42
4617
API 的 DexClassLoad 只能通过路径来加载 dex 文件,还会生成一个缓存文件。对加密来说肯定不好。

在 Android 4.2 系统的 DexFile.java 下有两个 openDexFile() 的 native  方法,其中一个是可以通过 bytes 加载 dex 文件同时返回一个 cookie,对应dalvik_system_DexFile.cpp 中的 Dalvik_dalvik_system_DexFile_openDexFile_bytearray方法。通过反射调用这个方法可以实现 内存中解密dex文件并 load ,而不需要生成缓存文件。

但是 4.4 以后系统去掉了该函数。哪位大侠介绍一下现在的DexClassLoader是怎么弄的。

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 1
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
http://blog.csdn.net/jiangwei0910410003/article/details/51557135
2017-2-16 15:45
0
雪    币: 305
活跃值: (95)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
5.0以后api改了 就不能用了
2017-2-16 16:57
0
雪    币: 172
活跃值: (1623)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
4
我这个帖子里面有5.0以上的解决办法
http://bbs.pediy.com/showthread.php?t=215078
2017-2-16 19:44
0
雪    币: 305
活跃值: (95)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
谢谢,周末好好研究下
2017-2-17 18:53
0
雪    币: 305
活跃值: (95)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
寒号鸟二代 我这个帖子里面有5.0以上的解决办法 http://bbs.pediy.com/showthread.php?t=215078
void myLoadDex_art(JNIEnv* env,char* szPath)
{
   
     jstring inPath=(*env)->NewStringUTF(env,szPath);     
     if(sdk_int>22)
     {
       art_MarCookie=(*env)->CallStaticObjectMethod(env, myDexFile, myOpenDexFile, inPath,0,0);       
       LOGI("----MarCookie:%p",art_MarCookie);     
     }
     else     
     {
       art_Cookie=(*env)->CallStaticLongMethod(env, myDexFile, myOpenDexFile, inPath,0,0);       
       LOGI("----artCookie:%llx",art_Cookie);    
     }
       
     void* dlart=dlopen("libart.so",1);    
     pArtFun pArtDexFileFindClassDef=(pArtFun)dlsym(dlart,"_ZNK3art7DexFile12FindClassDefEt");     
     LOGI("pArtDexFileFindClassDef:%p",pArtDexFileFindClassDef);
}

这一点都不自定义啊, inPath 已经暴露了位置了

2017-2-28 16:50
0
游客
登录 | 注册 方可回帖
返回
//