使用javassist进行java类的实现方法修改

     前段时间在做一个关心软件授权方面的研究,即给一个软件进行授权管理,其中就涉及到如何创建license,并利用license来保护我们的软件。
    这其中最主要的问题,即是如何保护真正的授权部分代码了。即将真正进行授权访问的代码给保护起来,并不让软件使用人通过某种方法来进行软件的破解或者盗用。一般来说,破解软件最简单的方法即是修改授权部分代码的实现,让授权部分验证始终返回true。如果想办法不让使用者查看最终的授权部分代码,那么则只能通过其它方法来进行破解了。
    那么,我们可以通过一种手段来在程序内部来修改授权部分的实现,使真实的授权部分隐藏在其它代码部分,而可视的授权代码并不参与实际的授权授权,这样的话,对于破解者来说,修改表向的代码实现并不能真正修改代码实现,因为真实的实现已经通过其它代码将原始实现替换掉了。
    以下是一种修改的示意图:
       
    即在调用授权代码之前将授权原代码进行修改,然后调用授权代码时即调用已经修改后的授权代码,而真实的授权代码是查看不了的(通过某种方式注入),这样即达到一种授权方式的隐藏。

继续阅读“使用javassist进行java类的实现方法修改”