雪湖小札@blogjava

心情与技术文档同行 http://hi.baidu.com/jingleq

BlogJava 首页 新随笔 联系 聚合 管理
  24 Posts :: 2 Stories :: 4 Comments :: 0 Trackbacks
  antlr,语言识别的一个工具(anothertoolforlanguagerecognition,前身是pccts),它提供了一个框架,可以通过包含java、c++或c#动作的语法描述来构造语言识别器,编译器和解释器。antlrstudio是一款用于eclipse的插件,可以用来创建、调试antlr语法的集成环境。
  在antlrstudio的官方网站上提供的eclipse插件并没有提供相应的licence.lic文件,所以我们还不能使用它的全部功能。
  在CowNew开源团队网站 www.cownew.com上由kingchou提出了一个破解方案,我的操作都是基于这个方案的。
  方案是这样描述的:AntlrStudio中antlr_Studio.license包中主要的类,也是其抵挡未注册者使用的主要防线。1、当插件启动时会先调用ASLicenseManager类的checkForLicense()。2、方法checkForLicense在此调用LicenseManager类的daysLeft()获取剩余日期。3、进而触发License类,其读取License.lic注册文件的信息,并会调用SignatureUtil工具类对其签名做验证。在ASLicenseManager中有一个很薄弱的环节,即:
int i = licensemanager.daysLeft();
if (i != -2) {
      if (hasAlreadyExpired() || i <= 0)
  ……
只要daysLeft()返回值为-2即判断为正式用户。因而只要修改LicenseManagerImpl的daysLeft()方法为:
public int daysLeft() {
      ……
      return -2;
}
  由xml1123提出的修改是:直接将i   赋值为-2
int i = licensemanager.daysLeft();
i=-2;
if (i != -2) {
 ……
  我的作法是采取了xml1123的修改。
  以下描述我的修改步骤:
  (1).在eclipse\plugins\AntlrStudio_1.1.0中找到AntlrStudio.jar文件。解压AntlrStudio.jar\antlr_Studio\license中的ASLicenseManager.class出来,放到与jasml.jar(参考asm学习(0)--java字节码工具Jasml)同一级目录下。
  (2).cmd进入控制台,cd到jasml.jar目录下,输入以下命令:
  set classpath=%classpath%;jasml.jar;
  java jasml -d ASLicenseManager.class
  (3).打开生成的ASLicenseManager.jasm文件,找到
   ----------- 原文 ---------
   invokevirtual   int antlr_Studio.license.LicenseManager.daysLeft()
            istore_1
            iload_1 
            bipush   254
   ----------- 修改为 ----------
            invokevirtual   int antlr_Studio.license.LicenseManager.daysLeft()
            istore_1
            bipush 254
            istore_1
            iload_1 
            bipush   254
  (4).通过jasm文件编译成.class文件。在控制台中输入命令:
  java jasml -c -o ASLicenseManager.jasm
  重新生成了ASLicenseManager.class文件
  (5).把生成的ASLicenseManager.class文件覆盖在原来eclipse\plugins\AntlrStudio_1.1.0中找到的AntlrStudio.jar文件中的ASLicenseManager.class。
  (6).新建一个license.lic文件,放到plugins\AntlrStudio_1.1.0下,里面的内容为:
2007-01-01
Signature
=0001
  启动eclipse成功进入。
  修改好的ASLicenseManager.class.下载地址:http://www.blogjava.net/Files/csnowfox/ASLicenseManager.rar直接找到覆盖就行。
  注意:此文仅供研究参考。提倡使用正版。

 

posted on 2007-06-17 19:50 csnowfox 阅读(1821) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。

网站导航: