jar包如何防止反编译_jar包可以反编译成源码吗

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

(待验证)

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

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

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

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

我们建立一个项目:

jar包如何防止反编译_jar包可以反编译成源码吗

package com.TestJar;
 
public class Main { 
   
 
	public static void main(String[] args){ 
   
		System.out.println(Info.getMessage());
	}
}

Jetbrains全家桶1年46,售后保障稳定

package com.TestJar;
 
public class Info { 
   
 
	public static String getMessage(){ 
   
		return "Hello World!";
	}
	
	private class Invalid{ 
   
		
	}
}

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

然后我们将Info类输出Jar

jar包如何防止反编译_jar包可以反编译成源码吗

现在项目改成这样:

jar包如何防止反编译_jar包可以反编译成源码吗

运行结果仍然是 Hello World!

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

jar包如何防止反编译_jar包可以反编译成源码吗

反编译看得清清楚楚。

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

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

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

打开这个Invalid内部类

jar包如何防止反编译_jar包可以反编译成源码吗

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

jar包如何防止反编译_jar包可以反编译成源码吗

然后保存

jar包如何防止反编译_jar包可以反编译成源码吗

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

jar包如何防止反编译_jar包可以反编译成源码吗

再用jd-gui打开Info.jar

jar包如何防止反编译_jar包可以反编译成源码吗

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/230865.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • gmm回归stata命令_gmm模型stata命令

    gmm回归stata命令_gmm模型stata命令一、解释变量内生性检验首先检验解释变量内生性(解释变量内生性的Hausman检验:使用工具变量法的前提是存在内生解释变量。Hausman检验的原假设为:所有解释变量均为外生变量,如果拒绝,则认为存在内生解释变量,要用IV;反之,如果接受,则认为不存在内生解释变量,应该使用OLS。regldilofdiestimatesstoreolsxtivregldi(lofdi=l.lofd…

    2022年10月8日
    0
  • java httprequest选项_HTTPRequest类

    java httprequest选项_HTTPRequest类原标题:HTTPRequest类HTTPRequest类java.lang.Objectcom.google.appengine.api.urlfetch.HTTPRequestpublicclassHTTPRequest扩展java.lang.ObjectHTTPRequest封装通过URLFetchService进行的单个HTTP请求。构造函数概述HTTPRequest(ja…

    2022年6月29日
    18
  • linux下nginx重启命令

    linux下nginx重启命令linux下的nginx重启命令常见以下3种:systemctlrestartnginxservicenginxrestart/usr/sbin/nginx-sreload

    2022年6月19日
    51
  • java xor_java 简单xor加密[通俗易懂]

    java xor_java 简单xor加密[通俗易懂]java端加密文件packageenc;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;publicclassEnc{publicvoidencryptFile(){FileInputStreamin=null;FileOutputStreamou…

    2022年7月16日
    15
  • maven学习系列——(六)maven搭建私服

    这一篇学习和整理私服的搭建 私服的使用在公司还是比较多的 ,会整理在window上搭建私服和linux上搭建私服!

    2022年2月25日
    38
  • maven mvn 命令行 编译打包

    maven mvn 命令行 编译打包*一行命令#切换到项目根目录mvnclean&&mvncompile&&mvnpackage&&starttarget*配置好jdkmaven教程*下载安装mavenhttp://maven.apache.org/download.cgiapache-maven-3.3.3-bin….

    2022年6月7日
    30

发表回复

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

关注全栈程序员社区公众号