Charles 4.5.1逆向工程/破解

Charles 4.5.1逆向破解

前两天剁了Burp Pro 2.1.04破解版,今天写写如何破解Charles 4.5.1。该文主要以逆向与软件安全为方向编写(作者scz)。你也可参阅Charles破解版/破解工具找到你想要的。

Charles如果未注册,启动时有个10s倒计时,30天试用期,每运行30分钟就自动退出。

Charles缺省是用其自带JDK 11启动的:

正常注册流程是:

这里会弹一个对话框,有RegisterCancel两个按钮。如何找到Register按钮对应的代码?假设Register按钮用到了JButton,在按钮上显示"Register"这个字符串时会用到javax.swing.AbstractButton.setText(),查看它的调用栈回溯,或许就能定位Register按钮对应的代码。

javax.swing.AbstractButton.setText()设断,命中时:

爽到了,关注"com.xk72.charles.gui.frames.RegisterFrame.class"。

比起Burp Pro 2.1.04Charles 4.5.1的混淆程度太弱,说是一马平川不为过。据说Charles早期版本没有混淆过,比如4.0.2,我以前没接触过。

Charles 4.5.1反编译

com.xk72.charles.gui.frames.RegisterFrame.class

com.xk72.charles.gui.frames.PeRA.class

YQUd.class共有5个public method:

  1. public com.xk72.charles.YQUd();
  2. public static boolean tEdg();
  3. public static void TryJ();
  4. public static java.lang.String NCuT();
  5. public static java.lang.String tEdg(java.lang.String, java.lang.String);

com.xk72.charles.YQUd.class

编辑YQUd.java:

编译YQUd.java得到新的YQUd.class,替换charles.jar中的YQUd.class

比起Burp,破解Charles实在是太简单了。要点是定位YQUd.class,每个版本混淆后的名字都不一样,需要重新定位。由于已经讲清楚原理,以后破解都不需要动态调试设断,直接在反编译器中静态定位。

作者:scz