一 破解准备工作
1.1 下载反编译工具jad
相关文件下载地址在Linux公社的1号FTP服务器里,下载地址:
FTP地址:ftp://www.linuxidc.com
用户名:www.linuxidc.com
密码:www.muu.cc
在 2011年LinuxIDC.com\8月\手动破解MyEclipse 9. 0 for Linux
下载方法见这里 http://www.linuxidc.net/thread-1187-1-1.html
这个jad是静态的,解压就可以使用。非常方便。
1.2 找到需要修改的类
在桌面新建一个tmp文件夹,创建脚本
[www.linuxidc.com@linuxidc ~]$ mkdir tmp
将相关文件拷贝到tmp目录下
[www.linuxidc.com@linuxidc tmp]$ ls
com.genuitec.eclipse.core_9.0.0.me201103181703.jar
注意:我安装的是myeclise 9.0的插件版
执行脚本
[www.linuxidc.com@linuxidc tmp]$ unzip com.genuitec.eclipse.core_9.0.0.me201103181703.jar -d crack
可以看到以下文件
[www.linuxidc.com@linuxidc tmp]$ ls crack/
about.blue.mappings com lib plugin.properties
about.html icons license.html plugin.xml
about.mappings images META-INF preferences.ini
1.3 反编译相关类
[www.linuxidc.com@linuxidc crack]$ jad -o -r -sjava com/genuitec/eclipse/core/ActivationValidator.class
Parsing com/genuitec/eclipse/core/ActivationValidator.class…The class file version is 49.0 (only 45.3, 46.0 and 47.0 are supported)
Generating com/genuitec/eclipse/core/ActivationValidator.java
二 破解文件
2.1 通过上面的反编译,我们可以知道反编译后的文件在路径com/genuitec/eclipse/core/ActivationValidator.java
将ActivationValidator.java中的文件替换为以下内容
// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: packimports(3)
package com.genuitec.eclipse.core;
import com.genuitec.eclipse.core.activation.ActivationCode;
import com.genuitec.eclipse.core.activation.InvalidSystemDataException;
import com.genuitec.eclipse.core.activation.SystemIdFactory;
import com.genuitec.eclipse.core.util.PlatformUtil;
import com.genuitec.eclipse.core.util.StatusInfo;
import org.eclipse.core.runtime.IStatus;
public class ActivationValidator
{
public ActivationValidator(String s, String s1)
{
_fld0101 = s1;
if(!PlatformUtil.isNullOrEmpty(s))
try
{
_fld0104 = ActivationCode.fromCode(s);
}
catch(InvalidSystemDataException _ex)
{
_fld0103 = true;
}
else
_fld0103 = true;
_mth0101();
}
public ActivationValidator(ActivationCode activationcode, String s)
{
_fld0101 = s;
_fld0104 = activationcode;
_mth0101();
}
private void _mth0101()
{
if(_fld0104 == null)
_fld0103 = true;
if(!isDecodeFailed())
{
_fld0102 = _fld0104.getLicenseCode().equals(_fld0101);
_fld0105 = SystemIdFactory.matches(_fld0104.getSystemId());
}
}
public ActivationCode getActivationCode()
{
return _fld0104;
}
public boolean isDecodeFailed()
{
return false;
}
public boolean isExpired()
{
return false;
}
public boolean isValidForLicense()
{
return true;
}
public boolean isValidForSystemId()
{
return true;
}
public boolean isValid()
{
return true;
}
public IStatus validate()
{
return PlatformUtil.getOKStatus();
}
public static final int ACT_VALIDATE_DATA_ERROR = 101;
public static final int ACT_VALIDATE_LICENSEMATCH_ERROR = 102;
public static final int ACT_VALIDATE_SYSTEMID_ERROR = 103;
public static final int ACT_VALIDATE_EXPIRED_ERROR = 104;
private String _fld0101;
private ActivationCode _fld0104;
private boolean _fld0103;
private boolean _fld0102;
private boolean _fld0105;
}
上面方法将ActivationValidator的校验过程直接短路,
2.2 编译java文件,生成ActivationValidator.class
设置CLASSPATH
批量设置CLASSPATH的方法
export ECLASSPATH=`find ~/tools/eclipse/plugins/ -name com.genuitec.eclipse.core*|xargs|sed “s/ /:/g”`
你可以在编译的时候进行参数设置,设置方法如下
javac -cp ~/tools/eclipse/plugins/org.eclipse.equinox.common_3.6.0.v20100503.jar:~/tools/eclipse/plugins/ com.genuitec.eclipse.core_9.0.0.me201103181703.jar:~/tools/eclipse/plugins/com.genuitec.eclipse.core.common.platform_9.0.0.me201102091112.jar com/genuitec/eclipse/core/ActivationValidator.java
也可以直接在eclipse中把相应的包导入进去即可。
编译后,就可以在原来的目录下面看见相关的文件了。
[www.linuxidc.com@linuxidc crack]$ ls com/genuitec/eclipse/core/ActivationValidator.*
com/genuitec/eclipse/core/ActivationValidator.class
com/genuitec/eclipse/core/ActivationValidator.java
然后把这个文件打包成jar包
[www.linuxidc.com@linuxidc ~]$ jar cvf com.genuitec.eclipse.core_9.0.0.me201103181703.jar -C ~/tmp/crack/ .
将打包好的文件放到eclipse的plugins所目录下
三 准备myeclipse配置文件
修改的地方有两个
MyEclipse9会从属性文件中读取激活码,虽然我们对校验过程进行短路,但是程序有个是否为空的判断,因此,我们需要在属性文件中配置一下激活码,激活码的值随便填:)
以下是读取属性文件的代码片段,由此可以看到激活码的属性名称为:ACTIVATION_KEYViperCore.getDefault().log(str1);
localObject1 = ViperCore.getDefault().getPluginPreferences();
((Preferences)localObject1).setValue(“LICENSEE”, ?);
((Preferences)localObject1).setValue(“LICENSE_KEY”, ā);
((Preferences)localObject1).setValue(“ACTIVATION_KEY”, ?);
ViperCore.getDefault().savePluginPreferences();
因此我们需要在属性文件中添加激活码的属性配置:
配置文件位置在你的当前用户目录 ~/.myeclipse.properties,并且默认为隐藏状态。
##MyEclipse license file
#Sat Jul 30 10:02:15 CST 2011
LICENSE_KEY=pLR8ZC-855444-68678656297401489
LICENSEE=cloudcube.net
ACTIVATION_KEY=c7b12e72e28df89e8acff15a6003928c4039f930aff5323f584bbccc3ccdcd9a347877e26b2965c17eae77d7f3550ca54686e7ce887f5afa78a693ec03b40762118a8739c9d7bd6acb40d27a68d06dd2fafc7813fba8230b79670886070e1b96c710b7c1de6d032d0fbfada43e8976db482403327bb61a715aadb338edf9b968
这里的激活码随便配置,只是为了防止读取为空而已
再有就是,我在源程序中看到有判断长度是否小于35的代码段,所以就把激活码设置成了35位,想必正确的激活码应该也是35位吧?本人没有验证 ,我这里是从我的windows下找到的,然后拷贝过来。
为了程序正常启动,我们需要避免MyEclipse进行完整性校验,否则,MyEclipse自检程序发现文件被改动时,将导致启动失败。由于本人没有找到也懒得去找完整性校验的代码类,所以直接修改配置文件,取消启动时校验。
配置文件位于安装目录,在文件中添加如下两行:
-startup
plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar
–launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.2.R36x_v20101019_1345
-showsplash
org.eclipse.platform
–launcher.XXMaxPermSize
256m
–launcher.defaultAction
openFile
-vmargs
-Xms40m
-Xmx384m
-Dgenuitec.honorDevMode=true
-Dosgi.dev=true
-Dorg.eclipse.swt.browser.UseWebKitGTK=true
-Dorg.eclipse.swt.browser.XULRunnerPath==/usr/lib/xulrunner-2.0/
~
~
~
~
~
~
“~/tools/eclipse/eclipse.ini” 17L, 448C
这一切准备就绪后了,我们在启动以下Eclipse,看启动成功了不?