xxx破解过程分享
本帖最后由 姐又寡闻了 于 2019-6-6 22:19 编辑以前一直都是在索取破解版,现在自己有能力了,也给大家分享下我的破解。这次是Charles的破解。
Charles的破解其实很简单,因为它是用Java做的注册验证。所以只要替换类就可以了,关键就在于找到那个类。使用jd-gui看字节码,我这边做了不完全的统计:
这是3.10.2的License.class:
这是3.11.4的License.class:
这是4.0.2的License.class:
这是4.1.2的License.class
可以发现,每个版本的License.class的包名和类名都不一样,其中4.0.2的XXXX犯了一个很大的失误,连类名都忘记混淆了。知道了类名,事情就好办了,大致浏览一遍代码,发现License.class里被外界用到的只有3个public static方法。就最新的4.1.2来说,用下面的代码覆盖原代码即可:
package com.xk72.charles;
public final class qFep {
public static boolean gtOW() { return true; }
public static String SkgP() { return "52pojie"; }
public static String gtOW(String name, String key) { return null; }
}
而4.0.2则是:
package com.xk72.charles;
public final class License {
public static boolean a() { return true; }
public static String b() { return "52pojie"; }
public static String a(String name, String key) { return null; }
}
其它版本也是一样的破解方式,只是因为包名、混淆的类名、方法名不一致,所以需要根据实际的类来生成。整个破解我们可以用脚本来完成:
charles=/Applications/Charles.app/Contents/Java/charles.jar
dir=charleshack
mkdir $dir
cd $dir
cat >> qFep.java <<EOF
package com.xk72.charles;
public final class qFep {
public static boolean gtOW() { return true; }
public static String SkgP() { return "周骞"; }
public static String gtOW(String name, String key) { return null; }
}
EOF
javac -encoding UTF-8 qFep.java -d .&& jar -uvf $charles com/xk72/charles/qFep.class
cd .. && rm -rf $dir
附上破解成功的截图:
写在最后:
大家可以看到xxx的License.class上有个写给破解者看的话:
Thanks for looking at the source. Please register Charles if you use it.
本文内容仅供大家学习交流使用,还请支持正版,你懂的。。。
PS. 第一次在52pojie发帖,不知道会有多少关注,请大家支持 Charles v4.1.2版本分析记录
–by B.S.
5/23/2017 1:32:17 PM
最新版v4.1.2相对v.4.0.2比较,明文类名已混淆.
反编译为源码后,找关键点的分析流程:
在com\xk72\charles\gui\frames\RegisterFrame.java里找到this.bRegister.addActionListener导入的类import com.xk72.charles.gui.frames.GTvL;
在com.xk72.charles.gui.frames.GTvL里找到if (object2 != null) 使他永久为null的函数导入的类import com.xk72.charles.qFep;
在com.xk72.charles.qFep里就是关键类。分析关键点HOOK。 在com\xk72\charles\gui\frames\RegisterFrame.java里找到this.bRegister.addActionListener导入的类import com.xk72.charles.gui.frames.GTvL;
在com.xk72.charles.gui.frames.GTvL里找到if (object2 != null) 使他永久为null的函数导入的类import com.xk72.charles.qFep;
谢谢分享 不错的帖子,值得学习一下。 厉害了,感谢分享 除了分析破解后的文件来学习如何修改的,最好能分析出为什么这么改能破解。 连类名都忘记混淆了
真的是极大的失误!! 学习楼主的破解过程,感谢分享经验 学习一下,正要这个软件呢