zoukankan      html  css  js  c++  java
  • 利用“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一样可以达到想要的效果。

  • 相关阅读:
    1.8 接口中的静态方法
    1.7 默认方法
    1.6 变量作用域
    汉字转拼音
    1.5 构造器引用
    1.4 方法引用
    循环中冲不掉外部定义的变量
    getBoundingClientRect
    Angular1.0 在Directive中调用Controller的方法
    horizontalDragMaxWidth:0;就没有水平滚动条了
  • 原文地址:https://www.cnblogs.com/dimg/p/10094695.html
Copyright © 2011-2022 走看看