【转】 aptana 1的破解方法

it2022-05-09  25

本文转自:http://blog.csdn.net/heimazhao/archive/2007/12/06/1921594.aspx 官方地址:http://www.aptana.com/studio/download

找到com.aptana.ide.core_1.0.1.004323.jar文件 编译下面的文件并替换找上面包中的对应文件(在com.aptana.ide.core.licensing目录下) 修改位置见后面注释部分说明! package com.aptana.ide.core.licensing; import java.math.BigInteger; import java.util.Calendar; import java.util.TimeZone; import java.util.zip.CRC32; public final class ClientKey {     private static class Decrypt {         private BigInteger modulus;         private BigInteger exponent;         public String decrypt(String encrypted) {             long crc32Value;             byte bytes[];             CRC32 crc32;             if (encrypted == null) {                 encrypted = "";             } else {                 encrypted = ClientKey.trimEncryptedLicense(encrypted);             }             BigInteger big = new BigInteger(encrypted);             BigInteger decrypted = big.modPow(exponent, modulus);             crc32Value = (long) decrypted.intValue() & 0xffffffffL;             decrypted = decrypted.shiftRight(32);             bytes = decrypted.toByteArray();             crc32 = new CRC32();             crc32.update(bytes);             if (crc32Value == crc32.getValue()) {                 return new String(bytes);             }             return null;         }         Decrypt(String exponent, String modulus) {             this.modulus = new BigInteger(modulus);             this.exponent = new BigInteger(exponent);         }     }     public static final String BEGIN_LICENSE_MARKER = "--begin-aptana-license--";     public static final String END_LICENSE_MARKER = "--end-aptana-license--";     private static final TimeZone GMT = TimeZone.getTimeZone("GMT");     private static final String EMAILS_NON_MATCHING = "EMAILS_NON_MATCHING";     private static final int PRO = 0;     private static final int TRIAL = 1;     private String email;     private long expiration;     private int type;     private ClientKey(int type, String email, long expiration) {         this.type = type;         this.email = email;         this.expiration = expiration;     }     public static ClientKey decrypt(String encrypted, String email) {         String modulus = "115801190261221214754334668902722425936509505416457970789287297728816388753627896293249501578830570324705253515546383166989625001335561947096747210280001245977114030627247212292377290543869343996595819188362915644707269064020812435233012510929338706599216007185654748959001143012936618501934698642942289379979";         String exponent = "65537";         if (encrypted != null) {             encrypted = encrypted.trim();         }         Decrypt decrypter = new Decrypt(exponent, modulus);         return decrypt(decrypter, encrypted, email);     }     private static ClientKey decrypt(Decrypt decrypter, String encrypted,             String email) {         String value = decrypter.decrypt(encrypted);         if (value == null) {             return new ClientKey(1, null, 0L);         }         String values[] = value.split(";");         int type = 1;         String genedEmail = null;         long expiration = 0L;         if (values.length == 3) {             if ("p".equals(values[0].toLowerCase())) {                 type = 0;             }             genedEmail = values[1];             if (genedEmail != null) {                 if (!genedEmail.equalsIgnoreCase(email)) {                     genedEmail = "EMAILS_NON_MATCHING";                 }             } else {                 genedEmail = null;             }             try {                 expiration = Long.parseLong(values[2]);             } catch (Exception _ex) {                 expiration = 0L;             }         }         return new ClientKey(type, genedEmail, expiration);     }     public boolean isCloseToExpiring() {         return false;     }     public boolean isValid() {         return true;     }     public boolean isCloseToMatching() {         return false;     }     public boolean isExpired() {         return false;     }     public String getEmail() {        //把此处的Email修改为你自己的Email地址         return "heimazhao@gmail.com";     }     public Calendar getExpiration() {         Calendar expirationCal = Calendar.getInstance(GMT);           //把此处的时间修改为授权到期时间         expirationCal.set(2010, 9, 9);         return expirationCal;     }     public boolean isTrial() {         return false;     }     public boolean isPro() {         return true;     }     public boolean shouldProPluginsRun() {         return true;     }     public static String trimEncryptedLicense(String encrypted) {      String newEncrypted = encrypted;      newEncrypted = newEncrypted.trim();     newEncrypted = newEncrypted.replaceAll("--begin-aptana-license--", "");      newEncrypted = newEncrypted.replaceAll("--end-aptana-license--", "");      newEncrypted = newEncrypted.replaceAll("/s+", "");     return newEncrypted; } }

转载于:https://www.cnblogs.com/feima-lxl/archive/2008/10/01/1302967.html

相关资源:数据结构—成绩单生成器

最新回复(0)