利用“Java同包同名类执行顺序”取消Java 网站应用程序Licence验证

如果是在tomcat里运行,lib目录下一大堆的JAR包,不同的JAR包里可能会有相同的包名类名,JRE按照JAR名字的字母顺序加载JAR文件,同名类如果已加载,则后面的同名类会忽略。

公司购买的一款Java web 应用程序 ,当然是有授权码的,虽然买的全部授权,没有年限限制,但是是按年授权,包括测试环境也是一样,挺麻烦的,反编译看了下代码,找到了Licence验证机制,由于采用的是RSA加密算法,验证是是用私钥生成的签名和公钥验证,这个私钥是不可能知道的,因此即使知道了License文件的生成规则,也是无法仿造Licence文件的,但是利用上面所讲的同包同名执行顺序的特性,可以仿照写一同包同名的验证方法, 这样就可以使程序在运行时不执行原来的验证方法,而是执行自已写的验证方法,这样就能达到不验证Licence的效果。

 

2019/09/16 Update

最近学习了.Net反编译发现可以直接修改dll,于是就想在java中,是否也可以直接修改jar,于是找了几个贴子,https://blog.csdn.net/u010505881/article/details/80547856

按这上面的操作,发现也是可以的,将修改后的class覆盖以前的class一样可以达到想要的效果。

posted @ 2018-12-10 08:55  大海胸懷  阅读(669)  评论(0编辑  收藏  举报