红联Linux门户
Linux帮助

手动破解MyEclipse 9. 0 for Linux

发布时间:2014-12-18 09:55:42来源:linux网站作者:davil_dev

一 破解准备工作

1.1 下载反编译工具jad

这个jad是静态的,解压就可以使用。非常方便。

1.2 找到需要修改的类

在桌面新建一个tmp文件夹,创建脚本

[www@linux ~]$ mkdir tmp

将相关文件拷贝到tmp目录下

[www@linux tmp]$ ls
com.genuitec.eclipse.core_9.0.0.me201103181703.jar

注意:我安装的是myeclise 9.0的插件版

执行脚本

[www@linux tmp]$ unzip com.genuitec.eclipse.core_9.0.0.me201103181703.jar  -d crack

可以看到以下文件

[www@linux 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@linux 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@linux crack]$ ls com/genuitec/eclipse/core/ActivationValidator.*
com/genuitec/eclipse/core/ActivationValidator.class
com/genuitec/eclipse/core/ActivationValidator.java

然后把这个文件打包成jar包

[www@linux ~]$ jar cvf com.genuitec.eclipse.core_9.0.0.me201103181703.jar -C ~/tmp/crack/ .

将打包好的文件放到eclipse的plugins所目录下


三 准备myeclipse配置文件

修改的地方有两个

MyEclipse9会从属性文件中读取激活码,虽然我们对校验过程进行短路,但是程序有个是否为空的判断,因此,我们需要在属性文件中配置一下激活码,激活码的值随便填:)
以下是读取属性文件的代码片段,由此可以看到激活码的属性名称为:ACTIVATION_KEY
ViperCore.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=?
这里的激活码随便配置,只是为了防止读取为空而已
再有就是,我在源程序中看到有判断长度是否小于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,看启动成功了不?