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

 更新时间:2017年09月01日 09:16:14   作者:jijs  
这篇文章主要给大家分享了关于java防反编译最简单的技巧,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。

前言

本文主要跟大家介绍了关于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
 }
}

总结

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

相关文章

  • IDEA提示 add *** to custom tags问题及解决

    IDEA提示 add *** to custom tags问题及解决

    文章介绍了如何在文档注释中添加自定义注解(@xxx),并提供了添加和删除注解的方法,总结了个人经验,希望对大家有所帮助
    2024-12-12
  • Java多线程编程之ThreadLocal详解

    Java多线程编程之ThreadLocal详解

    这篇文章主要介绍了Java多线程编程之ThreadLocal详解,ThreadLocal是Java中的一个线程局部变量,该变量在多线程并发执行时,为每个线程都提供了一个独立的副本,简单来说,ThreadLocal提供了一种在多线程环境中,使每个线程绑定自己独立的变量的方法,需要的朋友可以参考下
    2023-09-09
  • 让Java程序自动重启的实现方法(推荐)

    让Java程序自动重启的实现方法(推荐)

    下面小编就为大家带来一篇让Java程序自动重启的实现方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Spring+SpringMVC+Hibernate项目环境搭建的步骤(图文)

    Spring+SpringMVC+Hibernate项目环境搭建的步骤(图文)

    这篇文章主要介绍了Spring+SpringMVC+Hibernate项目环境搭建的步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • Java关于数组的介绍与使用

    Java关于数组的介绍与使用

    数组(Array)是有序的元素序列。 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量
    2021-09-09
  • 详解Spring Bean 之间的特殊关系

    详解Spring Bean 之间的特殊关系

    在 Spring 容器中,两个 Bean 之间除了通过 <ref> 建立依赖关系外,还存在着一些特殊关系。这篇文章给大家想想介绍了Spring Bean 之间的特殊关系,非常不错,具有参考借鉴价值,需要的朋友参考下
    2018-05-05
  • 一文带你深入了解Guava的缓存机制

    一文带你深入了解Guava的缓存机制

    缓存在现代编程中的作用非常大,它能提高应用性能,减少数据库压力,简直就是性能优化的利器,本文主要来和大家聊聊Google Guava的缓存机制,感兴趣的小伙伴可以了解下
    2023-12-12
  • 使用 Spring AI + Ollama 构建生成式 AI 应用的方法

    使用 Spring AI + Ollama 构建生成式 AI 应用的方法

    通过集成SpringBoot和Ollama,本文详细介绍了如何构建生成式AI应用,首先,介绍了AI大模型服务的两种实现方式,选择使用ollama进行部署,随后,通过SpringBoot+SpringAI来实现应用构建,本文为开发者提供了一个实用的指南,帮助他们快速入门生成式AI应用的开发
    2024-11-11
  • SpringBoot入门之集成JSP的示例代码

    SpringBoot入门之集成JSP的示例代码

    这篇文章主要介绍了SpringBoot入门之集成JSP的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Spring Cloud 如何保证微服务内安全

    Spring Cloud 如何保证微服务内安全

    这篇文章主要介绍了Spring Cloud 如何保证微服务内安全的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07

最新评论