欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java防反编译最简单的技巧分享

程序员文章站 2024-03-31 12:55:04
前言 本文主要跟大家介绍了关于java防反编译的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 示例代码: 源码使用try-catch代码...

前言

本文主要跟大家介绍了关于java防反编译的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

示例代码:

源码使用try-catch代码包装下,如下:

public class compileforbid {

  public static void main(string[] args) {
    try {
      system.out.println("-------");
      //防止反编译的处理
      if (654789 == new random().nextint()) {
        throw new exception("fewt43");
      }
    } catch (exception ex) {
      ex.printstacktrace();
    } finally {
      try {
        //防止反编译的处理
        if (654789 == new random().nextint()) {
          throw new exception("fewt43");
        }
      } catch (exception ex) {
        system.out.print(ex);
      }
    }
  }
}

使用 jd 反编译工具翻遍后的效果,别的反编译可能会反编译出来,效果不是很好,但是简单实用

public class compileforbid
{
 // error //
 public static void main(java.lang.string[] args)
 {
  // byte code:
  //  0: getstatic 16  java/lang/system:out  ljava/io/printstream;
  //  3: ldc 22
  //  5: invokevirtual 24  java/io/printstream:println (ljava/lang/string;)v
  //  8: ldc 30
  //  10: new 31 java/util/random
  //  13: dup
  //  14: invokespecial 33  java/util/random:<init> ()v
  //  17: invokevirtual 34  java/util/random:nextint  ()i
  //  20: if_icmpne +90 -> 110
  //  23: new 38 java/lang/exception
  //  26: dup
  //  27: ldc 40
  //  29: invokespecial 42  java/lang/exception:<init> (ljava/lang/string;)v
  //  32: athrow
  //  33: astore_1
  //  34: aload_1
  //  35: invokevirtual 44  java/lang/exception:printstacktrace ()v
  //  38: ldc 30
  //  40: new 31 java/util/random
  //  43: dup
  //  44: invokespecial 33  java/util/random:<init> ()v
  //  47: invokevirtual 34  java/util/random:nextint  ()i
  //  50: if_icmpne +93 -> 143
  //  53: new 38 java/lang/exception
  //  56: dup
  //  57: ldc 40
  //  59: invokespecial 42  java/lang/exception:<init> (ljava/lang/string;)v
  //  62: athrow
  //  63: astore_3
  //  64: getstatic 16  java/lang/system:out  ljava/io/printstream;
  //  67: aload_3
  //  68: invokevirtual 47  java/io/printstream:print  (ljava/lang/object;)v
  //  71: goto +72 -> 143
  //  74: astore_2
  //  75: ldc 30
  //  77: new 31 java/util/random
  //  80: dup
  //  81: invokespecial 33  java/util/random:<init> ()v
  //  84: invokevirtual 34  java/util/random:nextint  ()i
  //  87: if_icmpne +21 -> 108
  //  90: new 38 java/lang/exception
  //  93: dup
  //  94: ldc 40
  //  96: invokespecial 42  java/lang/exception:<init> (ljava/lang/string;)v
  //  99: athrow
  //  100: astore_3
  //  101: getstatic 16 java/lang/system:out  ljava/io/printstream;
  //  104: aload_3
  //  105: invokevirtual 47 java/io/printstream:print  (ljava/lang/object;)v
  //  108: aload_2
  //  109: athrow
  //  110: ldc 30
  //  112: new 31  java/util/random
  //  115: dup
  //  116: invokespecial 33 java/util/random:<init> ()v
  //  119: invokevirtual 34 java/util/random:nextint  ()i
  //  122: if_icmpne +21 -> 143
  //  125: new 38  java/lang/exception
  //  128: dup
  //  129: ldc 40
  //  131: invokespecial 42 java/lang/exception:<init> (ljava/lang/string;)v
  //  134: athrow
  //  135: astore_3
  //  136: getstatic 16 java/lang/system:out  ljava/io/printstream;
  //  139: aload_3
  //  140: invokevirtual 47 java/io/printstream:print  (ljava/lang/object;)v
  //  143: return
  //
  // exception table:
  //  from  to target type
  //  0 33 33 java/lang/exception
  //  38 63 63 java/lang/exception
  //  0 38 74 finally
  //  75 100 100 java/lang/exception
  //  110  135 135 java/lang/exception
 }
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。