Charles 4.2.6 通用破解文件for Mac and
Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request, response和HTTP headers (包含cookies与caching信息)。
在日常的抓包过程中可谓是必不可少的利器。同时Charles又是很人性的,虽然是收费软件,但即使不购买也能长期使用,并且功能上不会缺斤短两。唯一要付出的代价是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。秉着研究目的来学习它的注册逻辑。
一、找到注册逻辑
惯例,从注册按钮事件开始开始。
可以看到bRegister的监听事件,继续跟进yXfw
注意这里有一个明显的关键性判断: GPSz.Dgmx(paramActionEvent, str)) != null,在之前的文章分析过,如果直接删掉这个判断的话会导致异常,所以需要进一步跟进GPSz类。这个类代码较多,就不全贴了,只挑重点的代码进行分析。
首先,从调用上看,该方法返回了null值,但是fxWP = paramString1又有一个赋值的操作。
接着,我们来整理几个重点的方法来看。
public static void fxWP()
{
GPSz localGPSz;
fxWP = localGPSz = new GPSz();
}
public static boolean Dgmx()
{
GPSz localGPSz;
return (localGPSz = fxWP).Wmmw;
}
public static String Wmmw()
{
GPSz localGPSz = fxWP;
switch (KgSE.Dgmx[localGPSz.pyEQ.ordinal()])
{
case 1:
return localGPSz.HFjb;
case 2:
return localGPSz.HFjb + " - Site License";
case 3:
return localGPSz.HFjb + " - Multi-Site License";
}
return localGPSz.HFjb;
}
private String AKCM()
{
switch (KgSE.Dgmx[this.pyEQ.ordinal()])
{
case 1:
return this.HFjb;
case 2:
return this.HFjb + " - Site License";
case 3:
return this.HFjb + " - Multi-Site License";
}
return this.HFjb;
}
这里有个布尔型的值Dgmx(),我们直接让它返回true就可了。然后下面的String类型Wmmw()方法,根据一个值来判断License的类型。我们不管那么多,直接了当的将方法返回值改成我们自己的string。
二、解决编译问题
接下来就是重新编译一下java文件,这是如果直接编译会发现报了一堆的错误,例如找不到LicenseType、乱码、LicenseException异常捕获错误等等。
举例来说:解决乱码
// 要去掉中间的,直接改为[]
paramString1.replaceAll("[�����������������������]", " ");
我们把这些错误解决后,就会得到修改后的class文件。
三、替换jar中的原始class文件
使用jar命令更新jar包,这里只需要注意package路径就好。GPSz类是在package com.xk72.charles的下面,所以需要本地创建一个一样的路径,否则不能正常更新到对应的jar目录。
四、试验
替换到原始的jar文件,打开charles,完美运行。
jar包下载
链接: https://pan.baidu.com/s/1DUnFVXJHTa4d9TiBfDzgQQ
密码: gqpg