Charles逆向分析记录及破解程序CharlesLoader源码

查尔斯动态加载启动器(CharlesLoader) v4.x


—by B.S. 5/5/2017

极其强大的Web调试、代理抓包工具启动器。 Charles v4.x 动态加载启动器loader 最新版v4.1.2相对v.4.0.2以上版本比较,明文类名已混淆。

gitoschina码云源码: http://git.oschina.net/iYoungDone/charlesloader

破解 Charles 的屌炸天的 shell 脚本for MacOS,Linux,Unix

最新charles-v4.1.4破解文件(For All)

  1. Windows 平台,将下载的charles.jar文件覆盖到安装目录下的lib文件夹下即可完成破解!
  2. Mac 平台,将下载的charles.jar文件右键 Charles.app 显示包内容,覆盖到Content->Java下即可完成破解!
    注意: 这是v4.1.4的破解文件,不确定其他版本也同样适用!请下载相应版本文件,然后改名为charles.jar.

Charles v4.1.4版本分析记录

–by B.S.

July 18, 2017 5:25 PM

最新版v4.1.4相对v.4.0.2比较,明文类名已混淆.
反编译为源码后,找关键点的分析流程:
这里414试一试另外一种更简单的方法:
  1. 在com.xk72.charles.gui.SplashWindow.java里找到
    public void showRegistrationStatus()函数方法;
    1
    2
    3
    4
    5
    6
    7
    public void showRegistrationStatus() {
    if (gIbD.xUFT()) {
    this.showStatus("Registered to: " + gIbD.PcqR());
    return;
    }
    this.showSharewareStatus();
    }
  1. 在if()条件里的,是否注册成功gIbD.xUFT()函数和”Registered to: “后面的注册给谁的gIbD.PcqR()函数,都来自import com.xk72.charles.gIbD类
  2. 在com.xk72.charles.gIbD就是关键类。修改掉上面两个函数即可。

hook掉public static boolean x1()和public static java.lang.String x3()两个方法函数就可以了,当然最好public修饰的都hook掉;

只需要在用javassist时,设置这一句就可以将破解好的class类文件就会dump出来

CtClass.debugDump = “./charles-bs-cr”;


Charles v4.1.3版本分析记录

–by B.S.

6/27/2017 2:07:52 PM

最新版v4.1.3相对v.4.0.2比较,明文类名已混淆.
反编译为源码后,找关键点的分析流程:
  1. 在com\xk72\charles\gui\frames\RegisterFrame.java里找到this.bRegister.addActionListener导入的类import com.xk72.charles.gui.frames.NvMh;
  2. 在com.xk72.charles.gui.frames.NvMh里找到if (object2 != null) 使他永久为null的函数导入的类import com.xk72.charles.psPJ;
  3. 在com.xk72.charles.psPJ里就是关键类。分析关键点HOOK。
  4. 用javap -public psPj.class查看给外部类调用的公有函数方法如下:
    1
    2
    3
    4
    5
    6
    7
    public final class com.xk72.charles.psPJ {
    public com.xk72.charles.psPJ();
    public static boolean qIvM();
    public static void mLFE();
    public static java.lang.String tCiz();
    public static java.lang.String qIvM(java.lang.String, java.lang.String);
    }

hook掉public static boolean x1()和public static java.lang.String x3()两个方法函数就可以了,当然最好public修饰的都hook掉;

  • 只需要在用javassist时,设置这一句就可以将破解好的class类文件dump出来然后打包回原来的charles.jar里,破解文件制作完成.

    CtClass.debugDump = “./charles-bs-cr”;

  • 要做跨平台的破解文件最好用MacOS下的charles.jar文件进行破解,Windows平台下的文件破解后到MacOS下起不来.我比对过破解的class类文件,二进制是相同的,估计在其他地方有细微差别.


Charles v4.1.2版本分析记录

–by B.S.

5/23/2017 1:32:17 PM

最新版v4.1.2相对v.4.0.2比较,明文类名已混淆.
反编译为源码后,找关键点的分析流程:
  1. 在com\xk72\charles\gui\frames\RegisterFrame.java里找到this.bRegister.addActionListener导入的类import com.xk72.charles.gui.frames.GTvL;
  2. 在com.xk72.charles.gui.frames.GTvL里找到if (object2 != null) 使他永久为null的函数导入的类import com.xk72.charles.qFep;
  3. 在com.xk72.charles.qFep里就是关键类。分析关键点HOOK。

Charles v4.1.1版本分析记录

–by B.S.

5/5/2017 8:30:00 AM

最新版v4.1.1相对v.4.0.2比较,明文类名已混淆.
反编译为源码后,找关键点的分析流程:
  1. 在com\xk72\charles\gui\frames\RegisterFrame.java里找到this.bRegister.addActionListener导入的类
    import com.xk72.charles.gui.frames.idkH;
  2. 在com.xk72.charles.gui.frames.idkH里找到if (object2 != null) 使他永久为null的函数导入的类import com.xk72.charles.slZe;
  3. 在com.xk72.charles.slZe里就是关键类。分析关键点HOOK。
您觉得好,您就随意打赏点吧(*^__^*)您的鼓励,是我坚持的动力!