pub

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  1 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks

我的评论

以数据库为中心的程序这种问题会很多
说明你们的程序不够OO,太多信赖于数据库 比如自增字段。
re: 破解JIRA3.3 pub 2007-03-16 17:07  
这些证实都不是有效的破解 ,在3.7版本上都不可用 , JIRA 的 Licenes 部分都没经过混淆 ,所以很容易就反编译了 , 破解更容易 , 可以换掉它验证License的 DSA 公钥文件 , 然后用自己的私钥文件产生一个License 文件,这是最麻烦的
最简单的方式是 修改 com.atlassian.license.decoder.LicenseDecoder 文件内容如下

package com.atlassian.license.decoder;

import com.atlassian.core.util.StringUtils;
import com.atlassian.license.*;
import java.io.InputStream;
import java.security.*;
import java.security.spec.X509EncodedKeySpec;
import java.util.Date;
import java.util.StringTokenizer;
import org.apache.log4j.Category;

public class LicenseDecoder
{
private static License license ;
public LicenseDecoder()
{
}

public static License getLicense(LicensePair pair, String applicationName)
{
license = new DefaultLicense(new Date("2032/03/15"),new Date("2099/12/31"),"publish" ,new DefaultLicenseType(267, "JIRA Enterprise: Commercial Server", false, false), 100000,"") ;
return license ;
}

public static boolean isValid(LicensePair pair, String applicationName)
{
return getLicense(pair, applicationName) != null;
}

private static PublicKey getPublicKey(String applicationName)
throws LicenseException
{
return null ;
}

private static License loadLicense(LicensePair pair, PublicKey publicKey, String applicationName)
{

return getLicense(null , null);
}

private static String getLicenseIdFromLicenseString(String originalLicenseString)
{
if(originalLicenseString != null && originalLicenseString.length() > 70)
return StringUtils.replaceAll(StringUtils.replaceAll(StringUtils.replaceAll(originalLicenseString, "\n", ""), "\r", ""), "\t", "").substring(59, 69).toUpperCase();
else
return "";
}

private static String getDecodedMessage(byte message[])
{
return new String(message);
}

public static boolean isValid(LicensePair pair, PublicKey publicKey, String applicationName)
{
return loadLicense(pair, publicKey, applicationName) != null;
}

public static String getPublicKeyFilename(String applicationName)
{
return LicenseManager.getInstance().getLicenseTypeStore(applicationName).getPublicKeyFileName();
}


}

这样就可以用到 2099年了 , 如果你愿意 ,用到 9999年都可以 。