Java破解的新思路

前几天在网上看到有一个xml编辑的插件,做的挺好。但是pro版本要注册。下载了一个用着不错,功能挺多。最重要的是可以在Eclipse中使用。我现在连QQ都在Eclipse中使用了。

决定破解一下。找到了LicenseDialog,折腾了半天知道了使用的是RSA算法。昨晚在网上看到说超过1024bit,几乎就没有了破解的可能。决定放弃。找找别的办法。

BaseEditor.class中有一段
        if(fPro && Config.LITE)
        {
            final Display display = XMLPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getShell().getDisplay();
            final BaseEditor editor = this;
            Thread thread = new Thread(new Runnable() {

                public void run()
                {
                    synchronized(this)
                    {
                        try
                        {
                            wait(1000L);
                        }
                        catch(InterruptedException _ex) { }
                    }
                    display.asyncExec(editor. new Runnable() {

                        public void run()
                        {
                            OkDialog okdialog = new OkDialog("License Reminder", "Sorry, this feature requires a PRO license.");
                            okdialog.open();
                            VersionAction.promptForLicense();
                            IWorkbenchPage iworkbenchpage = XMLPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage();
                            iworkbenchpage.closeEditor(editor, false);
                        }


// JavaClassFileOutputException: Invalid index accessing method local variables table of <init>
                    });
                }

            });
            thread.start();

fPro肯定是true了,Config.LITE不能让他是true.看看Config怎么写的。

package com.objfac.xmleditor;

import java.lang.reflect.Field;
import java.util.Iterator;
import java.util.LinkedList;

// Referenced classes of package com.objfac.xmleditor:
//            XMLPlugin

public class Config
{
    /* member class not found */
    class ConfigListener {}


    public static final String VERSION = "2.0.11";
    public static final String DELTA = "0";
    public static final String eclipse = "e3.0M9";
    public static final String SKU = "xp2.0.11M9";
    public static boolean LITE = false;
    public static final boolean FROZEN = false;
    public static final boolean BETA = false;
    public static final boolean SCHEMA_POOL = true;
    public static final boolean DEBUG_DEPENDENCY_MANAGER = false;
    private static LinkedList listeners;

    public Config()
    {
    }

    public static void set(int i)
    {
        try
        {
            Field field = com.objfac.xmleditor.Config.class.getDeclaredField("LITE");
            field.set(null, i < 1 ? ((Object) (Boolean.FALSE)) : ((Object) (Boolean.TRUE)));
            notifyListeners();
        }
        catch(Exception exception)
        {
            XMLPlugin.log(exception);
        }
    }

    public static void add(ConfigListener configlistener)
    {
        if(listeners == null)
            listeners = new LinkedList();
        listeners.add(configlistener);
    }

    private static void notifyListeners()
    {
        if(listeners == null)
            return;
        for(Iterator iterator = listeners.iterator(); iterator.hasNext();)
            try
            {
                ConfigListener configlistener = (ConfigListener)iterator.next();
                configlistener.configChanged();
            }
            catch(Exception exception)
            {
                XMLPlugin.log(exception);
            }

    }

}
先将public static boolean LITE = true
改为public static boolean LITE = false

然后field.set(null, i < 1 ? ((Object) (Boolean.FALSE)) : ((Object) (Boolean.TRUE)));
改为field.set(null, i < 1 ? ((Object) (Boolean.FALSE)) : ((Object) (Boolean.FALSE)));

启动Eclipse,所有的限制都去掉了。

唉,看来java软件保护真是个问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Java中实现多线程可以按照以下思路框架进行: 1. 创建线程类:首先需要创建一个继承自Thread类或者实现Runnable接口的线程类。这个类将作为线程的执行体,负责定义线程要执行的任务。 2. 实例化线程对象:创建线程类的实例,即线程对象。 3. 调用start方法启动线程:通过调用线程对象的start()方法来启动线程。start()方法会在后台启动一个新的线程,并调用线程类中的run()方法。 4. 定义run方法:在线程类中重写run()方法,定义线程要执行的任务。run()方法中的代码将会在新的线程中并行执行。 5. 控制线程执行顺序:如果需要控制多个线程的执行顺序,可以使用Thread类中的join()方法来等待其他线程执行完毕,或者使用synchronized关键字来实现线程间的同步。 6. 线程安全:如果多个线程需要同时访问共享资源,需要考虑线程安全性。可以使用synchronized关键字或者Lock对象来保证共享资源的同步访问。 7. 线程通信:如果多个线程需要进行通信,可以使用wait()、notify()和notifyAll()等方法来实现线程间的协作和通信。 8. 线程的生命周期管理:了解Java中线程的生命周期,包括新建、就绪、运行、阻塞和死亡等状态,可以更好地管理和控制线程的执行。 以上是一个基本的多线程思路框架,根据具体需求可以进行相应的调整和扩展。在实际开发中,还可以使用线程池、Callable和Future等技术来更好地管理和控制多线程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值