浏览 290 次
|
该帖已经被评为隐藏帖
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-01-12 关键字: svn 版本控制工具 svn client
最近有个小项目用SVN作版本控制(以前都用StarTeam,为了支持开源,选择了SVN),想找个好用的SVN客户端工具,以前用过小海龟,但不喜欢往资源管理器上加插件,本来资源管理器就已经够乱的了,还加插件,无法忍受!而且,系统重装后还得重装小海龟,麻烦!在网上搜罗好久,找到了SmartSVN,挺好的,只以专业版要钱。虽说基础版功能对于一般的用户也足够了,但追求尽善尽美一直是我的性格,于是去官网申请了一个专业版试用License。试用License在1月14日即将到期,该动动手术了。
手术工具有两个:jshrink(2.39版)和rej(0.7版),如果不清楚这两个工具是啥东东的兄弟,请记住还有一个网站叫“google“,有一种方式叫“搜索”。 首先,用rej打开smartsvn.jar包,查找关键字“expired”,然后根据再查找引用该关键字的地方,最后定位到校验Lincese签名的地方,查找过程很啰嗦就不多讲了,找到的位置是smartsvn.tG类中的 static private void a(al a1, java.security.MessageDigest m2)方法,用jshrink反编译后如下: static private void a(al a1, java.security.MessageDigest m2) throws abp {
byte[] b3;
byte[] b4;
int i6;
b3 = a1.a();
b4 = tG.a(m2, 16);
Math.min(b3.length, b4.length);
l5 = return;
i6 = 0;
while (i6 < l5) {
if (b3[i6] != b4[i6]) {
throw new abp("Invalid signature");
}
i6++;
}
}
看来只要想办法在while循环之前跳出方法就行了。于时再用rej打开,找到Math.min(b3.length, b4.length);语句,在它的下面增加一个“return”,然后保存。再到 “用户主目录\.smartsvn\3“目录下打开license文件(纯文本的),将其中的: DemoUntil=2008-1-14 改为 DemoUntil=2010-1-14 ,再启动SmartSVN,它提示过期日期是2010-1-14,成功了!SmartSVN不再校验License的签名,可以把试用版到期时间改为任意有效日期了。至此,手术算是基本成功了,可以无限期地使用SmartSVN的专业版功能了。 前面我说过,追求尽善尽美是我的性格,每次启动喋喋不休地提示我是试用版本,累不累啊?!想办法除掉试用版提示。 再用rej打开smartsvn.jar,再查找关键字“expired”,最后找到smartsvn.Ql类的static public String a(java.util.Date d1)方法,反编译后如下:
static public String a(java.util.Date d1) {
return new StringBuffer().append("Your Professional demo license will expire on ").append(java.text.DateFormat.getDateInstance().format(d1)).append(".").toString();
}
试用版提示框上显示的就是这句话,只要找到引用这句话的地方,应该是说出提示框的位置吧,继续找,找到smartsvn.vf类的public final void a(dj d1)方法,反编译如下:
public final void a(dj d1) {
sW.b();
d1.c(Ql.a(a), Ql.h());
}
看来d1.c(Ql.a(a), Ql.h());这句就是烦人对话框的出生地了,用rej在这句话前加个“return”,保存,再启动SmartSVN,没再出现烦人的提示框了!在干净的天空下呼吸是如此地自由!! 为了避免招来跟陈福寿一样的麻烦,我就不在这里贴手术后的smartsvn.jar包了。下面我贴一下我修改过的试用License、SmartSVN基础版和专业版界面截图。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |



