Jrebel For Android 破解过程

来源:互联网 发布:英语社交软件 编辑:程序博客网 时间:2024/06/17 17:25

Jrebel For Android 需要破解两个jar包jr-android.jar和jr-android-ide-studio.jar

每个jar包中需要处理的class每个版本不同

我这里以1.1.8版为例演示破解过程

jr-android.jar中需要破解的文件为com/zeroturnaround/jrebel/android/b.classa方法


 
 public static boolean a(UserLicense paramUserLicense, km paramkm)  {    if (paramkm.product == null) {      throw new LicenseException("<span style="color:#FF6666;">Missing product name</span>.");    }    paramkm = (paramkm = kl.getByName(paramkm.product)).a();    paramkm = paramkm;paramUserLicense = paramUserLicense;Object localObject = new BouncyCastleProvider();(localObject = Signature.getInstance("SHA1withRSA", (Provider)localObject)).initVerify(paramkm);((Signature)localObject).update(paramUserLicense.getLicense());return ((Signature)localObject).verify(paramUserLicense.getSignature());  }

修改为

  public static boolean a(UserLicense paramUserLicense, km paramkm)  {    return true;  }


参数中km paramkm每个版本都会不同,定位该方法位置为返回值为boolean,方法名为a,第一个参数类型为UserLicense

jr-android-ide-studio.jar中需要破解的文件为com/zeroturnaround/jrebel/android/dB.classa方法

  public static boolean a(UserLicense paramUserLicense, PublicKey paramPublicKey)    throws Exception  {    BouncyCastleProvider localBouncyCastleProvider = new BouncyCastleProvider();    Signature localSignature = Signature.getInstance("SHA1withRSA", localBouncyCastleProvider);    localSignature.initVerify(paramPublicKey);    localSignature.update(paramUserLicense.getLicense());    return localSignature.verify(paramUserLicense.getSignature());  }


修改为

  public static boolean a(UserLicense paramUserLicense, PublicKey paramPublicKey)  {    return true;  }


定位改方法位置为返回值boolean,方法名为a,第一个参数类型为UserLicense,第二个参数类型为PublicKey

实际中可以写成一个破解工具出来进行破解,我这里已经写了一个出来,不打算放出来,避免zeroturnaround公司修改算法,也请写出来了破解工具的同学不要放出来

1 0