zoukankan      html  css  js  c++  java
  • 防止Jar包被反编译

    方法就是,向Jar注入无效代码(不合法的,或者根本不是代码的字符串)。

    那么无效的代码又怎么能正确运行呢?

    答案就是,你要保证你的代码永远不会执行到那一步。

    我作一个简单的例子说明:

    我们建立一个项目:

    [java] view plain copy
     
     
     
     
    1. package com.TestJar;  
    2.   
    3. public class Main {  
    4.   
    5.     public static void main(String[] args){  
    6.         System.out.println(Info.getMessage());  
    7.     }  
    8. }  

    [java] view plain copy
     
     
     
     
    1. package com.TestJar;  
    2.   
    3. public class Info {  
    4.   
    5.     public static String getMessage(){  
    6.         return "Hello World!";  
    7.     }  
    8.       
    9.     private class Invalid{  
    10.           
    11.     }  
    12. }  

    很简单,运行结果是 Hello World!


    然后我们将Info类输出Jar

    现在项目改成这样:

    运行结果仍然是 Hello World!

    我们用jd-gui反编译看看:

    反编译看得清清楚楚。

    我们的私有内部类Invalid在程序中是没有用。

    现在,我们向Invalid类注入无效代码。

    注入方法很简单,用WinRar之类的解压软件打开,修改,然后保存就行了

    打开这个Invalid内部类

    我们将图中所选择的字符'd'删除

    然后保存

    刷新一下,程序仍然运行:Hello World!

    再用jd-gui打开Info.jar

    它反编译到那里就出错了。

    注意不能将这个方法运行用Android项目上,Android有另一套规则,它需要把Jar转换成dex的。

    原文:https://blog.csdn.net/u013938484/article/details/80399242

  • 相关阅读:
    腾讯云 Centos 配置 JDK & Tomcat & Mysql
    JNI编程新手入门:Java和C++的超简单交互
    关于正则表达式的一些实际应用
    CAJ 转化为PDF
    Latex 大括号后多行输出
    Latex 安装
    Neo4j使用操作
    pip 升级操作
    venue recommendation —— 应用场景/用户分类
    Recbole安装及使用
  • 原文地址:https://www.cnblogs.com/peachh/p/12269679.html
Copyright © 2011-2022 走看看