java jar防止反编译_防止Jar包被反编译

java jar防止反编译_防止Jar包被反编译方法就是,向Jar注入无效代码(不合法的,或者根本不是代码的字符串)。那么无效的代码又怎么能正确运行呢?答案就是,你要保证你的代码永远不会执行到那一步。我作一个简单的例子说明:我们建立一个项目:packagecom.TestJar;publicclassMain{publicstaticvoidmain(String[]args){System.out.println(Info.g…

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

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

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

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

我们建立一个项目:

e162f708a0026a3639041638cf41f319.png

package com.TestJar;

public class Main {

public static void main(String[] args){

System.out.println(Info.getMessage());

}

}

package com.TestJar;

public class Info {

public static String getMessage(){

return “Hello World!”;

}

private class Invalid{

}

}

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

然后我们将Info类输出Jar

9a549fb6d7c98ed84865b413bd026d5e.png

现在项目改成这样:

6b671f6bbe5e208698d43883021f40c8.png

运行结果仍然是 Hello World!

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

9d8b9847307a6a50089e2f095ae106c3.png

反编译看得清清楚楚。

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

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

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

打开这个Invalid内部类

3545c13f08ce56e6a595b477d42e8609.png

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

f5c132b2aac1d4323d5df6c48ca4bebf.png

然后保存

8586f01e350e2d610a4b987d0b075593.png

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

5aa206282428f2f937d58b4385d71159.png

再用jd-gui打开Info.jar

c8d20db1dc411589a8567f71198a963e.png

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

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

今天的文章java jar防止反编译_防止Jar包被反编译分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/11947.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注