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

网友投稿 490 2023-04-10


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 staticNRGHILeOTf 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: ()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: NRGHILeOTf(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: ()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: (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: ()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: (Ljava/lang/String;)V

// 99: athrow

// 100: astore_3

/http:/// 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: ()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: (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

}

}

总结

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java中设置JAVA_HOME无效的解决方法
下一篇:怎么使用接口测试(接口测试怎么准备测试数据)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~