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包就行了
请问怎么样定位到License.class 这个类?
@helix https://github.com/Qrilee/CharlesLoader 参考这里