-
-
[原创]Zelix KlassMaster V5.1.1分析
-
发表于:
2008-5-30 23:56
18929
-
[原创]Zelix KlassMaster V5.1.1分析
java破解,首次写破文,请前辈们多指教
破解的是Zelix KlassMaster V5.1.1 试用版,试用期1个月
分析入口:
ZKM.jar 用rar查看 META-INF/MANIFEST.MF 下的Main-Class 信息
Main-Class: com.zelix.ZKM,证明入口在这个类
Eclipse 建立java工程,运行com.zelix.ZKM.main(String[] args)
直接进入显示授权的JFrame
寻找关键点:
Crack的关键就是寻找关键点,或者说是寻找载入注册信息的那段代码
发现授权JFrame上有Zelix KlassMaster的图片,
所以在java.awt.MediaTracker.addImage(Image image, int id)
下系统断点找到com.zelix.wl类
分析com.zelix.wl,制作测试方法
public static void licenseFrame() {
wl showMsg = new wl("1", "2", "3");
JFrame f = new JFrame();
f.add(showMsg);
f.setSize(400, 400);
f.setVisible(true);
}
可以单独显示授权JFrame,证明思路正确,继续
分析com.zelix.wl得出,授权信息来自
String z[]
而z[]的信息来自void a()方法
在void a()方法中,通过映射取得的其它类中的信息,由于代码混淆了,很难
找到这个类,
下系统断点java.lang.reflect.Method.invoke(Object obj, Object... args)
分析得出这个包含信息的类是com.zelix.ae
分析ae得知
private static String b; //到期信息
private static String c ;
private static String d ;
private static final String z = "1aIbrE$zOaExwM71y";//固定字符串
更改字段b的值
Field f = ae.class.getDeclaredField("b");
f.setAccessible(true);
f.set(ae.class, "1111111111");
com.zelix.ak.a(String s1, String s2, String s3, Object obj)
报异常
分析此方法,主要的验证逻辑就在这个方法中
逻辑很简单,我就不再分析了,直接把破解的ae粘出来
private static final String a[] = new String[] { "授权号:", "无", "到期日期:", "", "获许人:", "none", "说明:", "请不要用于商业用途", "", "" };
private static String b = "9466968747021";
private static String c = "678000000000";
private static String d = "83000000000";
private static final String z = "1aIbrE$zOaExwM71y";
public static String a(Object obj) {
return a[((Integer) obj).intValue()].trim();
}
public static String a() {
return z;
}
public static String a(int j) {
return a[j];
}
public static String b() {
return b;
}
public static String c() {
return c;
}
public static String d() {
return d;
}
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!