Charles4.0最新版破解(更新至4.1)
前言
现在在OSX下办公,开发中Charles作为非常优秀的一款抓包工具必不可少。之前的3.x版本是公司的资管给输入的注册码,用着非常爽。今天突然提示可以升级为新版本,好奇和欣喜的心情就下载并安装了。万万没有想到,替换旧应用居然不会保留注册信息。Orz。本着不麻烦别人的初衷,尝试着自己动手破解。于是就这样踏上了一条不归路。
开门见山
- 下载破解好的charles.jar 文件。链接: https://pan.baidu.com/s/1qY9x70S 密码: b46n
- (4.0.1版本已更新,链接: https://pan.baidu.com/s/1sl8cRox 密码: ngzz)
- 4.1版本更新,感谢博友 黎稀 提供。链接:https://pan.baidu.com/s/1c14trDe 密码: wc6d
- 在应用程序中右键Charles,选择“显示包内容”。
- 依次打开目录:Contents -> Java
- 用下载的charles.jar替换目录中的charles.jar。
- 重启Charles即可。
自己动手
方法来源
工具
- jdk
class反编译软件
jdk编译代码,打jar包。反编译软件随意,看网友推荐jadx,不知是我用的不对还是怎么,并未成功,我直接用的IDEA,class文件直接拖进去即可。
步骤
首先将charles.jar解压,观察内部类结构。虽然名字都扰码变成了A.class之类的,但是com/xk72/charles中一眼就能看到有个License.class,如果我的英文没烂到这个词都认错了,肯定和它有关系,打开瞧瞧。
变量和方法名都变了,看不出太多的信息,但是其中一个方法巨多的位运算,更加对我的猜想自信了。但是这个类有这么多不知用途的方法,具体的逻辑有看不出来,怎么办呢?反正今天闲,一个一个的看其他的class,看看都哪里调用了这个类的方法,对返回值是怎么判断的。如果能找到,应该有突破。
看了上百个class后,得到信息如下:
com/xk72/charles/gui/frames/下有个RegisterFrame,判断为填写注册吗的界面,打开后发现同目录的f.class为那个注册按钮的事件监听器。打开f.class.
123456789101112131415public final void actionPerformed(ActionEvent var1) {String var4 = RegisterFrame.a(this.a).getText().trim();String var2 = RegisterFrame.b(this.a).getText().trim();if(var4.length() > 0 && var2.length() > 0) {String var3;if((var3 = License.a(var4, var2)) != null) {ExtendedJOptionPane.a(this.a, var3, "Charles Registration", 2);return;}ExtendedJOptionPane.a(this.a, "Thank you for registering.......}}可以看出注册码的验证逻辑都落在了License.a(var4, var2)这个方法上。只要修改了这个方法,使它永远返回null,就可以绕过真正的验证逻辑。
在第一步找到的Lisense.class的135行找到该方法如下:
1234567891011public static String a(String var0, String var1) {License var3;try {var3 = new License(var0, var1);} catch (LicenseException var2) {return var2.getMessage();}b = var3;return null;}将整个License.class内容复制到一个新文件License.java中。将上述方法改为:
123456789101112public static String a(String var0, String var1) {if(0 < 1) return null;License var3;try {var3 = new License(var0, var1);} catch (LicenseException var2) {return var2.getMessage();}b = var3;return null;}于是就实现了永远返回null。但是原本的逻辑中,如果验证成功了会对b这个变量赋值。然过后,再调用b的时候可能会有问题报错。于是继续补洞,看看b都在哪里被用到了。
就按照如上的方式,逐步找到了其他调用授权信息的地方。根据判断逻辑改写License.java中的几方法。修改的内容如下:
123private License$LicenseType f;改为private int f;12345678public static boolean a() {License var0 = b;return b.c;}改为public static boolean a() {return true;}123456789101112131415161718192021222324252627public static String b() {License var0 = b;switch(p.a[var0.f.ordinal()]) {case 1:return var0.d;case 2:return var0.d + " - Site License";case 3:return var0.d + " - Multi-Site License";default:return var0.d;}}改为public static String b() {License var0 = b;switch(var0.f) {case 0:return var0.d;case 1:return var0.d + " - Site License";case 2:return var0.d + " - Multi-Site License";default:return var0.d;}}12345678910111213141516171819202122232425private String d() {switch(p.a[this.f.ordinal()]) {case 1:return this.d;case 2:return this.d + " - Site License";case 3:return this.d + " - Multi-Site License";default:return this.d;}}改为private String d() {switch(this.f) {case 0:return this.d;case 1:return this.d + " - Site License";case 2:return this.d + " - Multi-Site License";default:return this.d;}}第246行:
123456789101112131415161718192021222324252627switch((int)(var6 << 32 >>> 32 >>> 16 & 255L)) {case 1:this.f = License$LicenseType.a;</div><div class="line" style="height:20px"> <span class="keyword" style="color:rgb(178,148,187)">break</span>;</div><div class="line" style="height:20px"> <span class="keyword" style="color:rgb(178,148,187)">case</span> <span class="number" style="color:rgb(181,189,104)">2</span>:</div><div class="line" style="height:20px"> <span class="keyword" style="color:rgb(178,148,187)">this</span>.f = License$LicenseType.b;break;case 3:this.f = License$LicenseType.c;break;default:throw new LicenseException(this.a(1));}改为switch((int)(var6 << 32 >>> 32 >>> 16 & 255L)) {case 1:this.f = 0;break;case 2:this.f = 1;break;case 3:this.f = 2;break;default:throw new SerialException(this.a(1));}将所有的LicenseException替换为SerialException。
删除三个import:
123import com.xk72.charles.License$LicenseType;import com.xk72.charles.LicenseException;import com.xk72.charles.p;做完以上步骤,就可以使用javac单独编译License.java类了。
1javac -source 1.7 -target 1.7 -d . License.java会在目录下产生com/xk72/charles/目录,目录中就是编译好的License.class了。
利用jar命令将篡改过的class,打入charles.jar内。
1jar -uvf charles.jar com/xk72/charles/License.class大功告成。用新的charles.jar替换原有的,重启charles。等待惊喜吧!
防止修改过程造成困扰,附上我的License.java,作为参考。License.java
原文地址:http://blog.csdn.net/endlu/article/details/52175787
Charles4.0最新版破解(更新至4.1)相关推荐
- Charles4.0最新版破解
转载地址:http://blog.csdn.net/endlu/article/details/52175787 原文地址:http://endlulu.coding.me/2016/08/09/Ch ...
- 如何破解Charles4.0.1------超级简单
安装好Charles4.0.1之后发现只能试用30天,遇到这样的问题就比较烦人,于是在网上找各种破解方法,输入了N多次regester name和licence key结果都无效: 废话少说 ...
- 最新版(2021年1月)知乎x-zse-86 2.0版本加密破解分析 爬虫 破解反爬思路
一.前言 本文仅用于技术的研究和学习使用 知乎在21年1月20日左右升级了x-zse参数的加密方法. 这是之前1.0版的x-zse-86参数 这是刚刚升级的2.0版本 二.破解思路 (不想看思路可以直 ...
- CentOS 7上安装 MongoDB数据库 4.0.0最新版
MongoDB简介 MongoDB(来自于英文单词"Humongous",中文含义为"庞大")是可以应用于各种规模的企业.各个行业以及各类应用程序的开源数据库. ...
- 微软发布Silverlight 4新版并更新Silverlight Tools和SDK
微软9月1日更新了Silverlight 4版本,同时也升级了相关SDK,在Tim Heuer的博客上,对这次升级进行了解释说明,这次升级针对以下几个问题进行了修复: SDK feature to e ...
- 2018.3.1最新版破解--测试能用(做个记录)
2018.3.1最新版破解 1.官网下载IDEA 2018.3.1的商业版本点我去下载 2.破解jar下载:JetbrainsIdesCrack-3.4-release-enc.jar点我去下载 3. ...
- 360播放器官方免费版 v3.0 最新版
360播放器官方免费版 v3.0 最新版 软件大小:518KB 软件语言:简体中文 软件类别:影音播放 软件授权:官方版 更新时间:2015-03-03 应用平台:/Win8/Win7/WinXP 3 ...
- Portraiture4.1.0最新版PS/LR磨皮美白滤镜插件
Portraiture这款插件磨皮效率超高 是99%摄影师的必备插件 一秒磨皮,无卡顿,效果好 最新版Portraiture 2023磨皮效果提升很大 之前发布了Portraitrue4.0. ...
- 財智V6.0(完美破解序列号特别版)
財智V6.0(完美破解序列号特别版) 財智V6.0(完美破解序列号特别版) 財智6是眼下唯一在中央台报道的.比較成熟的国产理財软件.能全面管理家庭的日常收入.消费.储蓄.贷款.保险.外汇. ...
最新文章
- Iterator(迭代器)接口 --对象循环遍历
- 在 iOS 应用中直接跳转到 AppStore 的方法
- Flask中的session操作
- 决胜蓝桥杯python组-字符串、列表
- 32 位的有符号整数_「js基础」JavaScript逻辑和位运算符归纳
- 非阻塞模式WinSock编程入门(Socket关联窗口消息机制)
- 每次都错部分分怎么办,总是个别点TLE,WA
- Star UML指导手册
- 2015-11-23 12:50:55
- HSPF(Hydrological Simulation Program Fortran)模型应用
- javascript函数传参方式
- Windows 下Redis客户端可视化工具-redis client
- 2022最新整理新手零基础系统的自学网络安全
- cosh和acosh--双曲余弦和反双曲余弦函数
- datawhale8月组队学习《pandas数据处理与分析》(下)(文本、分类、时序数据)
- 街景影像分析入门(二)无需秘钥,抓取百度街景影像
- 吴恩达深度学习笔记——优化算法
- C语言实现安全性极高的游戏存档并读档
- 京东格力空调和专卖店有什么区别?
- android 学生信息管理系统,android学生信息管理系统的报告.docx
热门文章
- 埙曲推荐,《天空之城》简谱
- Qt:warning: The build directory is not at the same level as the source directory
- 使用vue写的h5页面,在iOS中,需要等一会才能获取焦点
- 明日方舟抽卡模拟器wiki_明日方舟抽卡模拟器wiki
- 唯众职教学生实训系统
- 鸿蒙系统文件存取问题,一招快速搞定PS存储后文件异常大的问题
- codevs 2924 数独
- 科幻星空windows7主题
- 腾达ac1206 服务器无响应,腾达AC1206拆机
- python语言与其他语言的区别_python与其他编程语言区别全在这