浏览 2478 次
锁定老帖子 主题:一个SVN Client工具的小手术
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-01-12
手术工具有两个: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基础版和专业版界面截图。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |