破解Charles

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33438733/article/details/83097292

前言

收费是不可能收费的,这辈子都不能收费的!

破解

由于Charles是使用java这种弱语言编写的,即使加了各种混淆,但是也难逃被破解的命运!
官网上下载的只能免费使用30天

首先使用jadx-gui打开,搜索关键字符串This is a 30 day trial version,很容易便可以看到验证逻辑。

01

也就是我们只需使kKPk.IcJx()的返回true即可完成破解,这是本文的重点,也是写作的目的。
总的来说有两种方式:
第一种使用jbe工具,修改字节码
第二种利用javassist修改字节码

方法一

这种方法一般来说比较的暴力,直接修改字节码,一般来说如果程序本身不做校验,那么此方法是可行的,大不了干脆把校验的部分也给去除。哈哈没错,就是这么刚!
jbe这个工具官网上只有源码和未打包的bin目录,可以在本地自己编一个java项目,也可以在csdn上下载别人打包好的jar

首先我们需要在linux下解压charles.jar包,找到kKPk.class文件,然后使用jbe打开,找到关键函数,这里你需要了解一下java的字节码。

02

03

然后做如下的修改

在这里插入图片描述

为什么要改成这样?你完全可以自己写一个简单的java函数,然后使用jbe进行查看。

之后将修改之后的kKPk.class文件替换jar包中的kKPk.class,为了验证是否修改成功,再次使用jadx-gui打开修改之后的charles.jar

05

然后再次运行便可以去除了使用30天的提示,如果你想个性化一点还可以修改kKPk.JZIU()的方法,使其返回你的ID,我这里便不做了。

方法二

这里使用IDEA编写代码并且需要导入javassist.jar
核心代码如下:

public static void patchClass(String jarPath) throws Exception {
        ClassPool classPool = ClassPool.getDefault();
        classPool.insertClassPath(jarPath);
        CtClass ctClass = classPool.get("com.xk72.charles.kKPk");
        //修改return true
        CtMethod ctMethod = ctClass.getDeclaredMethod("lcJx", null);
        ctMethod.setBody("{return true;}");
        ctMethod = ctClass.getDeclaredMethod("JZlU", null);
        ctMethod.setBody("{return \"Cracke by BadRer!!\";}");
        //更新class文件
        ctClass.writeFile();

        //修改原有的方法名
//        ctMethod.setName("a");

    }

我们可以在项目中看到kKPk.class文件,之后我们可以使用jar uvf charles.jar com/xk72/charles/kKPk.class将修改之后的class文件打入jar包中,同样在此使用jadx-gui查看

06

最后将charles.jar替换即可

所以破解其实很简单。。。

总结

最后建议使用第二种方法会更加的方便,毕竟不是每个人都对java的字节码很熟悉。

猜你喜欢

转载自blog.csdn.net/qq_33438733/article/details/83097292