Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1449177
  • 博文数量: 3500
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 43870
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-03 20:31
文章分类

全部博文(3500)

文章存档

2008年(3500)

我的朋友

分类:

2008-05-04 19:05:18

一起学习
2005年3月中旬,我开始听说了有一种软件,可以对生成的jar文件进行保护.为了完善自己的知识,便决定使用这种叫做混乱器(Obfuscator)的东西.由于以前曾经作过一些逆向工程的活动.所以下载了一些混乱器进行研究.由于大多数混乱器,都使用自身来保护自己的发布版本. 所以这是研究和使用混乱器的一个捷径.首先接触的就是Jshrink由于其直接显示GUI界面所以最先使用.但是其网站中提供的下载版本,必须输入序列号之后才能正常使用.否则不能进行任何操作. 第一步,使用反编译器找出jar文件的主类(Main-Class): jshrink.jshrink.研究其中的代码.首先是public static void main(String args[])方法,发现其中有处理命令行部分的代码,同时我发现,Jshrink有加密类文件字符串的功能.同时调用时使用I.I.I(xxxx)方法. 如:System.out.println(I.I.I(1243));表示I.I.I()方法返回的是字符串对象. 第二步,解密字符串,找出软件的提示信息.为了方便我使用了注入技术(我自己定义的犯法),即制作一个类并且添加到jar包中,并且设置package路径与软件的包路径相同,即可使用I.I.I()方法.找出jshrink.jshrink类中所有I.I.I()方法的调用,并添加到自己的显示字符串内容的类中.生成解密字符串文件 第三步,根据解密的字符串替换反编译之后的源文件,找到软件中对于序列号判断的代码块. 在类中: G CQSH;// ... 关键类 ...... int s = CQSH.S(); switch(s) { case 0: //正确并且没有过期 case -1: ... break; case 1: //错误 ..... break; case 2: ..... break; case 3: ..... break; } 由于想制作注册机,所以不进行爆破 第四步,找出G类中S()方法的生成方式,制作相应的注册机. 由于时间关系,就不详细介绍制作的思想了.只介绍注册的方法: 首先获取用户输入的序列号,格式为(分为两种) 第一种 使用15天方式 [yyyy/mm/dd yourInformat Serial] yyyy/mm/dd为注册的时间 第二种 无限制用户 格式同上 不同之处在于15天试用版 中yourInformat中包含'@'也就是电子邮件地址,无限制用户的用户信息中不能包含@字符 生成Serial的方法(设 s1=日期 s2=Information s3=serial) MessageDigest md5 = MessageDigest.getInstance("MD5"); md5.update(s1); md5.update(s2); if(s2.indexOf('@')!=-1) { md5.update("sin"); //注意版本不同 字符串也不同 } else { md5.update("cos"); // 此处值为2.36版 } byte data[] = md5.digest(); StringBuffer sb = new StringBuffer(); for(int i1 = 0; i1 < data.length; i1 ) sb.append((char)(65 (data[i1] & 0xff) % 26)); String s4 = sb.toString(); if(s3.equals(s4)) { boolean flag = (s2.indexOf("@")!=-1); if(flag == true) // 试用版 { Data t1,t2; t1 = System.current..(); //返回当前时间 忘了 te = ....; //通过s1生成注册时间 //比较如果超过15天则返回 3 即失败 } else { return 0; } } 下载本文示例代码


关于破解JShrink 2.36关于破解JShrink 2.36关于破解JShrink 2.36关于破解JShrink 2.36关于破解JShrink 2.36关于破解JShrink 2.36关于破解JShrink 2.36关于破解JShrink 2.36关于破解JShrink 2.36关于破解JShrink 2.36关于破解JShrink 2.36关于破解JShrink 2.36
阅读(200) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~