利用javassit破解Charles

/ 2评 / 0

Charles是一款非常不错的抓包分析工具,支持全平台,然而收费,当然有能力必须支持正版

Charles免费版和收费版区别,免费版启动需要等待10秒,并且运行一段时间就需要等待10秒左右,Charles的破解手段也非常简单

关键点就是找到字符串Register to就行了

3.11.x的破解点一直都在com/xk72/charles/gui/P.class中,今天更新了4.0破解文件到了License.class中,这个文件位于com/xk72/charles下,跟踪一下就知道了

或者可以使用jstack命令跟踪下进程

验证点就两处,网络不好,就以3.11.x版本为例

一处校验是否注册,第二处判断当前的用户注册状态,其实第二处没什么鸟用,自己看看而已,主要就是第一处

知道关键点后就是修改,由于jar不能像dex一样直接反编译修改smali就行,很多情况下接触的都是class字节码,那么有没有比较直观的修改方式,当然有

javassit是个非常不错的动态修改工具,只需要简单的了解javassit的使用方式就可以用来修改jar

直接上java源码

ClassPool pool = ClassPool.getDefault();
//取得需要反编译的jar文件,设定路径
pool.insertClassPath("C:\\Users\\qtfreet00\\Desktop\\Charles.jar");
//取得需要反编译修改的文件,注意是完整路径
CtClass cc1 = pool.get("com.xk72.charles.License");
//        CtMethod ctMethod1 = cc1.getDeclaredMethod("a",null);
//        ctMethod1.insertAfter("{return true;}");
CtMethod ctMethod2 = cc1.getDeclaredMethod("b",null);
ctMethod2.insertBefore("{return \"qtfreet00 http://www.52pojie.cn\";}");
cc1.writeFile();

getDeclaredMethod第二个参数传入了null,因为这两个方法都没有入参,所以设为null,如果有参数时需要根据其具体类型传入,自定义class就用反射方式调用传入

运行后会在工程目录下产生一个修改后的class文件,直接替换回jar包就行了

2条回应:“利用javassit破解Charles”

  1. helix说道:

    请问怎么样定位到License.class 这个类?

发表评论

电子邮件地址不会被公开。 必填项已用*标注