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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ubuntu下vscode的使用教程_vscode连接ubuntu虚拟机

    ubuntu下vscode的使用教程_vscode连接ubuntu虚拟机1、安装ffmpegwgethttps://ffmpeg.org/releases/ffmpeg-4.1.tar.bz2tar-xjvfffmpeg-4.1.tar.bz2./configure–prefix=/usr/local/ffmpeg–enable-gpl–enable-version3–enable-nonfree–enable-postproc–enable-pthreads–enable-libfdk-aac–enable-libmp3lame

    2022年9月24日
    5
  • springboot+maven 项目 打jar包之后部署并启动方式「建议收藏」

    springboot+maven 项目 打jar包之后部署并启动方式「建议收藏」1、不管如何先clean下清掉之前的,命令:mvnclean。2、然后利用mvnpackage-DskipTests打出jar包。3、利用工具将jar包上传到linux服务器上面对应的位置。4、之前如果部署过的话先用命令ps-ef|grepjava看下进程,然后再利用kill-9把这个进程干掉。5、最后在利用命令nohupjava-jar…

    2022年6月19日
    40
  • 超视网络视频中间件:H5视频API接口简介

    超视网络视频中间件:H5视频API接口简介超视网络视频中间件H5视频调用接口具有全兼容、全平台支持、纯WEB、免插件、低延时、安全等功能特点,为安防视频播放提供最稳定、可靠、便捷的解决方案。

    2022年10月3日
    3
  • php递归算法经典实例_汉诺塔问题递归算法c语言

    php递归算法经典实例_汉诺塔问题递归算法c语言利用PHP实现汉诺塔汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。简而言之,有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大…

    2022年8月11日
    9
  • 视频讲解数学题目的软件哪个好_leetcode简单题

    视频讲解数学题目的软件哪个好_leetcode简单题终于将LeetCode的大部分题刷完了,真是漫长的第一遍啊,估计很多题都忘的差不多了,这次开个题目汇总贴,并附上每道题目的解题连接,方便之后查阅吧~博主还制作了一款网页版APP,方便大家进行查阅,

    2022年8月6日
    6
  • quartz定时任务使用_netty定时调度

    quartz定时任务使用_netty定时调度定时任务调度工具之Quartz(一)一、Quartz介绍OpenSymphony提供的强大的开源任务调度框架;官网:http://www.quartz-scheduler.org/纯Java实

    2022年8月6日
    3

发表回复

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

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