qtfreet00 发表于 2017-3-7 10:26

基于看雪阿里早期加固代码还原4.4-6.0兼容7.0

本帖最后由 qtfreet00 于 2017-3-8 15:25 编辑

原帖地址:http://bbs.pediy.com/thread-215078.htm
在7.0+ api 24 后,openDexFile的入参变成了5个,多了个classloader和DexPathList
364    private static Object openDexFile(String sourceName, String outputName, int flags,
            ClassLoader loader, DexPathList.Element[] elements) throws IOException {
      // Use absolute paths to enable the use of relative paths when testing on host.
      return openDexFileNative(new File(sourceName).getAbsolutePath(),
                                 (outputName == null)
                                     ? null
                                     : new File(outputName).getAbsolutePath(),
                                 flags,
                                 loader,
                                 elements);
    }
在参考基友代码后,在看雪源代码基础上加了几个判断,实现7.0+可以正常启动
          if(sdk_int>22&&sdk_int<24)
          {
                  mCookie = (*env)->GetFieldID(env, myDexFile, "mCookie", "Ljava/lang/Object;");
                  myOpenDexFile=(*env)->GetStaticMethodID(env, myDexFile, "openDexFile", "(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/Object;");
          }
          else if(sdk_int>=24){
            //7.0+ openDexFile稍有不同
                  mCookie = (*env)->GetFieldID(env, myDexFile, "mCookie", "Ljava/lang/Object;");
            myOpenDexFile=(*env)->GetStaticMethodID(env, myDexFile, "openDexFile", "(Ljava/lang/String;Ljava/lang/String;ILjava/lang/ClassLoader;[Ldalvik/system/DexPathList$Element;)Ljava/lang/Object;");
          }

   if(sdk_int>22&&sdk_int<24)
   {
             art_MarCookie=(*env)->CallStaticObjectMethod(env, myDexFile, myOpenDexFile, inPath,0,0);
             LOGI("----MarCookie:%p",art_MarCookie);
   }else if(sdk_int>=24){
      //7.0+此处需要5个参数
      jclass ApplicationClass = (*env)->GetObjectClass(env,new_ctx);
               jmethodID getClassLoader = (*env)->GetMethodID(env,ApplicationClass, "getClassLoader", "()Ljava/lang/ClassLoader;");
             jobject classLoader = (*env)->CallObjectMethod(env,new_ctx, getClassLoader);
             art_MarCookie=(*env)->CallStaticObjectMethod(env, myDexFile, myOpenDexFile, inPath,0,0,classLoader,0);
   }

wqh171941 发表于 2017-3-7 12:59

yang785962193 发表于 2017-3-7 11:43
大佬,我想看Android代码,为什么你贴出来的好像都是java代码,我看不懂java代码,我只看的懂Android代码.. ...

搞笑...Android就是用java写的,你给我说看不懂java...

fibanaci 发表于 2017-3-8 14:59

yang785962193 发表于 2017-3-7 11:43
大佬,我想看Android代码,为什么你贴出来的好像都是java代码,我看不懂java代码,我只看的懂Android代码.. ...

实在不想说,你真是白学android了

高手寂寞 发表于 2017-3-7 10:35

为毛我看着像java代码呢

hnliuzesen 发表于 2017-3-7 11:18

高手寂寞 发表于 2017-3-7 10:35
为毛我看着像java代码呢

安卓的就是和java差不多

暖意 发表于 2017-3-7 11:22

一直想看看

yang785962193 发表于 2017-3-7 11:43

大佬,我想看Android代码,为什么你贴出来的好像都是java代码,我看不懂java代码,我只看的懂Android代码.........

idolohas 发表于 2017-3-7 11:56

解包???

by_l 发表于 2017-3-7 12:18

谢谢分享

wqh171941 发表于 2017-3-7 12:57

楼主还缺基友不,我应聘。

wqh171941 发表于 2017-3-7 12:58

高手寂寞 发表于 2017-3-7 10:35
为毛我看着像java代码呢

Android就是java语言开发的哥们
页: [1] 2 3 4
查看完整版本: 基于看雪阿里早期加固代码还原4.4-6.0兼容7.0